1(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ 2(function (global){(function (){ 3global.window.citrusAdTracker=require('@albertsons/emsm-tracking-js'); 4}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) 5},{"@albertsons/emsm-tracking-js":4}],2:[function(require,module,exports){ 6var env = require('./env.json'); 7let currentDomain=window.location.host; 8exports.config = function() { 9 let currentEnviorment = ''; 10 switch (true) { 11 case checkEnviorment("-local"): 12 currentEnviorment = "local"; 13 break; 14 case checkEnviorment("-preview"): 15 currentEnviorment = "preview"; 16 break; 17 case checkEnviorment("-dev1"): 18 currentEnviorment = "dev1"; 19 break; 20 case checkEnviorment("-qa1"): 21 currentEnviorment = "qa1"; 22 break; 23 case checkEnviorment("-dev2"): 24 currentEnviorment = "dev2"; 25 break; 26 case checkEnviorment("-qa2"): 27 currentEnviorment = "qa2"; 28 break; 29 case checkEnviorment("-dev3"): 30 currentEnviorment = "dev3"; 31 break; 32 case checkEnviorment("-qa3"): 33 currentEnviorment = "qa3"; 34 break; 35 case checkEnviorment("-stage"): 36 currentEnviorment = "stage"; 37 break; 38 case checkEnviorment("-beta"): 39 currentEnviorment = "beta"; 40 break; 41 case checkEnviorment("-prod"): 42 currentEnviorment = "prod"; 43 break; 44 default: 45 currentEnviorment = "prod"; 46 } 47 var node_env = currentEnviorment; 48 if (env[node_env] === undefined) { 49 console.log('Invalid node_env: '+`${node_env}`+' hence falling back to default node_env'); 50 return env['dev1']; 51 } 52 return env[node_env]; 53}; 54 55function checkEnviorment(envValue) { 56 return currentDomain.includes(envValue); 57 } 58 59},{"./env.json":3}],3:[function(require,module,exports){ 60module.exports={ 61"local":{ 62 "criteoUrl":"/abs/devpub/emsm/activity/v2/cr/", 63 "criteoPlacementUrl":"/abs/devpub/emsm/activity/v2/cr/rm", 64 "criteoUrl1":"/abs/devpub/emsm/activity/v2/onLoadBeacons", 65 "relevanceCriteoUrl":"/abs/devint/emsm/criteo/delivery/retailmedia", 66 "apimCriteoKey":"db2bab75e2f3468385c0ad90e51ea27b", 67 "apimCriteoOnloadKey":"9009d6ab570b4285a741de987353c5a7", 68 "apimRelevanceCriteoKey":"db2bab75e2f3468385c0ad90e51ea27b", 69 "apimKey":"ad03ec98c45b4e2a9819a0b302536431", 70 "teamId":"d5c7b782-44ee-433d-8f8f-8c1fd5453cbc", 71 "catalogId":"2c1cf4b5-81f9-4b33-aedf-b989b41e0880" 72}, 73"preview":{ 74 "criteoUrl":"/abs/devpub/emsm/activity/v2/cr/", 75 "criteoPlacementUrl":"/abs/devpub/emsm/activity/v2/cr/rm", 76 "criteoUrl1":"/abs/devpub/emsm/activity/v2/onLoadBeacons", 77 "relevanceCriteoUrl":"/abs/devint/emsm/criteo/delivery/retailmedia", 78 "apimCriteoKey":"db2bab75e2f3468385c0ad90e51ea27b", 79 "apimCriteoOnloadKey":"9009d6ab570b4285a741de987353c5a7", 80 "apimRelevanceCriteoKey":"db2bab75e2f3468385c0ad90e51ea27b", 81 "apimKey":"ad03ec98c45b4e2a9819a0b302536431", 82 "teamId":"d5c7b782-44ee-433d-8f8f-8c1fd5453cbc", 83 "catalogId":"2c1cf4b5-81f9-4b33-aedf-b989b41e0880" 84}, 85"dev1":{ 86 "criteoUrl":"/abs/devpub/emsm/activity/v2/cr/", 87 "criteoPlacementUrl":"/abs/devpub/emsm/activity/v2/cr/rm", 88 "criteoUrl1":"/abs/devpub/emsm/activity/v2/onLoadBeacons", 89 "relevanceCriteoUrl":"/abs/devint/emsm/criteo/delivery/retailmedia", 90 "apimCriteoKey":"db2bab75e2f3468385c0ad90e51ea27b",
91 "apimCriteoOnloadKey":"9009d6ab570b4285a741de987353c5a7", 92 "apimRelevanceCriteoKey":"db2bab75e2f3468385c0ad90e51ea27b", 93 "apimKey":"ad03ec98c45b4e2a9819a0b302536431", 94 "teamId":"d5c7b782-44ee-433d-8f8f-8c1fd5453cbc", 95 "catalogId":"2c1cf4b5-81f9-4b33-aedf-b989b41e0880" 96}, 97"qa1":{ 98 "criteoUrl":"/abs/qapub/emsm/activity/v2/cr/", 99 "criteoPlacementUrl":"/abs/qapub/emsm/activity/v2/cr/rm", 100 "criteoUrl1":"/abs/qapub/emsm/activity/v2/onLoadBeacons", 101 "relevanceCriteoUrl":"/abs/qaint/emsm/criteo/delivery/retailmedia", 102 "apimCriteoKey":"0c806ea0a64e4a0e89b96e4b6792b091", 103 "apimCriteoOnloadKey":"921ef9e78eae4b38803b34f3e0d97a38", 104 "apimRelevanceCriteoKey":"0c806ea0a64e4a0e89b96e4b6792b091", 105 "apimKey":"093709eddc3948dc836d59e8ef9842a4", 106 "teamId":"d5c7b782-44ee-433d-8f8f-8c1fd5453cbc", 107 "catalogId":"2c1cf4b5-81f9-4b33-aedf-b989b41e0880" 108}, 109"dev2":{ 110 "criteoUrl":"/abs/devpub/emsm/activity/v2/cr/", 111 "criteoPlacementUrl":"/abs/devpub/emsm/activity/v2/cr/rm", 112 "criteoUrl1":"/abs/devpub/emsm/activity/v2/onLoadBeacons", 113 "relevanceCriteoUrl":"/abs/devint/emsm/criteo/delivery/retailmedia", 114 "apimCriteoKey":"db2bab75e2f3468385c0ad90e51ea27b", 115 "apimCriteoOnloadKey":"9009d6ab570b4285a741de987353c5a7", 116 "apimRelevanceCriteoKey":"db2bab75e2f3468385c0ad90e51ea27b", 117 "apimKey":"ad03ec98c45b4e2a9819a0b302536431", 118 "teamId":"d5c7b782-44ee-433d-8f8f-8c1fd5453cbc", 119 "catalogId":"2c1cf4b5-81f9-4b33-aedf-b989b41e0880" 120}, 121"qa2":{ 122 "criteoUrl":"/abs/acceptancepub/emsm/activity/v2/cr/", 123 "criteoPlacementUrl":"/abs/acceptancepub/emsm/activity/v2/cr/rm", 124 "criteoUrl1":"/abs/acceptancepub/emsm/activity/v2/onLoadBeacons", 125 "relevanceCriteoUrl":"/abs/acceptanceint/emsm/criteo/delivery/retailmedia", 126 "apimCriteoKey":"f9a2a3140a804cc79ac512c0fdad0f15", 127 "apimCriteoOnloadKey":"a65579ebe2704504aa7457486ca1b17e", 128 "apimRelevanceCriteoKey":"f9a2a3140a804cc79ac512c0fdad0f15", 129 "apimKey":"188bd142c3214a0da4291df005c7ee6b", 130 "teamId":"d5c7b782-44ee-433d-8f8f-8c1fd5453cbc", 131 "catalogId":"ce36d972-1a6a-4fcb-be40-a617bec755ff" 132}, 133"dev3":{ 134 "criteoUrl":"/abs/devpub/emsm/activity/v2/cr/", 135 "criteoPlacementUrl":"/abs/devpub/emsm/activity/v2/cr/rm", 136 "criteoUrl1":"/abs/devpub/emsm/activity/v2/onLoadBeacons", 137 "relevanceCriteoUrl":"/abs/devint/emsm/criteo/delivery/retailmedia", 138 "apimCriteoKey":"db2bab75e2f3468385c0ad90e51ea27b", 139 "apimCriteoOnloadKey":"db2bab75e2f3468385c0ad90e51ea27b", 140 "apimRelevanceCriteoKey":"db2bab75e2f3468385c0ad90e51ea27b", 141 "apimKey":"ad03ec98c45b4e2a9819a0b302536431", 142 "teamId":"d5c7b782-44ee-433d-8f8f-8c1fd5453cbc", 143 "catalogId":"2c1cf4b5-81f9-4b33-aedf-b989b41e0880" 144}, 145"qa3":{ 146 "criteoUrl":"/abs/perfpub/emsm/activity/v2/cr/", 147 "criteoPlacementUrl":"/abs/perfpub/emsm/activity/v2/cr/rm", 148 "criteoUrl1":"/abs/perfpub/emsm/activity/v2/onLoadBeacons", 149 "relevanceCriteoUrl":"/abs/perfint/emsm/criteo/delivery/retailmedia", 150 "apimCriteoKey":"9680166699654ea2b0efa59b48667d87", 151 "apimCriteoOnloadKey":"668c73925a6b41d6902b92992570ffd6", 152 "apimRelevanceCriteoKey":"9680166699654ea2b0efa59b48667d87", 153 "apimKey":"c4a643c057e94009b178da749d1b1612", 154 "teamId":"8c92d1d9-99f5-41b9-85c7-ec53f5e51ec0", 155 "catalogId":"9fb6b056-5324-49d4-8551-83c3375068ea" 156}, 157"stage":{ 158 "criteoUrl":"/abs/stagepub/emsm/activity/v2/cr/", 159 "criteoPlacementUrl":"/abs/stagepub/emsm/activity/v2/cr/rm", 160 "criteoUrl1":"/abs/stagepub/emsm/activity/v2/onLoadBeacons", 161 "relevanceCriteoUrl":"/abs/stageint/emsm/criteo/delivery/retailmedia", 162 "apimCriteoKey":"09b010c7b4fc4d4e895963d276d68f01", 163 "apimCriteoOnloadKey":"c2c4fc5de6c74d4cbd099279bfffda26", 164 "apimRelevanceCriteoKey":"09b010c7b4fc4d4e895963d276d68f01", 165 "apimKey":"4fa1d6d251ab41a4b02e892b3fdea9ab", 166 "teamId":"bcae55ad-87fb-42eb-ba44-650266a9bf46", 167 "catalogId":"ef0d7c5c-a721-4742-a6cf-e33e0e5e4298" 168}, 169"beta":{ 170 "criteoUrl":"/abs/pub/emsm/activity/v2/cr/", 171 "criteoPlacementUrl":"/abs/pub/emsm/activity/v2/cr/rm", 172 "criteoUrl1":"/abs/pub/emsm/activity/v2/onLoadBeacons", 173 "relevanceCriteoUrl":"/abs/int/emsm/criteo/delivery/retailmedia", 174 "apimCriteoKey":"8fc1b5c6056e44188fadc54c5f075286", 175 "apimCriteoOnloadKey":"f8fac5b8a447437daf482481c894b380", 176 "apimRelevanceCriteoKey":"8fc1b5c6056e44188fadc54c5f075286", 177 "apimKey":"073948c7ad414e0a82aa2ba5fd83720c", 178 "teamId":"bcae55ad-87fb-42eb-ba44-650266a9bf46", 179 "catalogId":"ef0d7c5c-a721-4742-a6cf-e33e0e5e4298" 180}, 181"prod":{ 182 "criteoUrl":"/abs/pub/emsm/activity/v2/cr/", 183 "criteoPlacementUrl":"/abs/pub/emsm/activity/v2/cr/rm", 184 "criteoUrl1":"/abs/pub/emsm/activity/v2/onLoadBeacons", 185 "relevanceCriteoUrl":"/abs/int/emsm/criteo/delivery/retailmedia", 186 "apimCriteoKey":"8fc1b5c6056e44188fadc54c5f075286", 187 "apimCriteoOnloadKey":"f8fac5b8a447437daf482481c894b380", 188 "apimRelevanceCriteoKey":"8fc1b5c6056e44188fadc54c5f075286", 189 "apimKey":"073948c7ad414e0a82aa2ba5fd83720c", 190 "teamId":"bcae55ad-87fb-42eb-ba44-650266a9bf46", 191 "catalogId":"e48bf190-d3c2-4b70-bde9-ab2b9a0488d8" 192} 193} 194 195},{}],4:[function(require,module,exports){ 196var XMLHttpRequest = require('xhr2'); 197var xhr = new XMLHttpRequest(); 198var common = require('./common') 199var config = common.config(); 200const criteoUrl=config.criteoUrl; 201const criteoPlacementUrl=config.criteoPlacementUrl; 202const criteoUrlOnload=config.criteoUrl1; 203const criteoApimKey = config.apimCriteoKey; 204const apimKey = config.apimKey; 205const criteoApimOnloadKey = config.apimCriteoOnloadKey; 206const criteoRelevanceUrl = config.relevanceCriteoUrl; 207const criteoRelevanceApimKey = config.apimRelevanceCriteoKey; 208var botFlag=false; 209module.exports = function postAdActivity(eventTracking, adEvent, uxContext, contextObject = {}) { 210 211 if(['AD_PLACEMENT_ONLOAD','AD_PLACEMENT_IMPRESSION','AD_PLACEMENT_CLICK'].includes(adEvent)){ 212 createPlacementCriteoRequest(eventTracking, adEvent, uxContext); 213 }else{ 214 createCriteoRequest(eventTracking, adEvent, uxContext); 215 } 216} 217// Initial Criteo Ads Tracking Function 218function createCriteoRequest(eventTrackingObject, adEvent, contextObject){ 219 var result = new Object(); 220 if (!criteoUrl || !criteoUrlOnload || !criteoRelevanceUrl) { 221 console.error('configuration settings not set for Criteo'); 222 } 223 //Checking if Bot Session is suspected and blocking the call 224 if(botFlag){ 225 result.success = false;
226 return result; 227 } 228 var criteoBeaconsObject=eventTrackingObject.beacons!==undefined?eventTrackingObject.beacons:''; 229 switch(adEvent) { 230 case 'AD_ONLOAD':{ 231 if(Array.isArray(eventTrackingObject)){ 232 let newEventTrackingObject = eventTrackingObject.filter(function (el) { 233 return el.vendorId!=='1' && el.beacons!==null && el.beacons!==undefined; 234 } 235 ); 236 const beaconsValue = Array.isArray(newEventTrackingObject) && newEventTrackingObject.length>0 ?newEventTrackingObject.map(beaconsArray =>replaceBeaconParam(beaconsArray.beacons.OnLoadBeacon,true)):''; 237 beaconsValue && postAdsTrackingCriteo(criteoUrlOnload, beaconsValue); 238 } 239 break; 240 } 241 // handling multiple beacons of ONLOAD 242 case 'AD_ONLOAD_EVENTS':{ 243 if(Array.isArray(eventTrackingObject) && eventTrackingObject.length > 0){ 244 eventTrackingObject 245 .filter(el => el.vendorId !== '1' && el.beacons?.OnLoadBeacon) 246 .forEach(item => { 247 createAdsTrackingCriteo(criteoPlacementUrl+'?', replaceBeaconParam(item.beacons.OnLoadBeacon, false, contextObject?.disableTracking).replace('rm?', '')); 248 }); 249 } 250 break; 251 } 252 // handling placement beacons ONLOAD 253 case 'AD_ONLOAD_PLACEMENT':{ 254 const beaconsValue = contextObject.placementOnLoadBeacons; 255 beaconsValue && createAdsTrackingCriteo(criteoPlacementUrl+'?',replaceBeaconParam(beaconsValue,false, contextObject?.disableTracking).replace('rm?', '')); 256 break; 257 } 258 case 'AD_ONLOAD_PLACEMENT_TOP':{ 259 const beaconsValue = contextObject.placementOnLoadBeacons_top; 260 beaconsValue && createAdsTrackingCriteo(criteoPlacementUrl+'?',replaceBeaconParam(beaconsValue, false, contextObject?.disableTracking).replace('rm?', '')); 261 break; 262 } 263 case 'AD_ONLOAD_PLACEMENT_BOTTOM':{ 264 const beaconsValue = contextObject.placementOnLoadBeacons_bottom; 265 beaconsValue && createAdsTrackingCriteo(criteoPlacementUrl+'?',replaceBeaconParam(beaconsValue, false, contextObject?.disableTracking).replace('rm?', '')); 266 break; 267 } 268 case 'AD_IMPRESSION':{ 269 const beaconsValue =criteoBeaconsObject.OnViewBeacon; 270 beaconsValue && createAdsTrackingCriteo(criteoUrl,replaceBeaconParam(beaconsValue,false)); 271 break; 272 } 273 // handling placement beacons IMPRESSION 274 case 'AD_IMPRESSION_PLACEMENT':{ 275 const beaconsValue =criteoBeaconsObject.placementOnViewBeacon; 276 beaconsValue && createAdsTrackingCriteo(criteoPlacementUrl+'?',replaceBeaconParam(beaconsValue,false,eventTrackingObject?.disableTracking).replace('rm?', '')); 277 break; 278 } 279 case 'AD_IMPRESSION_PLACEMENT_TOP':{ 280 const beaconsValue =criteoBeaconsObject.placementOnViewBeacon_top; 281 beaconsValue && createAdsTrackingCriteo(criteoPlacementUrl+'?',replaceBeaconParam(beaconsValue,false,eventTrackingObject?.disableTracking).replace('rm?', '')); 282 break; 283 } 284 case 'AD_IMPRESSION_PLACEMENT_BOTTOM':{ 285 const beaconsValue =criteoBeaconsObject.placementOnViewBeacon_bottom; 286 beaconsValue && createAdsTrackingCriteo(criteoPlacementUrl+'?',replaceBeaconParam(beaconsValue,false,eventTrackingObject?.disableTracking).replace('rm?', '')); 287 break; 288 } 289 case 'AD_CLICK':{ 290 const beaconsValue =criteoBeaconsObject.OnClickBeacon; 291 if(contextObject!==undefined && contextObject!=="" && (contextObject.context==="addToCart" || contextObject.context==="removeProduct" || contextObject.context==="offerDetails")){ 292 createAdsTrackingCriteo(criteoUrl,replaceBeaconParam(beaconsValue,false)); 293 }else{ 294 if(!window.location.pathname.includes("/weeklyad") && !window.location.pathname.includes("/pharmacy")){ 295 beaconsValue && clickAdsTrackingCriteo(criteoUrl,replaceBeaconParam(beaconsValue,false), true); 296 } 297 } 298 break; 299 } 300 case 'AD_RELEVANCE':{ 301 const beaconsValue =eventTrackingObject; 302 if(contextObject!==undefined && contextObject!=="" && contextObject.context==="viewProductDetails"){ 303 beaconsValue && clickAdsTrackingCriteo(criteoRelevanceUrl,beaconsValue, false); 304 }else{ 305 beaconsValue && relevanceAdsTrackingCriteo(criteoRelevanceUrl,beaconsValue); 306 } 307 break; 308 } 309 default:{ 310 result.success = false;
311 result.errorMessage = "Criteo Event is missing."; 312 return result; 313 } 314 } 315} 316function createPlacementCriteoRequest(eventTrackingObject, adEvent, contextObject){ 317 var result = new Object(); 318 if (!criteoUrl || !criteoUrlOnload || !criteoRelevanceUrl) { 319 console.error('Configuration settings not set for Criteo Placement'); 320 } 321 //Checking if Bot Session is suspected and blocking the call 322 if(botFlag){ 323 result.success = false; 324 return result; 325 } 326 var criteoBeaconsObject=eventTrackingObject!==undefined?eventTrackingObject:''; 327 switch(adEvent) { 328 case 'AD_PLACEMENT_ONLOAD':{ 329 const beaconsValue = Array.isArray(criteoBeaconsObject) && criteoBeaconsObject.length>0 ?criteoBeaconsObject.map(beaconsArray =>replaceBeaconParam(beaconsArray.placementOnLoadBeacon,true)):''; 330 beaconsValue && postAdsTrackingCriteo(criteoUrlOnload, beaconsValue); 331 break; 332 } 333 case 'AD_PLACEMENT_IMPRESSION':{ 334 const beaconsValue =criteoBeaconsObject.placementOnViewBeacon; 335 beaconsValue && createAdsTrackingCriteo(criteoUrl,replaceBeaconParam(beaconsValue,false)); 336 break; 337 } 338 case 'AD_PLACEMENT_CLICK':{ 339 const beaconsValue =criteoBeaconsObject.placementOnClickBeacon; 340 beaconsValue && clickAdsTrackingCriteo(criteoUrl,replaceBeaconParam(beaconsValue,false), true); 341 break; 342 } 343 default:{ 344 result.success = false; 345 result.errorMessage = "Placement Event is missing."; 346 return result; 347 } 348 } 349} 350// Post method for criteo Ads Service 351function postAdsTrackingCriteo(criteoBeaconUrl, criteoBeaconParam){ 352 const criteoRequestPayload ={ onLoadBeacons: criteoBeaconParam }; 353 var request = createRequest(); 354 request.open("POST", criteoBeaconUrl, true); 355 request.setRequestHeader("Ocp-Apim-Subscription-Key", criteoApimOnloadKey); 356 request.setRequestHeader('Content-Type', 'application/json'); 357 request.onreadystatechange = onSuccess(request); 358 request.send(JSON.stringify(criteoRequestPayload)); 359} 360// Get method for criteo Ads Service 361function relevanceAdsTrackingCriteo(criteoRelevanceUrl,criteoRelevanceParam){ 362 var criteoBeaconUrl = criteoRelevanceParam?criteoRelevanceUrl+getRelevanceParam(criteoRelevanceParam):criteoRelevanceUrl; 363 var request = createRequest(); 364 request.open("GET", criteoBeaconUrl, true); 365 request.setRequestHeader("Ocp-Apim-Subscription-Key", criteoRelevanceApimKey); 366 request.setRequestHeader("Client-Type", "user-agent"); 367 request.onreadystatechange = onSuccess(request); 368 request.send(); 369} 370function getRelevanceParam(criteoRelevanceParam){ 371 let params = "?"; 372 for (let paramVal in criteoRelevanceParam) 373 params += encodeURIComponent(paramVal) + '=' + encodeURIComponent(criteoRelevanceParam[paramVal]) + '&'; 374 return params.slice(0, -1); 375} 376// Get method for criteo Ads Service 377function createAdsTrackingCriteo(criteoBeaconUrl,criteoBeaconParam){ 378 var criteoBeaconUrl = criteoBeaconUrl+criteoBeaconParam; 379 var request = createRequest(); 380 request.open("GET", criteoBeaconUrl, true); 381 request.setRequestHeader("Ocp-Apim-Subscription-Key", criteoApimKey); 382 request.onreadystatechange = onSuccess(request); 383 request.send(); 384} 385// Click Event storing in localstorage for criteo Ads Service 386function clickAdsTrackingCriteo(criteoBeaconUrl,criteoBeaconParam,clickEventParam){ 387 var criteoBeaconUrlValue = clickEventParam? criteoBeaconUrl+criteoBeaconParam : criteoBeaconParam? criteoBeaconUrl+getRelevanceParam(criteoBeaconParam):criteoBeaconUrl; 388 if(typeof(Storage) !== "undefined") { 389 if(localStorage.getItem('criteoClickURL')!=undefined){ 390 var urlList=JSON.parse(localStorage.getItem('criteoClickURL')); 391 urlList.push(criteoBeaconUrlValue); 392 localStorage.setItem('criteoClickURL',JSON.stringify(urlList)); 393 console.log("UpdatedClickURL:"+localStorage.getItem('criteoClickURL')); 394 }else{ 395 var urlList=[]; 396 urlList.push(criteoBeaconUrlValue); 397 localStorage.setItem('criteoClickURL',JSON.stringify(urlList)); 398 console.log("UpdatedClickURL:"+localStorage.getItem('criteoClickURL')); 399 } 400 } 401} 402// Criteo Replacing function for Beacon Values 403 function replaceBeaconParam(beaconValue, beaconReplaceFlags, disableTracking = undefined) { 404 if (!beaconValue?.trim()) { 405 return ''; 406 } 407 // update the beaconValue only when disableTracking is true (ACIP-476846/ACIP-461451) 408 if (!!disableTracking) { 409 beaconValue = setDisableTrackingParam(beaconValue, disableTracking); 410 } 411 if (beaconReplaceFlags) {
412 const key = 'rm_e='; 413 const index = beaconValue.indexOf(key); 414 return index !== -1 ? beaconValue.substring(index + key.length) : ''; 415 } else { 416 const index = beaconValue.indexOf('rm'); 417 return index !== -1 ? beaconValue.substring(index) : ''; 418 } 419 } 420 // Function to set disableTracking param in URL 421 function setDisableTrackingParam(url, value) { 422 const param = 'disableTracking='; 423 const hasParam = url.includes(param); 424 425 if (hasParam) { 426 // Replace only the disableTracking value, preserving other params 427 return url.replace(/disableTracking=([^&]*)/, `${param}${value}`); 428 } else { 429 // Add disableTracking param, using correct separator 430 const separator = url.includes('?') ? '&' : '?'; 431 return `${url}${separator}${param}${value}`; 432 } 433 } 434 435function createRequest() { 436 var request = null; 437 request = new XMLHttpRequest(); 438 return request; 439} 440function onSuccess(request) { 441 var result = new Object(); 442 try { 443 if (request.readyState == 4) { 444 if (request.status == 200) { 445 result.success = true; 446 result.errorMessage = null; 447 return result; 448 } else { 449 result.success = false; 450 result.errorMessage = request.statusText; 451 return result; 452 } 453 } 454 } 455 catch (ex) { 456 result.success = false; 457 result.errorMessage = ex.message; 458 return result; 459 } 460} 461//Impression Reporting for Banners 462document.addEventListener('BannerImpression', (ev) => citrusAdTracker(ev.detail.agreementId,'AD_IMPRESSION','')); 463 464//Impression Reporting for Products 465document.addEventListener('productsImpression', (ev) => { 466 var adIds=ev.detail,i; 467 for(i=0;i<adIds.length;i++){ 468 citrusAdTracker(adIds[i],'AD_IMPRESSION','') 469 } 470}); 471 472//Call to check click event is stored in session 473document.addEventListener('DOMContentLoaded', function() { 474 var match = document.cookie.match(new RegExp('(^| )' + "SWY_SHARED_SESSION_INFO" + '=([^;]+)')); 475 if (match) { 476 if(match[2].includes("xDTags")){ 477 botFlag=true; 478 } 479 }else{ 480 console.log('SWY_SHARED_SESSION_INFO Cookie Not Set'); 481 } 482 executeCriteoClick(); 483 484}, false); 485 486//Executing citrus and Criteo call for stored click evennt in session 487function executeCriteoClick() { 488 const criteoClickURL = localStorage.getItem('criteoClickURL'); 489 if (criteoClickURL != undefined) { 490 var urlList = []; 491 criteoClickURL != undefined && (urlList = JSON.parse(criteoClickURL)); 492 for (let i = 0; i < urlList.length; i++) { 493 var request = createRequest(); 494 request.open("GET", urlList[i], true); 495 if (urlList[i].includes(criteoRelevanceUrl)) { 496 request.setRequestHeader("Client-Type", "user-agent"); 497 request.setRequestHeader("Ocp-Apim-Subscription-Key", criteoRelevanceApimKey); 498 } else { 499 request.setRequestHeader("Ocp-Apim-Subscription-Key", criteoApimKey); 500 } 501 request.onreadystatechange = onSuccess(request); 502 request.send(); 503 } 504 localStorage.removeItem("criteoClickURL"); 505 } 506}; 507},{"./common":2,"xhr2":5}],5:[function(require,module,exports){ 508module.exports = XMLHttpRequest; 509 510},{}]},{},[1]);
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.