prebid.js 7.16.0 → 7.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/.circleci/config.yml +0 -18
  2. package/dist/1plusXRtdProvider.js +1 -1
  3. package/dist/33acrossBidAdapter.js +1 -1
  4. package/dist/adagioBidAdapter.js +1 -1
  5. package/dist/adbookpspBidAdapter.js +1 -1
  6. package/dist/adgenerationBidAdapter.js +1 -1
  7. package/dist/adqueryBidAdapter.js +1 -1
  8. package/dist/adrelevantisBidAdapter.js +1 -1
  9. package/dist/adtrgtmeBidAdapter.js +1 -1
  10. package/dist/adxcgBidAdapter.js +1 -1
  11. package/dist/adyoulikeBidAdapter.js +1 -1
  12. package/dist/ajaBidAdapter.js +1 -1
  13. package/dist/amxBidAdapter.js +1 -1
  14. package/dist/amxIdSystem.js +1 -1
  15. package/dist/appierAnalyticsAdapter.js +1 -1
  16. package/dist/appnexusBidAdapter.js +1 -1
  17. package/dist/asoBidAdapter.js +1 -1
  18. package/dist/audiencerunBidAdapter.js +1 -1
  19. package/dist/axonixBidAdapter.js +1 -1
  20. package/dist/bidglassBidAdapter.js +1 -1
  21. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  22. package/dist/big-richmediaBidAdapter.js +1 -1
  23. package/dist/bluebillywigBidAdapter.js +1 -1
  24. package/dist/bridgewellBidAdapter.js +1 -1
  25. package/dist/brightMountainMediaBidAdapter.js +1 -1
  26. package/dist/carodaBidAdapter.js +1 -0
  27. package/dist/concertBidAdapter.js +1 -1
  28. package/dist/connectadBidAdapter.js +1 -1
  29. package/dist/consumableBidAdapter.js +1 -1
  30. package/dist/conversantBidAdapter.js +1 -1
  31. package/dist/craftBidAdapter.js +1 -1
  32. package/dist/criteoBidAdapter.js +1 -1
  33. package/dist/dspxBidAdapter.js +1 -1
  34. package/dist/eplanningBidAdapter.js +1 -1
  35. package/dist/finativeBidAdapter.js +1 -1
  36. package/dist/glimpseBidAdapter.js +1 -1
  37. package/dist/gmosspBidAdapter.js +1 -1
  38. package/dist/goldbachBidAdapter.js +1 -1
  39. package/dist/gridBidAdapter.js +1 -1
  40. package/dist/gridNMBidAdapter.js +1 -1
  41. package/dist/growthCodeIdSystem.js +1 -0
  42. package/dist/gumgumBidAdapter.js +1 -1
  43. package/dist/h12mediaBidAdapter.js +1 -1
  44. package/dist/id5IdSystem.js +1 -1
  45. package/dist/impactifyBidAdapter.js +1 -1
  46. package/dist/improvedigitalBidAdapter.js +1 -1
  47. package/dist/inmarBidAdapter.js +1 -1
  48. package/dist/insticatorBidAdapter.js +1 -1
  49. package/dist/ixBidAdapter.js +1 -1
  50. package/dist/jixieBidAdapter.js +1 -1
  51. package/dist/justpremiumBidAdapter.js +1 -1
  52. package/dist/konduitAnalyticsAdapter.js +1 -1
  53. package/dist/kueezBidAdapter.js +1 -1
  54. package/dist/lassoBidAdapter.js +1 -1
  55. package/dist/lifestreetBidAdapter.js +1 -1
  56. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  57. package/dist/logicadBidAdapter.js +1 -1
  58. package/dist/loglyliftBidAdapter.js +1 -1
  59. package/dist/malltvAnalyticsAdapter.js +1 -1
  60. package/dist/marsmediaBidAdapter.js +1 -1
  61. package/dist/mediafuseBidAdapter.js +1 -1
  62. package/dist/mediagoBidAdapter.js +1 -1
  63. package/dist/mediakeysBidAdapter.js +1 -1
  64. package/dist/mediasquareBidAdapter.js +1 -1
  65. package/dist/mgidBidAdapter.js +1 -1
  66. package/dist/minutemediaBidAdapter.js +1 -1
  67. package/dist/nativoBidAdapter.js +1 -1
  68. package/dist/nextMillenniumBidAdapter.js +1 -1
  69. package/dist/not-for-prod/prebid.js +121 -119
  70. package/dist/oguryBidAdapter.js +1 -1
  71. package/dist/onetagBidAdapter.js +1 -1
  72. package/dist/ooloAnalyticsAdapter.js +1 -1
  73. package/dist/outbrainBidAdapter.js +1 -1
  74. package/dist/parrableIdSystem.js +1 -1
  75. package/dist/pixfutureBidAdapter.js +1 -1
  76. package/dist/prebid-core.js +1 -1
  77. package/dist/publinkIdSystem.js +1 -1
  78. package/dist/pubmaticBidAdapter.js +1 -1
  79. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  80. package/dist/pxyzBidAdapter.js +1 -1
  81. package/dist/quantcastBidAdapter.js +1 -1
  82. package/dist/readpeakBidAdapter.js +1 -1
  83. package/dist/relaidoBidAdapter.js +1 -1
  84. package/dist/rhythmoneBidAdapter.js +1 -1
  85. package/dist/riseBidAdapter.js +1 -1
  86. package/dist/rubiconAnalyticsAdapter.js +1 -1
  87. package/dist/rubiconBidAdapter.js +1 -1
  88. package/dist/seedingAllianceBidAdapter.js +1 -1
  89. package/dist/seedtagBidAdapter.js +1 -1
  90. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  91. package/dist/sharethroughBidAdapter.js +1 -1
  92. package/dist/shinezBidAdapter.js +1 -1
  93. package/dist/smaatoBidAdapter.js +1 -1
  94. package/dist/smartadserverBidAdapter.js +1 -1
  95. package/dist/smartxBidAdapter.js +1 -1
  96. package/dist/smilewantedBidAdapter.js +1 -1
  97. package/dist/sonobiBidAdapter.js +1 -1
  98. package/dist/sovrnAnalyticsAdapter.js +1 -1
  99. package/dist/sovrnBidAdapter.js +1 -1
  100. package/dist/sspBCBidAdapter.js +1 -1
  101. package/dist/sublimeBidAdapter.js +1 -1
  102. package/dist/synacormediaBidAdapter.js +1 -1
  103. package/dist/taboolaBidAdapter.js +1 -1
  104. package/dist/targetVideoBidAdapter.js +1 -1
  105. package/dist/teadsBidAdapter.js +1 -1
  106. package/dist/trionBidAdapter.js +1 -1
  107. package/dist/tripleliftBidAdapter.js +1 -1
  108. package/dist/ttdBidAdapter.js +1 -1
  109. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  110. package/dist/underdogmediaBidAdapter.js +1 -1
  111. package/dist/undertoneBidAdapter.js +1 -1
  112. package/dist/userId.js +1 -1
  113. package/dist/vidazooBidAdapter.js +1 -1
  114. package/dist/videobyteBidAdapter.js +1 -1
  115. package/dist/visxBidAdapter.js +1 -1
  116. package/dist/vuukleBidAdapter.js +1 -1
  117. package/dist/widespaceBidAdapter.js +1 -1
  118. package/dist/winrBidAdapter.js +1 -1
  119. package/dist/yahoosspBidAdapter.js +1 -1
  120. package/dist/yieldmoBidAdapter.js +1 -1
  121. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  122. package/karma.conf.maker.js +2 -4
  123. package/modules/1plusXRtdProvider.js +27 -7
  124. package/modules/adagioBidAdapter.js +18 -3
  125. package/modules/adagioBidAdapter.md +11 -1
  126. package/modules/adqueryBidAdapter.js +4 -2
  127. package/modules/appnexusBidAdapter.js +24 -22
  128. package/modules/bidwatchAnalyticsAdapter.js +1 -1
  129. package/modules/carodaBidAdapter.js +217 -0
  130. package/modules/carodaBidAdapter.md +43 -0
  131. package/modules/gridBidAdapter.js +1 -1
  132. package/modules/growthCodeIdSystem.js +164 -0
  133. package/modules/growthCodeIdSystem.md +37 -0
  134. package/modules/improvedigitalBidAdapter.js +3 -1
  135. package/modules/ixBidAdapter.js +17 -12
  136. package/modules/mediagoBidAdapter.js +15 -11
  137. package/modules/mediasquareBidAdapter.js +1 -1
  138. package/modules/nativoBidAdapter.js +2 -1
  139. package/modules/nextMillenniumBidAdapter.js +34 -11
  140. package/modules/rubiconAnalyticsAdapter.js +2 -2
  141. package/modules/rubiconBidAdapter.js +16 -6
  142. package/modules/seedtagBidAdapter.js +4 -0
  143. package/modules/taboolaBidAdapter.js +3 -7
  144. package/modules/userId/eids.js +19 -0
  145. package/modules/vidazooBidAdapter.js +1 -1
  146. package/package.json +1 -1
  147. package/test/spec/modules/1plusXRtdProvider_spec.js +77 -1
  148. package/test/spec/modules/adagioBidAdapter_spec.js +46 -2
  149. package/test/spec/modules/adqueryBidAdapter_spec.js +11 -0
  150. package/test/spec/modules/appnexusBidAdapter_spec.js +76 -0
  151. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +2 -0
  152. package/test/spec/modules/carodaBidAdapter_spec.js +494 -0
  153. package/test/spec/modules/growthCodeIdSystem_spec.js +83 -0
  154. package/test/spec/modules/improvedigitalBidAdapter_spec.js +10 -0
  155. package/test/spec/modules/ixBidAdapter_spec.js +32 -16
  156. package/test/spec/modules/mediasquareBidAdapter_spec.js +2 -0
  157. package/test/spec/modules/prebidServerBidAdapter_spec.js +12 -0
  158. package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +7 -7
  159. package/test/spec/modules/rubiconBidAdapter_spec.js +28 -35
  160. package/test/spec/modules/seedtagBidAdapter_spec.js +45 -0
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[5337],{4192:function(e,t,r){r.d(t,{HQ:function(){return c},Pv:function(){return u},UR:function(){return a}});var n=r(64358),i=r(20265),a={trustpid:{source:"trustpid.com",atype:1,getValue:function(e){return e}},intentIqId:{source:"intentiq.com",atype:1},naveggId:{source:"navegg.com",atype:1},justId:{source:"justtag.com",atype:1},pubcid:{source:"pubcid.org",atype:1},tdid:{source:"adserver.org",atype:1,getUidExt:function(){return{rtiPartner:"TDID"}}},id5id:{getValue:function(e){return e.uid},source:"id5-sync.com",atype:1,getUidExt:function(e){if(e.ext)return e.ext}},ftrackId:{source:"flashtalking.com",atype:1,getValue:function(e){var t="";return e.DeviceID&&(t=e.DeviceID.join(",")),t},getUidExt:function(e){return"DeviceID"}},parrableId:{source:"parrable.com",atype:1,getValue:function(e){return e.eid?e.eid:e.ccpaOptout?"":null},getUidExt:function(e){var t=(0,n.pick)(e,["ibaOptout","ccpaOptout"]);if(Object.keys(t).length)return t}},idl_env:{source:"liveramp.com",atype:3},lipb:{getValue:function(e){return e.lipbid},source:"liveintent.com",atype:3,getEidExt:function(e){if(Array.isArray(e.segments)&&e.segments.length)return{segments:e.segments}}},britepoolid:{source:"britepool.com",atype:3},dmdId:{source:"hcn.health",atype:3},lotamePanoramaId:{source:"crwdcntrl.net",atype:1},criteoId:{source:"criteo.com",atype:1},merkleId:{atype:3,getSource:function(e){var t;return null!=e&&null!==(t=e.ext)&&void 0!==t&&t.ssp?"".concat(e.ext.ssp,".merkleinc.com"):"merkleinc.com"},getValue:function(e){return e.id},getUidExt:function(e){return e.keyID?{keyID:e.keyID}:e.ext?e.ext:void 0}},netId:{source:"netid.de",atype:1},IDP:{source:"zeotap.com",atype:1},hadronId:{source:"audigent.com",atype:1},quantcastId:{source:"quantcast.com",atype:1},idx:{source:"idx.lat",atype:1},connectid:{source:"verizonmedia.com",atype:3},fabrickId:{source:"neustar.biz",atype:1},mwOpenLinkId:{source:"mediawallahscript.com",atype:1},tapadId:{source:"tapad.com",atype:1},novatiq:{getValue:function(e){return e.snowflake},source:"novatiq.com",atype:1},uid2:{source:"uidapi.com",atype:3,getValue:function(e){return e.id}},deepintentId:{source:"deepintent.com",atype:3},admixerId:{source:"admixer.net",atype:3},adtelligentId:{source:"adtelligent.com",atype:3},amxId:{source:"amxrtb.com",atype:1},publinkId:{source:"epsilon.com",atype:3},kpuid:{source:"kpuid.com",atype:3},imppid:{source:"ppid.intimatemerger.com",atype:1},imuid:{source:"intimatemerger.com",atype:1},connectId:{source:"yahoo.com",atype:3},qid:{source:"adquery.io",atype:1},dacId:{source:"impact-ad.jp",atype:1},"33acrossId":{source:"33across.com",atype:1,getValue:function(e){return e.envelope}},tncid:{source:"thenewco.it",atype:3},gravitompId:{source:"gravito.net",atype:1},cpexId:{source:"czechadid.cz",atype:1},oneKeyData:{getValue:function(e){if(e&&Array.isArray(e.identifiers)&&e.identifiers[0])return e.identifiers[0].value},source:"paf",atype:1,getEidExt:function(e){if(e&&e.preferences)return{preferences:e.preferences}},getUidExt:function(e){if(e&&Array.isArray(e.identifiers)&&e.identifiers[0]){var t=e.identifiers[0];return{version:t.version,type:t.type,source:t.source}}}}};function o(e,t){var r=a[t];if(r&&e){var i={};i.source=(0,n.isFn)(r.getSource)?r.getSource(e):r.source;var o=(0,n.isFn)(r.getValue)?r.getValue(e):e;if((0,n.isStr)(o)){var c={id:o,atype:r.atype};if((0,n.isFn)(r.getUidExt)){var u=r.getUidExt(e);u&&(c.ext=u)}if(i.uids=[c],(0,n.isFn)(r.getEidExt)){var d=r.getEidExt(e);d&&(i.ext=d)}return i}}return null}function c(e){var t=[],r=function(r){if(e.hasOwnProperty(r))if("pubProvidedId"===r)t=t.concat(e.pubProvidedId);else if("ftrackId"===r){var n={atype:1,id:(e.ftrackId.DeviceID||[]).join("|"),ext:{}};for(var i in e.ftrackId)n.ext[i]=(e.ftrackId[i]||[]).join("|");t.push(n)}else if(Array.isArray(e[r]))e[r].forEach((function(e,n,i){var a=o(e,r);a&&t.push(a)}));else{var a=o(e[r],r);a&&t.push(a)}};for(var n in e)r(n);return t}function u(e){var t=[];return e.filter((function(e){return(0,n.isPlainObject)(e.idObj)&&Object.keys(e.idObj).length})).forEach((function(e){Object.keys(e.idObj).forEach((function(r){(0,i.Z)(e,"config.bidders")&&Array.isArray(e.config.bidders)&&(0,i.Z)(a,r+".source")&&t.push({source:a[r].source,bidders:e.config.bidders})}))})),t}},55511:function(e,t,r){var n=r(71002),i=r(64358),a=r(20265),o=r(96475),c=r(24679),u=r(14699),d=r(35706),s=r(34614),p=r(4192),f="USD",m=300,l=!0,y="https://ads.yieldmo.com/exchange/prebid",v="https://ads.yieldmo.com/pbcas",g="https://prebid-outstream.yieldmo.com/bundle.js",b=["mimes","startdelay","placement","startdelay","skipafter","protocols","api","playbackmethod","maxduration","minduration","pos","skip","skippable"],h=["name","domain","cat","keywords"],I=(0,i.getWindowTop)(),x=["description","title","pr","page_url"],k={code:"yieldmo",supportedMediaTypes:[c.Mk,c.pX],isBidRequestValid:function(e){return!!(e&&e.adUnitCode&&e.bidId&&(w(e)||E(e))&&function(e){if(!E(e))return!0;var t=function(e,t,r){var n='"'.concat(e,'" is required');throw r&&(n+=" when "+r),new Error(n)},r=function(e,t,r){throw r=r?", expected: "+r:"",t=JSON.stringify(t),new Error('"'.concat(e,'"=').concat(t," is invalid").concat(r))},n=function(e){return void 0!==e},o=function(t,r,n,i){if(0===t.indexOf("video")){var o="params."+t,c="mediaTypes."+t,u=(0,a.Z)(e,o),d=(0,a.Z)(e,c),s=r(u),p=r(d);return s?u:p||(s?p||n(c,d,i):n(o,u,i),u||d)}var f=(0,a.Z)(e,t);return r(f)||n(t,f,i),f};try{o("video.context",(function(e){return!(0,i.isEmpty)(e)}),t),o("params.placementId",(function(e){return!(0,i.isEmpty)(e)}),t),o("video.playerSize",(function(e){return(0,i.isArrayOfNums)(e,2)||(0,i.isArray)(e)&&e.every((function(e){return(0,i.isArrayOfNums)(e,2)}))}),r,"array of 2 integers, ex: [640,480] or [[640,480]]"),o("video.mimes",(function(e){return n(e)}),t),o("video.mimes",(function(e){return(0,i.isArray)(e)&&e.every((function(e){return(0,i.isStr)(e)}))}),r,'array of strings, ex: ["video/mp4"]');var c=o("video.placement",(function(e){return n(e)}),t);return o("video.placement",(function(e){return e>=1&&e<=5}),r),1===c&&(o("video.startdelay",(function(e){return n(e)}),(function(e,r){return t(e,r,"placement == 1")})),o("video.startdelay",(function(e){return(0,i.isNumber)(e)}),r,"number, ex: 5")),o("video.protocols",(function(e){return n(e)}),t),o("video.protocols",(function(e){return(0,i.isArrayOfNums)(e)&&e.every((function(e){return e>=1&&e<=6}))}),r,"array of numbers, ex: [2,3]"),o("video.api",(function(e){return n(e)}),t),o("video.api",(function(e){return(0,i.isArrayOfNums)(e)&&e.every((function(e){return e>=1&&e<=6}))}),r,"array of numbers, ex: [2,3]"),o("video.playbackmethod",(function(e){return!n(e)||(0,i.isArrayOfNums)(e)}),r,"array of integers, ex: [2,6]"),o("video.maxduration",(function(e){return n(e)}),t),o("video.maxduration",(function(e){return(0,i.isInteger)(e)}),r),o("video.minduration",(function(e){return!n(e)||(0,i.isNumber)(e)}),r),o("video.skippable",(function(e){return!n(e)||(0,i.isBoolean)(e)}),r),o("video.skipafter",(function(e){return!n(e)||(0,i.isNumber)(e)}),r),o("video.pos",(function(e){return!n(e)||(0,i.isNumber)(e)}),r),o("params.badv",(function(e){return!n(e)||(0,i.isArray)(e)}),r,'array of strings, ex: ["ford.com","pepsi.com"]'),o("params.bcat",(function(e){return!n(e)||(0,i.isArray)(e)}),r,'array of strings, ex: ["IAB1-5","IAB1-6"]'),!0}catch(e){return(0,i.logError)(e.message),!1}}(e))},buildRequests:function(e,t){var r=e.filter((function(e){return w(e)})),n=e.filter((function(e){return E(e)})),u=[],d=function(e){if((0,a.Z)(e,"userId"))return(0,p.HQ)(e.userId)||[]}(e[0])||[];if(r.length>0){var f={pbav:"7.16.0",p:[],page_url:t.refererInfo.page,bust:(new Date).getTime().toString(),dnt:"1"===window.doNotTrack||"1"===window.navigator.doNotTrack||!1,description:A(),userConsent:JSON.stringify({gdprApplies:(0,a.Z)(t,"gdprConsent.gdprApplies")||"",cmp:(0,a.Z)(t,"gdprConsent.consentString")||""}),us_privacy:(0,a.Z)(t,"uspConsent")||""};(function(){try{if((0,i.getWindowTop)().location.href)return!0}catch(e){return!1}})()&&(f.pr=I.document&&I.document.referrer||"",f.scrd=I.devicePixelRatio||0,f.title=I.document.title||"",f.w=I.innerWidth,f.h=I.innerHeight);var m=window.navigator.maxTouchPoints;m&&(f.mtp=m),r.forEach((function(e){f.p.push(function(e){var t=(0,a.Z)(e,"ortb2Imp.ext.data.pbadslot"),r={placement_id:e.adUnitCode,callback_id:e.bidId,sizes:e.mediaTypes.banner.sizes};if(e.params){e.params.placementId&&(r.ym_placement_id=e.params.placementId);var n=Z(e,c.Mk);n&&(r.bidFloor=n)}t&&(r.gpid=t);var i=(0,a.Z)(e,"ortb2Imp.ext.tid");i&&(r.tid=i);e.auctionId&&(r.auctionId=e.auctionId);return JSON.stringify(r)}(e));var t=O(e,"pubcid");t?f.pubcid=t:e.crumbs&&e.crumbs.pubcid&&(f.pubcid=e.crumbs.pubcid);var r=O(e,"tdid");r&&(f.tdid=r);var n=O(e,"criteoId");n&&(f.cri_prebid=n),e.schain&&(f.schain=JSON.stringify(e.schain)),(0,a.Z)(e,"params.lr_env")&&(f.ats_envelope=e.params.lr_env)})),f.p="["+f.p.toString()+"]",d.length&&(f.eids=JSON.stringify(d));var l="".concat(y,"?").concat((0,i.parseQueryStringParameters)(f)).length-8e3;if(l>0)for(var v=0;v<x.length&&!((l=N(l,f,x[v]))<=0);v++);u.push({method:"GET",url:y,data:f})}if(n.length>0){var g=function(e,t){var r=e[0].schain,n={id:e[0].bidderRequestId,at:1,imp:e.map((function(e){return function(e){var t=(0,a.Z)(e,"ortb2Imp.ext.data.pbadslot"),r=function(e){var t=(0,a.Z)(e,"mediaTypes.video.playerSize");if((0,i.isArrayOfNums)(t,2))return t;if((0,i.isArray)(t)&&(0,i.isArrayOfNums)(t[0],2))return t[0];return null}(e),n={id:e.bidId,tagid:e.adUnitCode,bidfloor:Z(e,c.pX),ext:{placement_id:e.params.placementId,tid:(0,a.Z)(e,"ortb2Imp.ext.tid")},video:{w:r[0],h:r[1],linearity:1}},o=(0,a.Z)(e,"mediaTypes.video");Object.keys(o).filter((function(e){return(0,s.q9)(b,e)})).forEach((function(e){return n.video[e]=o[e]}));var u=(0,a.Z)(e,"params.video");Object.keys(u).filter((function(e){return(0,s.q9)(b,e)})).forEach((function(e){return n.video[e]=u[e]})),n.video.skippable&&(n.video.skip=1,delete n.video.skippable);1!==n.video.placement&&(n.video.startdelay=0,n.video.playbackmethod=[2]);t&&(n.ext.gpid=t);return n}(e)})),site:T(e[0],t),device:S(e[0]),badv:e[0].params.badv||[],bcat:(0,a.Z)(t,"bcat")||e[0].params.bcat||[],ext:{prebid:"7.16.0"},ats_envelope:e[0].params.lr_env};r&&(n.schain=r);e[0].auctionId&&(n.auctionId=e[0].auctionId);return function(e,t){var r=t.gdprConsent;r&&"gdprApplies"in r&&((0,o.N)(e,"regs.ext.gdpr",r.gdprApplies?1:0),(0,o.N)(e,"user.ext.consent",r.consentString));var n=(0,a.Z)(t,"uspConsent");n&&(0,o.N)(e,"regs.ext.us_privacy",n)}(n,t),n}(n,t);d.length&&(g.user={eids:d}),u.push({method:"POST",url:"https://ads.yieldmo.com/exchange/prebidvideo",data:g})}return u},interpretResponse:function(e,t){var r=[],n=e.body;(n.length>0&&n.forEach((function(e){e.cpm>0&&r.push(function(e){return{dealId:e.publisherDealId,requestId:e.callback_id,cpm:e.cpm,width:e.width,height:e.height,creativeId:e.creative_id,currency:f,netRevenue:l,ttl:300,ad:e.ad,meta:{advertiserDomains:e.adomain||[],mediaType:c.Mk}}}(e))})),n.seatbid)&&n.seatbid.reduce((function(e,t){return e.concat(t.bid)}),[]).forEach((function(e){return r.push(function(e,t){var r=(0,s.sE)((0,a.Z)(t,"data.imp")||[],(function(t){return t.id===e.impid})),n={dealId:e.dealid,requestId:r.id,cpm:e.price,width:r.video.w,height:r.video.h,creativeId:e.crid||e.adid,currency:f,netRevenue:l,mediaType:c.pX,ttl:m,vastXml:e.adm,meta:{advertiserDomains:e.adomain||[],mediaType:c.pX}};if(r.video.placement&&1!==r.video.placement){var i=d.Th.install({url:g,config:{width:n.width,height:n.height,vastTimeout:15e3,maxAllowedVastTagRedirects:5,allowVpaid:!0,autoPlay:!0,preload:!0,mute:!0},id:r.tagid,loaded:!1});i.setRender((function(e){e.renderer.push((function(){var t=e.renderer,r=t.id,n=t.config;window.YMoutstreamPlayer(e,r,n)}))})),n.renderer=i}return n}(e,t))}));return r},getUserSyncs:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",i=[],a="&gdpr=".concat(r.gdprApplies?1:0),o="&gdpr_consent=".concat(encodeURIComponent(r.consentString||"")),c="us_privacy=".concat(encodeURIComponent(n)),u="".concat(v,"?").concat(c).concat(a).concat(o);return e.iframeEnabled?i.push({type:"iframe",url:u+"&type=iframe"}):e.pixelEnabled&&i.push({type:"image",url:u+"&type=image"}),i}};function w(e){return!!(0,a.Z)(e,"mediaTypes.banner")}function E(e){return!!(0,a.Z)(e,"mediaTypes.video")}function A(){return document.querySelector('meta[name="description"]')&&document.querySelector('meta[name="description"]').getAttribute("content")||""}function O(e,t){return"object"===(0,n.Z)((0,a.Z)(e,"userId"))?e.userId[t]:void 0}function Z(e,t){var r={};return"function"==typeof e.getFloor&&(r=e.getFloor({currency:f,mediaType:t,size:"*"})),r.floor||e.params.bidfloor||e.params.bidFloor||0}function T(e,t){var r,n={},o=(0,i.parseUrl)((0,a.Z)(t,"refererInfo.page"));(0,i.isEmpty)(o)||(n.page="".concat(o.protocol,"://").concat(o.hostname).concat(o.pathname)),null!==(r=t.refererInfo)&&void 0!==r&&r.ref&&(n.ref=t.refererInfo.ref);var c=document.getElementsByTagName("meta").keywords;c&&c.content&&(n.keywords=c.content);var u=(0,a.Z)(e,"params.site");return u&&Object.keys(u).filter((function(e){return(0,s.q9)(h,e)})).forEach((function(e){return n[e]=u[e]})),n}function S(e){return{ua:navigator.userAgent,language:navigator.language||navigator.browserLanguage||navigator.userLanguage||navigator.systemLanguage}}function N(e,t,r){if(t[r].length>e)return t[r]=t[r].substring(0,t[r].length-e),0;var n=e-t[r].length;return t[r]="",n}(0,u.dX)(k),window.pbjs.installedModules.push("yieldmoBidAdapter")}},function(e){var t;t=55511,e(e.s=t)}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[5337],{4192:function(e,t,r){r.d(t,{HQ:function(){return c},Pv:function(){return u},UR:function(){return a}});var n=r(64358),i=r(20265),a={growthCodeId:{getValue:function(e){return e.gc_id},source:"growthcode.io",atype:1,getUidExt:function(e){var t=(0,n.pick)(e,["h1","h2","h3"]);if(Object.keys(t).length)return t}},trustpid:{source:"trustpid.com",atype:1,getValue:function(e){return e}},intentIqId:{source:"intentiq.com",atype:1},naveggId:{source:"navegg.com",atype:1},justId:{source:"justtag.com",atype:1},pubcid:{source:"pubcid.org",atype:1},tdid:{source:"adserver.org",atype:1,getUidExt:function(){return{rtiPartner:"TDID"}}},id5id:{getValue:function(e){return e.uid},source:"id5-sync.com",atype:1,getUidExt:function(e){if(e.ext)return e.ext}},ftrackId:{source:"flashtalking.com",atype:1,getValue:function(e){var t="";return e.DeviceID&&(t=e.DeviceID.join(",")),t},getUidExt:function(e){return"DeviceID"}},parrableId:{source:"parrable.com",atype:1,getValue:function(e){return e.eid?e.eid:e.ccpaOptout?"":null},getUidExt:function(e){var t=(0,n.pick)(e,["ibaOptout","ccpaOptout"]);if(Object.keys(t).length)return t}},idl_env:{source:"liveramp.com",atype:3},lipb:{getValue:function(e){return e.lipbid},source:"liveintent.com",atype:3,getEidExt:function(e){if(Array.isArray(e.segments)&&e.segments.length)return{segments:e.segments}}},britepoolid:{source:"britepool.com",atype:3},dmdId:{source:"hcn.health",atype:3},lotamePanoramaId:{source:"crwdcntrl.net",atype:1},criteoId:{source:"criteo.com",atype:1},merkleId:{atype:3,getSource:function(e){var t;return null!=e&&null!==(t=e.ext)&&void 0!==t&&t.ssp?"".concat(e.ext.ssp,".merkleinc.com"):"merkleinc.com"},getValue:function(e){return e.id},getUidExt:function(e){return e.keyID?{keyID:e.keyID}:e.ext?e.ext:void 0}},netId:{source:"netid.de",atype:1},IDP:{source:"zeotap.com",atype:1},hadronId:{source:"audigent.com",atype:1},quantcastId:{source:"quantcast.com",atype:1},idx:{source:"idx.lat",atype:1},connectid:{source:"verizonmedia.com",atype:3},fabrickId:{source:"neustar.biz",atype:1},mwOpenLinkId:{source:"mediawallahscript.com",atype:1},tapadId:{source:"tapad.com",atype:1},novatiq:{getValue:function(e){return e.snowflake},source:"novatiq.com",atype:1},uid2:{source:"uidapi.com",atype:3,getValue:function(e){return e.id}},deepintentId:{source:"deepintent.com",atype:3},admixerId:{source:"admixer.net",atype:3},adtelligentId:{source:"adtelligent.com",atype:3},amxId:{source:"amxrtb.com",atype:1},publinkId:{source:"epsilon.com",atype:3},kpuid:{source:"kpuid.com",atype:3},imppid:{source:"ppid.intimatemerger.com",atype:1},imuid:{source:"intimatemerger.com",atype:1},connectId:{source:"yahoo.com",atype:3},qid:{source:"adquery.io",atype:1},dacId:{source:"impact-ad.jp",atype:1},"33acrossId":{source:"33across.com",atype:1,getValue:function(e){return e.envelope}},tncid:{source:"thenewco.it",atype:3},gravitompId:{source:"gravito.net",atype:1},cpexId:{source:"czechadid.cz",atype:1},oneKeyData:{getValue:function(e){if(e&&Array.isArray(e.identifiers)&&e.identifiers[0])return e.identifiers[0].value},source:"paf",atype:1,getEidExt:function(e){if(e&&e.preferences)return{preferences:e.preferences}},getUidExt:function(e){if(e&&Array.isArray(e.identifiers)&&e.identifiers[0]){var t=e.identifiers[0];return{version:t.version,type:t.type,source:t.source}}}}};function o(e,t){var r=a[t];if(r&&e){var i={};i.source=(0,n.isFn)(r.getSource)?r.getSource(e):r.source;var o=(0,n.isFn)(r.getValue)?r.getValue(e):e;if((0,n.isStr)(o)){var c={id:o,atype:r.atype};if((0,n.isFn)(r.getUidExt)){var u=r.getUidExt(e);u&&(c.ext=u)}if(i.uids=[c],(0,n.isFn)(r.getEidExt)){var d=r.getEidExt(e);d&&(i.ext=d)}return i}}return null}function c(e){var t=[],r=function(r){if(e.hasOwnProperty(r))if("pubProvidedId"===r)t=t.concat(e.pubProvidedId);else if("ftrackId"===r){var n={atype:1,id:(e.ftrackId.DeviceID||[]).join("|"),ext:{}};for(var i in e.ftrackId)n.ext[i]=(e.ftrackId[i]||[]).join("|");t.push(n)}else if(Array.isArray(e[r]))e[r].forEach((function(e,n,i){var a=o(e,r);a&&t.push(a)}));else{var a=o(e[r],r);a&&t.push(a)}};for(var n in e)r(n);return t}function u(e){var t=[];return e.filter((function(e){return(0,n.isPlainObject)(e.idObj)&&Object.keys(e.idObj).length})).forEach((function(e){Object.keys(e.idObj).forEach((function(r){(0,i.Z)(e,"config.bidders")&&Array.isArray(e.config.bidders)&&(0,i.Z)(a,r+".source")&&t.push({source:a[r].source,bidders:e.config.bidders})}))})),t}},55511:function(e,t,r){var n=r(71002),i=r(64358),a=r(20265),o=r(96475),c=r(24679),u=r(14699),d=r(35706),s=r(34614),p=r(4192),f="USD",m=300,l=!0,y="https://ads.yieldmo.com/exchange/prebid",v="https://ads.yieldmo.com/pbcas",g="https://prebid-outstream.yieldmo.com/bundle.js",h=["mimes","startdelay","placement","startdelay","skipafter","protocols","api","playbackmethod","maxduration","minduration","pos","skip","skippable"],b=["name","domain","cat","keywords"],I=(0,i.getWindowTop)(),x=["description","title","pr","page_url"],k={code:"yieldmo",supportedMediaTypes:[c.Mk,c.pX],isBidRequestValid:function(e){return!!(e&&e.adUnitCode&&e.bidId&&(w(e)||E(e))&&function(e){if(!E(e))return!0;var t=function(e,t,r){var n='"'.concat(e,'" is required');throw r&&(n+=" when "+r),new Error(n)},r=function(e,t,r){throw r=r?", expected: "+r:"",t=JSON.stringify(t),new Error('"'.concat(e,'"=').concat(t," is invalid").concat(r))},n=function(e){return void 0!==e},o=function(t,r,n,i){if(0===t.indexOf("video")){var o="params."+t,c="mediaTypes."+t,u=(0,a.Z)(e,o),d=(0,a.Z)(e,c),s=r(u),p=r(d);return s?u:p||(s?p||n(c,d,i):n(o,u,i),u||d)}var f=(0,a.Z)(e,t);return r(f)||n(t,f,i),f};try{o("video.context",(function(e){return!(0,i.isEmpty)(e)}),t),o("params.placementId",(function(e){return!(0,i.isEmpty)(e)}),t),o("video.playerSize",(function(e){return(0,i.isArrayOfNums)(e,2)||(0,i.isArray)(e)&&e.every((function(e){return(0,i.isArrayOfNums)(e,2)}))}),r,"array of 2 integers, ex: [640,480] or [[640,480]]"),o("video.mimes",(function(e){return n(e)}),t),o("video.mimes",(function(e){return(0,i.isArray)(e)&&e.every((function(e){return(0,i.isStr)(e)}))}),r,'array of strings, ex: ["video/mp4"]');var c=o("video.placement",(function(e){return n(e)}),t);return o("video.placement",(function(e){return e>=1&&e<=5}),r),1===c&&(o("video.startdelay",(function(e){return n(e)}),(function(e,r){return t(e,r,"placement == 1")})),o("video.startdelay",(function(e){return(0,i.isNumber)(e)}),r,"number, ex: 5")),o("video.protocols",(function(e){return n(e)}),t),o("video.protocols",(function(e){return(0,i.isArrayOfNums)(e)&&e.every((function(e){return e>=1&&e<=6}))}),r,"array of numbers, ex: [2,3]"),o("video.api",(function(e){return n(e)}),t),o("video.api",(function(e){return(0,i.isArrayOfNums)(e)&&e.every((function(e){return e>=1&&e<=6}))}),r,"array of numbers, ex: [2,3]"),o("video.playbackmethod",(function(e){return!n(e)||(0,i.isArrayOfNums)(e)}),r,"array of integers, ex: [2,6]"),o("video.maxduration",(function(e){return n(e)}),t),o("video.maxduration",(function(e){return(0,i.isInteger)(e)}),r),o("video.minduration",(function(e){return!n(e)||(0,i.isNumber)(e)}),r),o("video.skippable",(function(e){return!n(e)||(0,i.isBoolean)(e)}),r),o("video.skipafter",(function(e){return!n(e)||(0,i.isNumber)(e)}),r),o("video.pos",(function(e){return!n(e)||(0,i.isNumber)(e)}),r),o("params.badv",(function(e){return!n(e)||(0,i.isArray)(e)}),r,'array of strings, ex: ["ford.com","pepsi.com"]'),o("params.bcat",(function(e){return!n(e)||(0,i.isArray)(e)}),r,'array of strings, ex: ["IAB1-5","IAB1-6"]'),!0}catch(e){return(0,i.logError)(e.message),!1}}(e))},buildRequests:function(e,t){var r=e.filter((function(e){return w(e)})),n=e.filter((function(e){return E(e)})),u=[],d=function(e){if((0,a.Z)(e,"userId"))return(0,p.HQ)(e.userId)||[]}(e[0])||[];if(r.length>0){var f={pbav:"7.18.0",p:[],page_url:t.refererInfo.page,bust:(new Date).getTime().toString(),dnt:"1"===window.doNotTrack||"1"===window.navigator.doNotTrack||!1,description:A(),userConsent:JSON.stringify({gdprApplies:(0,a.Z)(t,"gdprConsent.gdprApplies")||"",cmp:(0,a.Z)(t,"gdprConsent.consentString")||""}),us_privacy:(0,a.Z)(t,"uspConsent")||""};(function(){try{if((0,i.getWindowTop)().location.href)return!0}catch(e){return!1}})()&&(f.pr=I.document&&I.document.referrer||"",f.scrd=I.devicePixelRatio||0,f.title=I.document.title||"",f.w=I.innerWidth,f.h=I.innerHeight);var m=window.navigator.maxTouchPoints;m&&(f.mtp=m),r.forEach((function(e){f.p.push(function(e){var t=(0,a.Z)(e,"ortb2Imp.ext.data.pbadslot"),r={placement_id:e.adUnitCode,callback_id:e.bidId,sizes:e.mediaTypes.banner.sizes};if(e.params){e.params.placementId&&(r.ym_placement_id=e.params.placementId);var n=Z(e,c.Mk);n&&(r.bidFloor=n)}t&&(r.gpid=t);var i=(0,a.Z)(e,"ortb2Imp.ext.tid");i&&(r.tid=i);e.auctionId&&(r.auctionId=e.auctionId);return JSON.stringify(r)}(e));var t=O(e,"pubcid");t?f.pubcid=t:e.crumbs&&e.crumbs.pubcid&&(f.pubcid=e.crumbs.pubcid);var r=O(e,"tdid");r&&(f.tdid=r);var n=O(e,"criteoId");n&&(f.cri_prebid=n),e.schain&&(f.schain=JSON.stringify(e.schain)),(0,a.Z)(e,"params.lr_env")&&(f.ats_envelope=e.params.lr_env)})),f.p="["+f.p.toString()+"]",d.length&&(f.eids=JSON.stringify(d));var l="".concat(y,"?").concat((0,i.parseQueryStringParameters)(f)).length-8e3;if(l>0)for(var v=0;v<x.length&&!((l=j(l,f,x[v]))<=0);v++);u.push({method:"GET",url:y,data:f})}if(n.length>0){var g=function(e,t){var r=e[0].schain,n={id:e[0].bidderRequestId,at:1,imp:e.map((function(e){return function(e){var t=(0,a.Z)(e,"ortb2Imp.ext.data.pbadslot"),r=function(e){var t=(0,a.Z)(e,"mediaTypes.video.playerSize");if((0,i.isArrayOfNums)(t,2))return t;if((0,i.isArray)(t)&&(0,i.isArrayOfNums)(t[0],2))return t[0];return null}(e),n={id:e.bidId,tagid:e.adUnitCode,bidfloor:Z(e,c.pX),ext:{placement_id:e.params.placementId,tid:(0,a.Z)(e,"ortb2Imp.ext.tid")},video:{w:r[0],h:r[1],linearity:1}},o=(0,a.Z)(e,"mediaTypes.video");Object.keys(o).filter((function(e){return(0,s.q9)(h,e)})).forEach((function(e){return n.video[e]=o[e]}));var u=(0,a.Z)(e,"params.video");Object.keys(u).filter((function(e){return(0,s.q9)(h,e)})).forEach((function(e){return n.video[e]=u[e]})),n.video.skippable&&(n.video.skip=1,delete n.video.skippable);1!==n.video.placement&&(n.video.startdelay=0,n.video.playbackmethod=[2]);t&&(n.ext.gpid=t);return n}(e)})),site:T(e[0],t),device:S(e[0]),badv:e[0].params.badv||[],bcat:(0,a.Z)(t,"bcat")||e[0].params.bcat||[],ext:{prebid:"7.18.0"},ats_envelope:e[0].params.lr_env};r&&(n.schain=r);e[0].auctionId&&(n.auctionId=e[0].auctionId);return function(e,t){var r=t.gdprConsent;r&&"gdprApplies"in r&&((0,o.N)(e,"regs.ext.gdpr",r.gdprApplies?1:0),(0,o.N)(e,"user.ext.consent",r.consentString));var n=(0,a.Z)(t,"uspConsent");n&&(0,o.N)(e,"regs.ext.us_privacy",n)}(n,t),n}(n,t);d.length&&(g.user={eids:d}),u.push({method:"POST",url:"https://ads.yieldmo.com/exchange/prebidvideo",data:g})}return u},interpretResponse:function(e,t){var r=[],n=e.body;(n.length>0&&n.forEach((function(e){e.cpm>0&&r.push(function(e){return{dealId:e.publisherDealId,requestId:e.callback_id,cpm:e.cpm,width:e.width,height:e.height,creativeId:e.creative_id,currency:f,netRevenue:l,ttl:300,ad:e.ad,meta:{advertiserDomains:e.adomain||[],mediaType:c.Mk}}}(e))})),n.seatbid)&&n.seatbid.reduce((function(e,t){return e.concat(t.bid)}),[]).forEach((function(e){return r.push(function(e,t){var r=(0,s.sE)((0,a.Z)(t,"data.imp")||[],(function(t){return t.id===e.impid})),n={dealId:e.dealid,requestId:r.id,cpm:e.price,width:r.video.w,height:r.video.h,creativeId:e.crid||e.adid,currency:f,netRevenue:l,mediaType:c.pX,ttl:m,vastXml:e.adm,meta:{advertiserDomains:e.adomain||[],mediaType:c.pX}};if(r.video.placement&&1!==r.video.placement){var i=d.Th.install({url:g,config:{width:n.width,height:n.height,vastTimeout:15e3,maxAllowedVastTagRedirects:5,allowVpaid:!0,autoPlay:!0,preload:!0,mute:!0},id:r.tagid,loaded:!1});i.setRender((function(e){e.renderer.push((function(){var t=e.renderer,r=t.id,n=t.config;window.YMoutstreamPlayer(e,r,n)}))})),n.renderer=i}return n}(e,t))}));return r},getUserSyncs:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",i=[],a="&gdpr=".concat(r.gdprApplies?1:0),o="&gdpr_consent=".concat(encodeURIComponent(r.consentString||"")),c="us_privacy=".concat(encodeURIComponent(n)),u="".concat(v,"?").concat(c).concat(a).concat(o);return e.iframeEnabled?i.push({type:"iframe",url:u+"&type=iframe"}):e.pixelEnabled&&i.push({type:"image",url:u+"&type=image"}),i}};function w(e){return!!(0,a.Z)(e,"mediaTypes.banner")}function E(e){return!!(0,a.Z)(e,"mediaTypes.video")}function A(){return document.querySelector('meta[name="description"]')&&document.querySelector('meta[name="description"]').getAttribute("content")||""}function O(e,t){return"object"===(0,n.Z)((0,a.Z)(e,"userId"))?e.userId[t]:void 0}function Z(e,t){var r={};return"function"==typeof e.getFloor&&(r=e.getFloor({currency:f,mediaType:t,size:"*"})),r.floor||e.params.bidfloor||e.params.bidFloor||0}function T(e,t){var r,n={},o=(0,i.parseUrl)((0,a.Z)(t,"refererInfo.page"));(0,i.isEmpty)(o)||(n.page="".concat(o.protocol,"://").concat(o.hostname).concat(o.pathname)),null!==(r=t.refererInfo)&&void 0!==r&&r.ref&&(n.ref=t.refererInfo.ref);var c=document.getElementsByTagName("meta").keywords;c&&c.content&&(n.keywords=c.content);var u=(0,a.Z)(e,"params.site");return u&&Object.keys(u).filter((function(e){return(0,s.q9)(b,e)})).forEach((function(e){return n[e]=u[e]})),n}function S(e){return{ua:navigator.userAgent,language:navigator.language||navigator.browserLanguage||navigator.userLanguage||navigator.systemLanguage}}function j(e,t,r){if(t[r].length>e)return t[r]=t[r].substring(0,t[r].length-e),0;var n=e-t[r].length;return t[r]="",n}(0,u.dX)(k),window.pbjs.installedModules.push("yieldmoBidAdapter")}},function(e){var t;t=55511,e(e.s=t)}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[4572],{83519:function(e,t,n){var a=n(64358),i=n(48928),o=n(64563),r=n(5644),d=n(9528),s=n(18621),c=n(78653),u={},v={},g={},f={};f[r.FP.BID_ADJUSTMENT]=!0,f[r.FP.BIDDER_DONE]=!0,f[r.FP.AUCTION_END]=!0;var l="",p="https://pool.tsukiji.iponweb.net/hba",b="";function I(e,t){e.adUnitCode&&t[e.adUnitCode]&&(e.adUnitName=t[e.adUnitCode]),(0,a.isArray)(e.adUnits)&&e.adUnits.forEach((function(e){e.code&&t[e.code]&&(e.name=t[e.code])})),(0,a.isArray)(e.adUnitCodes)&&(e.adUnitNames=e.adUnitCodes.map((function(e){return t[e]}))),["bids","bidderRequests","bidsReceived","noBids"].forEach((function(n){!function(e,t){(0,a.isArray)(e)&&e.forEach((function(e){I(e,t)}))}(e[n],t)}))}var h=Object.assign((0,o.Z)({analyticsType:"endpoint"}),{getUrl:function(){return p},track:function(e){var t=e.eventType,n=e.args,i=void 0===n?{}:n;if(t===r.FP.BID_REQUESTED){var o="".concat(i.bidderCode,"_").concat(i.auctionId);u[o]=(0,a.deepClone)(i),u[o].bids=[],i.bids.forEach((function(e){v["".concat(e.bidId,"_").concat(e.auctionId)]=e}))}if(t===r.FP.BID_TIMEOUT&&(0,a.isArray)(i)){var d=h.eventsStorage,p={};i.forEach((function(e){var n="".concat(e.bidId,"_").concat(e.auctionId),a="".concat(e.bidder,"_").concat(e.auctionId);d[e.auctionId]||(d[e.auctionId]={events:[]}),(u[a]||p[e.bidder])&&v[n]&&(p[e.bidder]||(p[e.bidder]=u[a],d[e.auctionId].events.push({eventType:t,params:p[e.bidder]}),delete u[a]),p[e.bidder].bids.push(v[n]),delete v[n])}))}else if(l=i.auctionId||l){var S=h.eventsStorage;S[l]||(S[l]={events:[]});var y=i.refererInfo&&i.refererInfo.page;y&&g[l]!==y&&(g[l]=y);var E=Object.assign({},i);if(delete E.ad,E.bidsReceived&&(E.bidsReceived=E.bidsReceived.map((function(e){var t=Object.assign({},e);return delete t.ad,t}))),f[t]||S[l].events.push({eventType:t,params:E}),t===r.FP.AUCTION_END||t===r.FP.BID_WON){if(E.adServerTargeting=s.q0.getAllTargeting(c.K.getAdUnitCodes(),c.K.getBidsReceived()),h.eventsStorage[l]&&h.eventsStorage[l].events.length){h.eventsStorage[l].page={url:g[l]},h.eventsStorage[l].pubId=b,h.eventsStorage[l].wrapper_version="7.16.0";var A=function(){if(window.googletag&&window.googletag.pubads){var e=googletag.pubads();if(e&&e.getSlots){var t=e.getSlots();if(t&&t.length){var n={};return t.forEach((function(e){var t=e.getSlotElementId(),a=(e.getAdUnitPath()||"").split("/").pop();n[t]=a})),n}}}}();A&&h.eventsStorage[l].events.forEach((function(e){I(e.params,A)}))}h.sendStat(h.eventsStorage[l],l)}}},sendStat:function(e,t){e&&e.events&&e.events.length&&(delete h.eventsStorage[t],(0,i.h)(p,{success:function(){},error:function(){}},JSON.stringify(e),{method:"POST"}))}});h.eventsStorage={},h.originEnableAnalytics=h.enableAnalytics,h.enableAnalytics=function(e){var t=e&&e.options;t&&("string"==typeof t.url&&(p=t.url),t.pubId&&(b=t.pubId.toString())),h.originEnableAnalytics(e)},d.ZP.registerAnalyticsAdapter({adapter:h,code:"yieldone"});window.pbjs.installedModules.push("yieldoneAnalyticsAdapter")}},function(e){e.O(0,[4861],(function(){return t=83519,e(e.s=t);var t}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[4572],{83519:function(e,t,n){var a=n(64358),i=n(48928),o=n(64563),r=n(5644),d=n(9528),s=n(18621),c=n(78653),u={},v={},g={},f={};f[r.FP.BID_ADJUSTMENT]=!0,f[r.FP.BIDDER_DONE]=!0,f[r.FP.AUCTION_END]=!0;var l="",p="https://pool.tsukiji.iponweb.net/hba",b="";function I(e,t){e.adUnitCode&&t[e.adUnitCode]&&(e.adUnitName=t[e.adUnitCode]),(0,a.isArray)(e.adUnits)&&e.adUnits.forEach((function(e){e.code&&t[e.code]&&(e.name=t[e.code])})),(0,a.isArray)(e.adUnitCodes)&&(e.adUnitNames=e.adUnitCodes.map((function(e){return t[e]}))),["bids","bidderRequests","bidsReceived","noBids"].forEach((function(n){!function(e,t){(0,a.isArray)(e)&&e.forEach((function(e){I(e,t)}))}(e[n],t)}))}var h=Object.assign((0,o.Z)({analyticsType:"endpoint"}),{getUrl:function(){return p},track:function(e){var t=e.eventType,n=e.args,i=void 0===n?{}:n;if(t===r.FP.BID_REQUESTED){var o="".concat(i.bidderCode,"_").concat(i.auctionId);u[o]=(0,a.deepClone)(i),u[o].bids=[],i.bids.forEach((function(e){v["".concat(e.bidId,"_").concat(e.auctionId)]=e}))}if(t===r.FP.BID_TIMEOUT&&(0,a.isArray)(i)){var d=h.eventsStorage,p={};i.forEach((function(e){var n="".concat(e.bidId,"_").concat(e.auctionId),a="".concat(e.bidder,"_").concat(e.auctionId);d[e.auctionId]||(d[e.auctionId]={events:[]}),(u[a]||p[e.bidder])&&v[n]&&(p[e.bidder]||(p[e.bidder]=u[a],d[e.auctionId].events.push({eventType:t,params:p[e.bidder]}),delete u[a]),p[e.bidder].bids.push(v[n]),delete v[n])}))}else if(l=i.auctionId||l){var S=h.eventsStorage;S[l]||(S[l]={events:[]});var y=i.refererInfo&&i.refererInfo.page;y&&g[l]!==y&&(g[l]=y);var E=Object.assign({},i);if(delete E.ad,E.bidsReceived&&(E.bidsReceived=E.bidsReceived.map((function(e){var t=Object.assign({},e);return delete t.ad,t}))),f[t]||S[l].events.push({eventType:t,params:E}),t===r.FP.AUCTION_END||t===r.FP.BID_WON){if(E.adServerTargeting=s.q0.getAllTargeting(c.K.getAdUnitCodes(),c.K.getBidsReceived()),h.eventsStorage[l]&&h.eventsStorage[l].events.length){h.eventsStorage[l].page={url:g[l]},h.eventsStorage[l].pubId=b,h.eventsStorage[l].wrapper_version="7.18.0";var A=function(){if(window.googletag&&window.googletag.pubads){var e=googletag.pubads();if(e&&e.getSlots){var t=e.getSlots();if(t&&t.length){var n={};return t.forEach((function(e){var t=e.getSlotElementId(),a=(e.getAdUnitPath()||"").split("/").pop();n[t]=a})),n}}}}();A&&h.eventsStorage[l].events.forEach((function(e){I(e.params,A)}))}h.sendStat(h.eventsStorage[l],l)}}},sendStat:function(e,t){e&&e.events&&e.events.length&&(delete h.eventsStorage[t],(0,i.h)(p,{success:function(){},error:function(){}},JSON.stringify(e),{method:"POST"}))}});h.eventsStorage={},h.originEnableAnalytics=h.enableAnalytics,h.enableAnalytics=function(e){var t=e&&e.options;t&&("string"==typeof t.url&&(p=t.url),t.pubId&&(b=t.pubId.toString())),h.originEnableAnalytics(e)},d.ZP.registerAnalyticsAdapter({adapter:h,code:"yieldone"});window.pbjs.installedModules.push("yieldoneAnalyticsAdapter")}},function(e){e.O(0,[4861],(function(){return t=83519,e(e.s=t);var t}));e.O()}]);
@@ -81,9 +81,7 @@ function setBrowsers(karmaConf, browserstack) {
81
81
  karmaConf.browserStack = {
82
82
  username: process.env.BROWSERSTACK_USERNAME,
83
83
  accessKey: process.env.BROWSERSTACK_ACCESS_KEY,
84
- build: 'Prebidjs Unit Tests ' + new Date().toLocaleString(),
85
- startTunnel: false,
86
- localIdentifier: process.env.CIRCLE_WORKFLOW_JOB_ID
84
+ build: 'Prebidjs Unit Tests ' + new Date().toLocaleString()
87
85
  }
88
86
  if (process.env.TRAVIS) {
89
87
  karmaConf.browserStack.startTunnel = false;
@@ -173,7 +171,7 @@ module.exports = function(codeCoverage, browserstack, watchMode, file, disableFe
173
171
  browserNoActivityTimeout: 3e5, // default 10000
174
172
  captureTimeout: 3e5, // default 60000,
175
173
  browserDisconnectTolerance: 3,
176
- concurrency: 6,
174
+ concurrency: 5, // browserstack allows us 5 concurrent sessions
177
175
 
178
176
  plugins: plugins
179
177
  };
@@ -57,16 +57,39 @@ export const extractConfig = (moduleConfig, reqBidsConfigObj) => {
57
57
  return { customerId, timeout, bidders };
58
58
  }
59
59
 
60
+ export const extractConsent = ({ gdpr }) => {
61
+ if (!gdpr) {
62
+ return null
63
+ }
64
+ const { gdprApplies, consentString } = gdpr
65
+ if (!(gdprApplies == '0' || gdprApplies == '1')) {
66
+ throw 'TCF Consent: gdprApplies has wrong format'
67
+ }
68
+ if (!(typeof consentString === 'string')) {
69
+ throw 'TCF Consent: consentString is not string'
70
+ }
71
+ const result = {
72
+ 'gdpr_applies': gdprApplies,
73
+ 'consent_string': consentString
74
+ }
75
+ return result
76
+ }
60
77
  /**
61
78
  * Gets the URL of Profile Api from which targeting data will be fetched
62
79
  * @param {Object} config
63
80
  * @param {string} config.customerId
64
81
  * @returns {string} URL to access 1plusX Profile API
65
82
  */
66
- const getPapiUrl = ({ customerId }) => {
83
+ export const getPapiUrl = (customerId, consent) => {
67
84
  // https://[yourClientId].profiles.tagger.opecloud.com/[VERSION]/targeting?url=
68
85
  const currentUrl = encodeURIComponent(window.location.href);
69
- const papiUrl = `https://${customerId}.profiles.tagger.opecloud.com/${PAPI_VERSION}/targeting?url=${currentUrl}`;
86
+ var papiUrl = `https://${customerId}.profiles.tagger.opecloud.com/${PAPI_VERSION}/targeting?url=${currentUrl}`;
87
+ if (consent) {
88
+ Object.entries(consent).forEach(([key, value]) => {
89
+ papiUrl += `&${key}=${value}`
90
+ })
91
+ }
92
+
70
93
  return papiUrl;
71
94
  }
72
95
 
@@ -216,14 +239,14 @@ const init = (config, userConsent) => {
216
239
  * @param {Object} reqBidsConfigObj Bid request configuration object
217
240
  * @param {Function} callback Called on completion
218
241
  * @param {Object} moduleConfig Configuration for 1plusX RTD module
219
- * @param {boolean} userConsent
242
+ * @param {Object} userConsent
220
243
  */
221
244
  const getBidRequestData = (reqBidsConfigObj, callback, moduleConfig, userConsent) => {
222
245
  try {
223
246
  // Get the required config
224
247
  const { customerId, bidders } = extractConfig(moduleConfig, reqBidsConfigObj);
225
248
  // Get PAPI URL
226
- const papiUrl = getPapiUrl({ customerId })
249
+ const papiUrl = getPapiUrl(customerId, extractConsent(userConsent) || {})
227
250
  // Call PAPI
228
251
  getTargetingDataFromPapi(papiUrl)
229
252
  .then((papiResponse) => {
@@ -231,9 +254,6 @@ const getBidRequestData = (reqBidsConfigObj, callback, moduleConfig, userConsent
231
254
  setTargetingDataToConfig(papiResponse, { bidders });
232
255
  callback();
233
256
  })
234
- .catch((error) => {
235
- throw error;
236
- })
237
257
  } catch (error) {
238
258
  logError(LOG_PREFIX, error);
239
259
  callback();
@@ -532,7 +532,12 @@ function _parseNativeBidResponse(bid) {
532
532
  native.impressionTrackers.push(tracker.url);
533
533
  break;
534
534
  case 2:
535
- native.javascriptTrackers = `<script src=\"${tracker.url}\"></script>`;
535
+ const script = `<script async src=\"${tracker.url}\"></script>`;
536
+ if (!native.javascriptTrackers) {
537
+ native.javascriptTrackers = script;
538
+ } else {
539
+ native.javascriptTrackers += `\n${script}`;
540
+ }
536
541
  break;
537
542
  }
538
543
  });
@@ -623,7 +628,16 @@ export function setExtraParam(bid, paramName) {
623
628
 
624
629
  const detected = adgGlobalConf[paramName] || deepAccess(ortb2Conf, `site.ext.data.${paramName}`, null);
625
630
  if (detected) {
626
- bid.params[paramName] = detected;
631
+ // First Party Data can be an array.
632
+ // As we consider that params detected from FPD are fallbacks, we just keep the 1st value.
633
+ if (Array.isArray(detected)) {
634
+ if (detected.length) {
635
+ bid.params[paramName] = detected[0].toString();
636
+ }
637
+ return;
638
+ }
639
+
640
+ bid.params[paramName] = detected.toString();
627
641
  }
628
642
  }
629
643
 
@@ -780,9 +794,10 @@ function getSlotPosition(adUnitElementId) {
780
794
 
781
795
  if (mustDisplayElement) {
782
796
  domElement.style = domElement.style || {};
797
+ const originalDisplay = domElement.style.display;
783
798
  domElement.style.display = 'block';
784
799
  box = domElement.getBoundingClientRect();
785
- domElement.style.display = elComputedDisplay;
800
+ domElement.style.display = originalDisplay || null;
786
801
  }
787
802
  position.x = Math.round(box.left + scrollLeft - clientLeft);
788
803
  position.y = Math.round(box.top + scrollTop - clientTop);
@@ -10,7 +10,7 @@ Connects to Adagio demand source to fetch bids.
10
10
 
11
11
  ## Configuration
12
12
 
13
- Adagio require several params. These params must be set at Prebid.js global config level or at adUnit level.
13
+ Adagio require several params. These params must be set at Prebid.js BidderConfig config level or at adUnit level.
14
14
 
15
15
  Below, the list of Adagio params and where they can be set.
16
16
 
@@ -58,6 +58,16 @@ pbjs.setConfig({
58
58
  });
59
59
  ```
60
60
 
61
+ #### Note on FPD support
62
+
63
+ Adagio will use FPD data as fallback for the params below:
64
+ - pagetype
65
+ - environment
66
+ - category
67
+ - subcategory
68
+
69
+ If the FPD value is an array, the 1st value of this array will be used.
70
+
61
71
  ### adUnit configuration
62
72
 
63
73
  ```javascript
@@ -1,6 +1,6 @@
1
1
  import {registerBidder} from '../src/adapters/bidderFactory.js';
2
2
  import {BANNER} from '../src/mediaTypes.js';
3
- import { logInfo, buildUrl, triggerPixel } from '../src/utils.js';
3
+ import { logInfo, buildUrl, triggerPixel, parseSizesInput } from '../src/utils.js';
4
4
  import { getStorageManager } from '../src/storageManager.js';
5
5
 
6
6
  const ADQUERY_GVLID = 902;
@@ -24,7 +24,7 @@ export const spec = {
24
24
  * @return {boolean}
25
25
  */
26
26
  isBidRequestValid: (bid) => {
27
- return !!(bid && bid.params && bid.params.placementId)
27
+ return !!(bid && bid.params && bid.params.placementId && bid.mediaTypes.banner.sizes)
28
28
  },
29
29
 
30
30
  /**
@@ -202,6 +202,8 @@ function buildRequest(validBidRequests, bidderRequest) {
202
202
  bidderRequestId: bid.bidderRequestId,
203
203
  bidRequestsCount: bid.bidRequestsCount,
204
204
  bidderRequestsCount: bid.bidderRequestsCount,
205
+ sizes: parseSizesInput(bid.mediaTypes.banner.sizes).toString(),
206
+
205
207
  };
206
208
  }
207
209
 
@@ -250,10 +250,10 @@ export const spec = {
250
250
  // need to convert the string values into array of strings, to properly merge values with other existing keys later
251
251
  Object.keys(anAuctionKeywords).forEach(k => { if (isStr(anAuctionKeywords[k]) || isNumber(anAuctionKeywords[k])) anAuctionKeywords[k] = [anAuctionKeywords[k]] });
252
252
  // combine all sources of keywords (converted from string comma list to object format) into one object (that combines the values for shared keys)
253
- let mergedAuctionKeywrds = mergeDeep({}, anAuctionKeywords, ...ortb2KeywordsObjList);
253
+ let mergedAuctionKeywords = mergeDeep({}, anAuctionKeywords, ...ortb2KeywordsObjList);
254
254
 
255
255
  // convert to final format used by adserver
256
- let auctionKeywords = transformBidderParamKeywords(mergedAuctionKeywrds);
256
+ let auctionKeywords = transformBidderParamKeywords(mergedAuctionKeywords);
257
257
  if (auctionKeywords.length > 0) {
258
258
  auctionKeywords.forEach(deleteValues);
259
259
  payload.keywords = auctionKeywords;
@@ -1202,28 +1202,30 @@ function convertKeywordsToString(keywords) {
1202
1202
  function convertStringToKeywordsObj(keyStr) {
1203
1203
  let result = {};
1204
1204
 
1205
- // will split based on commas and will eat white space before/after the comma
1206
- let keywordList = keyStr.split(/\s*(?:,)\s*/);
1207
- keywordList.forEach(kw => {
1208
- // if = exists, then split
1209
- if (kw.indexOf('=') !== -1) {
1210
- let kwPair = kw.split('=');
1211
- let key = kwPair[0];
1212
- let val = kwPair[1];
1213
-
1214
- // then check for existing key in result > if so add value to the array > if not, add new key and create value array
1215
- if (result.hasOwnProperty(key)) {
1216
- result[key].push(val);
1205
+ if (isStr(keyStr) && keyStr !== '') {
1206
+ // will split based on commas and will eat white space before/after the comma
1207
+ let keywordList = keyStr.split(/\s*(?:,)\s*/);
1208
+ keywordList.forEach(kw => {
1209
+ // if = exists, then split
1210
+ if (kw.indexOf('=') !== -1) {
1211
+ let kwPair = kw.split('=');
1212
+ let key = kwPair[0];
1213
+ let val = kwPair[1];
1214
+
1215
+ // then check for existing key in result > if so add value to the array > if not, add new key and create value array
1216
+ if (result.hasOwnProperty(key)) {
1217
+ result[key].push(val);
1218
+ } else {
1219
+ result[key] = [val];
1220
+ }
1217
1221
  } else {
1218
- result[key] = [val];
1219
- }
1220
- } else {
1221
- // make a key with '' value; if key already exists > don't add
1222
- if (!result.hasOwnProperty(kw)) {
1223
- result[kw] = [''];
1222
+ // make a key with '' value; if key already exists > don't add
1223
+ if (!result.hasOwnProperty(kw)) {
1224
+ result[kw] = [''];
1225
+ }
1224
1226
  }
1225
- }
1226
- });
1227
+ });
1228
+ }
1227
1229
 
1228
1230
  return result;
1229
1231
  }
@@ -21,7 +21,7 @@ let allEvents = {}
21
21
  let auctionEnd = {}
22
22
  let initOptions = {}
23
23
  let endpoint = 'https://default'
24
- let requestsAttributes = ['adUnitCode', 'auctionId', 'bidder', 'bidderCode', 'bidId', 'cpm', 'creativeId', 'currency', 'width', 'height', 'mediaType', 'netRevenue', 'originalCpm', 'originalCurrency', 'requestId', 'size', 'source', 'status', 'timeToRespond', 'transactionId', 'ttl', 'sizes', 'mediaTypes', 'src', 'params', 'userId', 'labelAny', 'bids'];
24
+ let requestsAttributes = ['adUnitCode', 'auctionId', 'bidder', 'bidderCode', 'bidId', 'cpm', 'creativeId', 'currency', 'width', 'height', 'mediaType', 'netRevenue', 'originalCpm', 'originalCurrency', 'requestId', 'size', 'source', 'status', 'timeToRespond', 'transactionId', 'ttl', 'sizes', 'mediaTypes', 'src', 'params', 'userId', 'labelAny', 'bids', 'adId'];
25
25
 
26
26
  function getAdapterNameForAlias(aliasName) {
27
27
  return adapterManager.aliasRegistry[aliasName] || aliasName;
@@ -0,0 +1,217 @@
1
+ // jshint esversion: 6, es3: false, node: true
2
+ 'use strict'
3
+
4
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
5
+ import { BANNER, VIDEO } from '../src/mediaTypes.js';
6
+ import {
7
+ deepAccess,
8
+ deepSetValue,
9
+ logError,
10
+ mergeDeep,
11
+ parseSizesInput
12
+ } from '../src/utils.js';
13
+ import { config } from '../src/config.js';
14
+
15
+ const { getConfig } = config;
16
+
17
+ const BIDDER_CODE = 'caroda';
18
+ const GVLID = 954;
19
+
20
+ // some state info is required to synchronize with Caroda ad server
21
+ const topUsableWindow = getTopUsableWindow();
22
+
23
+ export const spec = {
24
+ code: BIDDER_CODE,
25
+ gvlid: GVLID,
26
+ supportedMediaTypes: [BANNER, VIDEO],
27
+ isBidRequestValid: bid => {
28
+ const params = bid.params || {};
29
+ const { ctok, placementId, priceType } = params;
30
+ return typeof ctok === 'string' && (
31
+ typeof placementId === 'string' ||
32
+ typeof placementId === 'undefined'
33
+ ) && (
34
+ typeof priceType === 'undefined' ||
35
+ priceType === 'gross' ||
36
+ priceType === 'net'
37
+ );
38
+ },
39
+ buildRequests: (validBidRequests, bidderRequest) => {
40
+ topUsableWindow.carodaPageViewId = topUsableWindow.carodaPageViewId || Math.floor(Math.random() * 1e9);
41
+ const pageViewId = topUsableWindow.carodaPageViewId;
42
+ const ortbCommon = getORTBCommon(bidderRequest);
43
+ const priceType =
44
+ getFirstWithKey(validBidRequests, 'params.priceType') ||
45
+ 'net';
46
+ const test = getFirstWithKey(validBidRequests, 'params.test');
47
+ const currency = getConfig('currency.adServerCurrency');
48
+ const eids = getFirstWithKey(validBidRequests, 'userIdAsEids');
49
+ const schain = getFirstWithKey(validBidRequests, 'schain');
50
+ const request = {
51
+ auctionId: bidderRequest.auctionId,
52
+ currency,
53
+ hb_version: '$prebid.version$',
54
+ ...ortbCommon,
55
+ price_type: priceType
56
+ };
57
+ if (test) {
58
+ request.test = 1;
59
+ }
60
+ if (schain) {
61
+ request.schain = schain;
62
+ }
63
+ if (config.getConfig('coppa')) {
64
+ deepSetValue(request, 'privacy.coppa', 1);
65
+ }
66
+ if (deepAccess(bidderRequest, 'gdprConsent.gdprApplies') !== undefined) {
67
+ deepSetValue(
68
+ request,
69
+ 'privacy.gdpr_consent',
70
+ bidderRequest.gdprConsent.consentString
71
+ );
72
+ deepSetValue(
73
+ request,
74
+ 'privacy.gdpr',
75
+ bidderRequest.gdprConsent.gdprApplies & 1
76
+ );
77
+ }
78
+ if (bidderRequest.uspConsent) {
79
+ deepSetValue(request, 'privacy.us_privacy', bidderRequest.uspConsent);
80
+ }
81
+ if (eids) {
82
+ deepSetValue(request, 'user.eids', eids);
83
+ }
84
+ return getImps(validBidRequests, request).map(imp => ({
85
+ method: 'POST',
86
+ url: 'https://prebid.caroda.io/api/hb?entry_id=' + pageViewId,
87
+ data: JSON.stringify(imp)
88
+ }));
89
+ },
90
+ interpretResponse: (serverResponse) => {
91
+ if (!serverResponse.body) {
92
+ return;
93
+ }
94
+ const { ok, error } = serverResponse.body
95
+ if (error) {
96
+ logError(BIDDER_CODE, ': server caught', error.message);
97
+ return;
98
+ }
99
+ try {
100
+ return JSON.parse(ok.value)
101
+ .map((bid) => {
102
+ const ret = {
103
+ requestId: bid.bid_id,
104
+ cpm: bid.cpm,
105
+ creativeId: bid.creative_id,
106
+ ttl: 300,
107
+ netRevenue: true,
108
+ currency: bid.currency,
109
+ width: bid.w,
110
+ height: bid.h,
111
+ meta: {
112
+ advertiserDomains: bid.adomain || []
113
+ },
114
+ ad: bid.ad,
115
+ placementId: bid.placement_id
116
+ }
117
+ if (bid.adserver_targeting) {
118
+ ret.adserverTargeting = bid.adserver_targeting
119
+ }
120
+ return ret
121
+ })
122
+ .filter(Boolean);
123
+ } catch (e) {
124
+ logError(BIDDER_CODE, ': caught', e);
125
+ }
126
+ }
127
+ }
128
+
129
+ registerBidder(spec)
130
+
131
+ function getFirstWithKey (collection, key) {
132
+ for (let i = 0, result; i < collection.length; i++) {
133
+ result = deepAccess(collection[i], key);
134
+ if (result) {
135
+ return result;
136
+ }
137
+ }
138
+ }
139
+
140
+ function getTopUsableWindow () {
141
+ let res = window;
142
+ try {
143
+ while (window.top !== res && res.parent.location.href.length) {
144
+ res = res.parent;
145
+ }
146
+ } catch (e) {}
147
+ return res;
148
+ }
149
+
150
+ function getORTBCommon (bidderRequest) {
151
+ let app, site;
152
+ const commonFpd = bidderRequest.ortb2 || {};
153
+ let { user } = commonFpd;
154
+ if (typeof getConfig('app') === 'object') {
155
+ app = getConfig('app') || {}
156
+ if (commonFpd.app) {
157
+ mergeDeep(app, commonFpd.app);
158
+ }
159
+ } else {
160
+ site = getConfig('site') || {};
161
+ if (commonFpd.site) {
162
+ mergeDeep(site, commonFpd.site);
163
+ }
164
+ if (!site.page) {
165
+ site.page = bidderRequest.refererInfo.page;
166
+ }
167
+ }
168
+ const device = getConfig('device') || {};
169
+ device.w = device.w || window.innerWidth;
170
+ device.h = device.h || window.innerHeight;
171
+ device.ua = device.ua || navigator.userAgent;
172
+ return {
173
+ app,
174
+ site,
175
+ user,
176
+ device
177
+ };
178
+ }
179
+
180
+ function getImps (validBidRequests, common) {
181
+ return validBidRequests.map((bid) => {
182
+ const floorInfo = bid.getFloor
183
+ ? bid.getFloor({ currency: common.currency || 'EUR' })
184
+ : {};
185
+ const bidfloor = floorInfo.floor;
186
+ const bidfloorcur = floorInfo.currency;
187
+ const { ctok, placementId } = bid.params;
188
+ const imp = {
189
+ bid_id: bid.bidId,
190
+ ctok,
191
+ bidfloor,
192
+ bidfloorcur,
193
+ ...common
194
+ };
195
+ const bannerParams = deepAccess(bid, 'mediaTypes.banner');
196
+ if (bannerParams && bannerParams.sizes) {
197
+ const sizes = parseSizesInput(bannerParams.sizes);
198
+ const format = sizes.map(size => {
199
+ const [width, height] = size.split('x');
200
+ const w = parseInt(width, 10);
201
+ const h = parseInt(height, 10);
202
+ return { w, h };
203
+ });
204
+ imp.banner = {
205
+ format
206
+ };
207
+ }
208
+ if (placementId) {
209
+ imp.placement_id = placementId;
210
+ }
211
+ const videoParams = deepAccess(bid, 'mediaTypes.video');
212
+ if (videoParams) {
213
+ imp.video = videoParams;
214
+ }
215
+ return imp;
216
+ })
217
+ }
@@ -0,0 +1,43 @@
1
+ # Overview
2
+
3
+ Module Name: Caroda Adapter
4
+ Module Type: Bidder Adapter
5
+ Maintainer: dev@caroda.io
6
+
7
+ # Description
8
+
9
+ Module that connects to Caroda demand sources to fetch bids.
10
+ Banner and video formats are supported.
11
+ Use `caroda` as bidder.
12
+
13
+ # Test Parameters
14
+ ```
15
+ var adUnits = [{
16
+ code: '/19968336/prebid_banner_example_1',
17
+ mediaTypes: {
18
+ banner: {
19
+ sizes: [[ 300, 250 ]]
20
+ }
21
+ }
22
+ bids: [{
23
+ bidder: 'caroda',
24
+ params: {
25
+ ctok: '230ce9490c5434354'
26
+ }
27
+ }]
28
+ }, {
29
+ code: '/19968336/prebid_video_example_1',
30
+ mediaTypes: {
31
+ video: {
32
+ context: 'outstream',
33
+ mimes: ['video/mp4']
34
+ }
35
+ }
36
+ bids: [{
37
+ bidder: 'caroda',
38
+ params: {
39
+ ctok: '230ce9490c5434354'
40
+ }
41
+ }]
42
+ }];
43
+ ```
@@ -39,7 +39,7 @@ let hasSynced = false;
39
39
 
40
40
  export const spec = {
41
41
  code: BIDDER_CODE,
42
- aliases: ['playwire', 'adlivetech', 'trustx'],
42
+ aliases: ['playwire', 'adlivetech', { code: 'trustx', skipPbsAliasing: true }],
43
43
  supportedMediaTypes: [ BANNER, VIDEO ],
44
44
  /**
45
45
  * Determines whether or not the given bid request is valid.