prebid.js 9.7.0 → 9.9.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 (255) hide show
  1. package/.github/codeql/codeql-config.yml +3 -0
  2. package/.github/codeql/queries/deviceMemory.ql +14 -0
  3. package/.github/codeql/queries/hardwareConcurrency.ql +14 -0
  4. package/.github/codeql/queries/prebid.qll +36 -0
  5. package/.github/codeql/queries/qlpack.yml +8 -0
  6. package/.github/workflows/jscpd.yml +1 -1
  7. package/dist/33acrossAnalyticsAdapter.js +1 -1
  8. package/dist/33acrossBidAdapter.js +1 -1
  9. package/dist/33acrossIdSystem.js +1 -1
  10. package/dist/BTBidAdapter.js +1 -1
  11. package/dist/adagioAnalyticsAdapter.js +1 -1
  12. package/dist/adagioBidAdapter.js +1 -1
  13. package/dist/adagioUtils.js +1 -1
  14. package/dist/addefendBidAdapter.js +1 -1
  15. package/dist/adgenerationBidAdapter.js +1 -1
  16. package/dist/adlooxRtdProvider.js +1 -1
  17. package/dist/admixerBidAdapter.js +1 -1
  18. package/dist/adqueryBidAdapter.js +1 -1
  19. package/dist/adrelevantisBidAdapter.js +1 -1
  20. package/dist/adstirBidAdapter.js +1 -1
  21. package/dist/adtrgtmeBidAdapter.js +1 -1
  22. package/dist/adxcgAnalyticsAdapter.js +1 -1
  23. package/dist/adxcgBidAdapter.js +1 -1
  24. package/dist/adyoulikeBidAdapter.js +1 -1
  25. package/dist/agmaAnalyticsAdapter.js +1 -1
  26. package/dist/ajaBidAdapter.js +1 -1
  27. package/dist/amxBidAdapter.js +1 -1
  28. package/dist/amxIdSystem.js +1 -1
  29. package/dist/appierAnalyticsAdapter.js +1 -1
  30. package/dist/appnexusBidAdapter.js +1 -1
  31. package/dist/asoBidAdapter.js +1 -1
  32. package/dist/axonixBidAdapter.js +1 -1
  33. package/dist/bidglassBidAdapter.js +1 -1
  34. package/dist/big-richmediaBidAdapter.js +1 -1
  35. package/dist/bridBidAdapter.js +1 -1
  36. package/dist/bridgewellBidAdapter.js +1 -1
  37. package/dist/brightMountainMediaBidAdapter.js +1 -1
  38. package/dist/carodaBidAdapter.js +1 -1
  39. package/dist/ccxBidAdapter.js +1 -1
  40. package/dist/chtnwBidAdapter.js +1 -1
  41. package/dist/chunk-core.js +1 -1
  42. package/dist/concertBidAdapter.js +1 -1
  43. package/dist/connectadBidAdapter.js +1 -1
  44. package/dist/consumableBidAdapter.js +1 -1
  45. package/dist/contxtfulRtdProvider.js +1 -1
  46. package/dist/conversantAnalyticsAdapter.js +1 -1
  47. package/dist/conversantBidAdapter.js +1 -1
  48. package/dist/craftBidAdapter.js +1 -1
  49. package/dist/criteoBidAdapter.js +1 -1
  50. package/dist/cwireBidAdapter.js +1 -1
  51. package/dist/dailymotionBidAdapter.js +1 -1
  52. package/dist/dependencies.json +19 -4
  53. package/dist/discoveryBidAdapter.js +1 -1
  54. package/dist/docereeAdManagerBidAdapter.js +1 -1
  55. package/dist/dspxBidAdapter.js +1 -1
  56. package/dist/dxkultureBidAdapter.js +1 -1
  57. package/dist/eclickadsBidAdapter.js +1 -0
  58. package/dist/eightPodAnalyticsAdapter.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/euidIdSystem.js +1 -1
  61. package/dist/exadsBidAdapter.js +1 -1
  62. package/dist/feedadBidAdapter.js +1 -1
  63. package/dist/finativeBidAdapter.js +1 -1
  64. package/dist/freewheel-sspBidAdapter.js +1 -1
  65. package/dist/gmosspBidAdapter.js +1 -1
  66. package/dist/goldbachBidAdapter.js +1 -1
  67. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  68. package/dist/greenbidsRtdProvider.js +1 -1
  69. package/dist/gridBidAdapter.js +1 -1
  70. package/dist/gumgumBidAdapter.js +1 -1
  71. package/dist/h12mediaBidAdapter.js +1 -1
  72. package/dist/hypelabBidAdapter.js +1 -1
  73. package/dist/id5AnalyticsAdapter.js +1 -1
  74. package/dist/id5IdSystem.js +1 -1
  75. package/dist/imdsBidAdapter.js +1 -1
  76. package/dist/improvedigitalBidAdapter.js +1 -1
  77. package/dist/insticatorBidAdapter.js +1 -1
  78. package/dist/intentIqAnalyticsAdapter.js +1 -1
  79. package/dist/ixBidAdapter.js +1 -1
  80. package/dist/jixieBidAdapter.js +1 -1
  81. package/dist/justpremiumBidAdapter.js +1 -1
  82. package/dist/kargoBidAdapter.js +1 -1
  83. package/dist/kimberliteBidAdapter.js +1 -1
  84. package/dist/konduitAnalyticsAdapter.js +1 -1
  85. package/dist/kueezBidAdapter.js +1 -1
  86. package/dist/lassoBidAdapter.js +1 -1
  87. package/dist/lifestreetBidAdapter.js +1 -1
  88. package/dist/limelightDigitalBidAdapter.js +1 -1
  89. package/dist/liveIntentIdSystem.js +1 -1
  90. package/dist/logicadBidAdapter.js +1 -1
  91. package/dist/loglyliftBidAdapter.js +1 -1
  92. package/dist/luceadBidAdapter.js +1 -1
  93. package/dist/mabidderBidAdapter.js +1 -1
  94. package/dist/magniteAnalyticsAdapter.js +1 -1
  95. package/dist/malltvAnalyticsAdapter.js +1 -1
  96. package/dist/marsmediaBidAdapter.js +1 -1
  97. package/dist/mediafuseBidAdapter.js +1 -1
  98. package/dist/mediagoBidAdapter.js +1 -1
  99. package/dist/medianetAnalyticsAdapter.js +1 -1
  100. package/dist/medianetBidAdapter.js +1 -1
  101. package/dist/mediasquareBidAdapter.js +1 -1
  102. package/dist/mgidBidAdapter.js +1 -1
  103. package/dist/mgidUtils.js +1 -0
  104. package/dist/mgidXBidAdapter.js +1 -1
  105. package/dist/missenaBidAdapter.js +1 -1
  106. package/dist/mobianRtdProvider.js +1 -1
  107. package/dist/naveggIdSystem.js +1 -1
  108. package/dist/navigatorData.js +1 -0
  109. package/dist/nexx360BidAdapter.js +1 -1
  110. package/dist/nobidAnalyticsAdapter.js +1 -1
  111. package/dist/nobidBidAdapter.js +1 -1
  112. package/dist/not-for-prod/prebid.js +174 -169
  113. package/dist/oguryBidAdapter.js +1 -1
  114. package/dist/omsBidAdapter.js +1 -1
  115. package/dist/onetagBidAdapter.js +1 -1
  116. package/dist/ooloAnalyticsAdapter.js +1 -1
  117. package/dist/openxBidAdapter.js +1 -1
  118. package/dist/optidigitalBidAdapter.js +1 -1
  119. package/dist/orbidderBidAdapter.js +1 -1
  120. package/dist/outbrainBidAdapter.js +1 -1
  121. package/dist/pixfutureBidAdapter.js +1 -1
  122. package/dist/pstudioBidAdapter.js +1 -1
  123. package/dist/publinkIdSystem.js +1 -1
  124. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  125. package/dist/pubmaticBidAdapter.js +1 -1
  126. package/dist/pubriseBidAdapter.js +1 -0
  127. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  128. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  129. package/dist/pubxaiRtdProvider.js +1 -1
  130. package/dist/pxyzBidAdapter.js +1 -1
  131. package/dist/quantcastBidAdapter.js +1 -1
  132. package/dist/readpeakBidAdapter.js +1 -1
  133. package/dist/redtramBidAdapter.js +1 -1
  134. package/dist/relaidoBidAdapter.js +1 -1
  135. package/dist/retailspotBidAdapter.js +1 -1
  136. package/dist/rhythmoneBidAdapter.js +1 -1
  137. package/dist/richaudienceBidAdapter.js +1 -1
  138. package/dist/riseUtils.js +1 -1
  139. package/dist/rubiconBidAdapter.js +1 -1
  140. package/dist/seedingAllianceBidAdapter.js +1 -1
  141. package/dist/seedtagBidAdapter.js +1 -1
  142. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  143. package/dist/sharethroughBidAdapter.js +1 -1
  144. package/dist/smaatoBidAdapter.js +1 -1
  145. package/dist/smartadserverBidAdapter.js +1 -1
  146. package/dist/smarthubBidAdapter.js +1 -1
  147. package/dist/smartxBidAdapter.js +1 -1
  148. package/dist/smilewantedBidAdapter.js +1 -1
  149. package/dist/snigelBidAdapter.js +1 -1
  150. package/dist/sonobiBidAdapter.js +1 -1
  151. package/dist/sovrnBidAdapter.js +1 -1
  152. package/dist/sspBCBidAdapter.js +1 -1
  153. package/dist/stvBidAdapter.js +1 -1
  154. package/dist/sublimeBidAdapter.js +1 -1
  155. package/dist/taboolaBidAdapter.js +1 -1
  156. package/dist/tappxBidAdapter.js +1 -1
  157. package/dist/targetVideoAdServerVideo.js +1 -0
  158. package/dist/targetVideoBidAdapter.js +1 -1
  159. package/dist/teadsBidAdapter.js +1 -1
  160. package/dist/teqblazeUtils.js +1 -1
  161. package/dist/terceptAnalyticsAdapter.js +1 -1
  162. package/dist/themoneytizerBidAdapter.js +1 -1
  163. package/dist/trionBidAdapter.js +1 -1
  164. package/dist/tripleliftBidAdapter.js +1 -1
  165. package/dist/ttdBidAdapter.js +1 -1
  166. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  167. package/dist/uid2IdSystem.js +1 -1
  168. package/dist/underdogmediaBidAdapter.js +1 -1
  169. package/dist/undertoneBidAdapter.js +1 -1
  170. package/dist/unrulyBidAdapter.js +1 -1
  171. package/dist/userId.js +1 -1
  172. package/dist/vidazooUtils.js +1 -1
  173. package/dist/videobyteBidAdapter.js +1 -1
  174. package/dist/visxBidAdapter.js +1 -1
  175. package/dist/vuukleBidAdapter.js +1 -1
  176. package/dist/widespaceBidAdapter.js +1 -1
  177. package/dist/winrBidAdapter.js +1 -1
  178. package/dist/yahooAdsBidAdapter.js +1 -1
  179. package/dist/yieldmoBidAdapter.js +1 -1
  180. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  181. package/libraries/mgidUtils/mgidUtils.js +73 -0
  182. package/{src/fpd/navigator.js → libraries/navigatorData/navigatorData.js} +1 -1
  183. package/libraries/riseUtils/index.js +1 -1
  184. package/libraries/teqblazeUtils/bidderUtils.js +1 -1
  185. package/modules/admixerBidAdapter.js +12 -5
  186. package/modules/appnexusBidAdapter.js +1 -1
  187. package/modules/ccxBidAdapter.js +6 -2
  188. package/modules/contxtfulRtdProvider.js +15 -12
  189. package/modules/cwireBidAdapter.js +13 -9
  190. package/modules/cwireBidAdapter.md +29 -10
  191. package/modules/dailymotionBidAdapter.js +1 -1
  192. package/modules/dailymotionBidAdapter.md +11 -7
  193. package/modules/discoveryBidAdapter.js +1 -3
  194. package/modules/docereeAdManagerBidAdapter.js +14 -8
  195. package/modules/eclickadsBidAdapter.js +80 -0
  196. package/modules/eclickadsBidAdapter.md +55 -0
  197. package/modules/eightPodAnalyticsAdapter.js +13 -1
  198. package/modules/gumgumBidAdapter.js +6 -2
  199. package/modules/ixBidAdapter.js +0 -1
  200. package/modules/limelightDigitalBidAdapter.js +1 -1
  201. package/modules/mediagoBidAdapter.js +2 -4
  202. package/modules/mgidBidAdapter.js +30 -109
  203. package/modules/mgidXBidAdapter.js +2 -66
  204. package/modules/mobianRtdProvider.js +12 -8
  205. package/modules/naveggIdSystem.js +62 -58
  206. package/modules/naveggIdSystem.md +8 -0
  207. package/modules/oguryBidAdapter.js +5 -2
  208. package/modules/omsBidAdapter.js +1 -1
  209. package/modules/openxBidAdapter.js +1 -6
  210. package/modules/pstudioBidAdapter.js +5 -8
  211. package/modules/pstudioBidAdapter.md +6 -4
  212. package/modules/pubriseBidAdapter.js +19 -0
  213. package/modules/pubriseBidAdapter.md +79 -0
  214. package/modules/pubxaiAnalyticsAdapter.js +9 -4
  215. package/modules/pubxaiRtdProvider.js +38 -18
  216. package/modules/pubxaiRtdProvider.md +2 -2
  217. package/modules/redtramBidAdapter.js +2 -6
  218. package/modules/richaudienceBidAdapter.js +8 -1
  219. package/modules/rubiconBidAdapter.js +3 -3
  220. package/modules/smarthubBidAdapter.js +2 -0
  221. package/modules/targetVideoAdServerVideo.js +96 -0
  222. package/modules/targetVideoAdServerVideo.md +26 -0
  223. package/modules/teadsBidAdapter.js +4 -3
  224. package/modules/undertoneBidAdapter.js +1 -19
  225. package/modules/userId/index.js +1 -1
  226. package/package.json +1 -1
  227. package/src/adRendering.js +3 -0
  228. package/src/adapterManager.js +4 -0
  229. package/src/utils/focusTimeout.js +17 -6
  230. package/src/utils/ttlCollection.js +1 -1
  231. package/src/utils.js +28 -0
  232. package/test/spec/modules/admixerBidAdapter_spec.js +2 -2
  233. package/test/spec/modules/ccxBidAdapter_spec.js +81 -0
  234. package/test/spec/modules/contxtfulRtdProvider_spec.js +19 -19
  235. package/test/spec/modules/dailymotionBidAdapter_spec.js +12 -12
  236. package/test/spec/modules/discoveryBidAdapter_spec.js +1 -47
  237. package/test/spec/modules/docereeAdManagerBidAdapter_spec.js +87 -9
  238. package/test/spec/modules/eclickadsBidAdapter_spec.js +214 -0
  239. package/test/spec/modules/ixBidAdapter_spec.js +8 -1
  240. package/test/spec/modules/mobianRtdProvider_spec.js +32 -15
  241. package/test/spec/modules/naveggIdSystem_spec.js +141 -31
  242. package/test/spec/modules/oguryBidAdapter_spec.js +50 -4
  243. package/test/spec/modules/openxBidAdapter_spec.js +16 -49
  244. package/test/spec/modules/pstudioBidAdapter_spec.js +5 -5
  245. package/test/spec/modules/pubriseBidAdapter_spec.js +514 -0
  246. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +9 -4
  247. package/test/spec/modules/pubxaiRtdProvider_spec.js +37 -5
  248. package/test/spec/modules/richaudienceBidAdapter_spec.js +62 -0
  249. package/test/spec/modules/rubiconBidAdapter_spec.js +10 -0
  250. package/test/spec/modules/targetVideoAdServerVideo_spec.js +179 -0
  251. package/test/spec/modules/trafficgateBidAdapter_spec.js +1 -1
  252. package/test/spec/ortbConverter/userId_spec.js +23 -2
  253. package/test/spec/unit/adRendering_spec.js +27 -1
  254. package/test/spec/unit/core/adapterManager_spec.js +10 -0
  255. package/test/spec/unit/utils/focusTimeout_spec.js +33 -6
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[69380],{64668:(e,t,r)=>{var i=r(7873),n=r(91069),o=r(70433),s=r(63172),a=r(71371),d=r(57377),p=r(95789),c=r(15901);const u="USD",m=300,l=!0,f="https://prebid-outstream.yieldmo.com/bundle.js",g=["mimes","startdelay","placement","plcmt","skipafter","protocols","api","playbackmethod","maxduration","minduration","pos","skip","skippable"],y=["name","domain","cat","keywords"],b=(0,n.getWindowTop)(),h=2,v=0,A=["description","title","pr","page_url"],x={code:"yieldmo",supportedMediaTypes:[a.D4,a.G_],gvlid:173,isBidRequestValid:function(e){return!!(e&&e.adUnitCode&&e.bidId&&(I(e)||w(e))&&function(e){if(!w(e))return!0;const t=(e,t,r)=>{let i=`"${e}" is required`;throw r&&(i+=" when "+r),new Error(i)},r=(e,t,r)=>{throw r=r?", expected: "+r:"",t=JSON.stringify(t),new Error(`"${e}"=${t} is invalid${r}`)},i=e=>void 0!==e,s=(t,r,i,n)=>{if(0===t.indexOf("video")){const s="params."+t,a="mediaTypes."+t,d=(0,o.A)(e,s),p=(0,o.A)(e,a),c=r(d),u=r(p);return c?d:u||(c?u||i(a,p,n):i(s,d,n),d||p)}{const s=(0,o.A)(e,t);return r(s)||i(t,s,n),s}};try{return s("video.context",(e=>!(0,n.isEmpty)(e)),t),s("params.placementId",(e=>!(0,n.isEmpty)(e)),t),s("video.playerSize",(e=>(0,n.isArrayOfNums)(e,2)||(0,n.isArray)(e)&&e.every((e=>(0,n.isArrayOfNums)(e,2)))),r,"array of 2 integers, ex: [640,480] or [[640,480]]"),s("video.mimes",(e=>i(e)),t),s("video.mimes",(e=>(0,n.isArray)(e)&&e.every((e=>(0,n.isStr)(e)))),r,'array of strings, ex: ["video/mp4"]'),s("video.protocols",(e=>i(e)),t),s("video.api",(e=>i(e)),t),s("video.api",(e=>(0,n.isArrayOfNums)(e)&&e.every((e=>e>=1&&e<=6))),r,"array of numbers, ex: [2,3]"),s("video.playbackmethod",(e=>!i(e)||(0,n.isArrayOfNums)(e)),r,"array of integers, ex: [2,6]"),s("video.maxduration",(e=>i(e)),t),s("video.maxduration",(e=>(0,n.isInteger)(e)),r),s("video.minduration",(e=>!i(e)||(0,n.isNumber)(e)),r),s("video.skippable",(e=>!i(e)||(0,n.isBoolean)(e)),r),s("video.skipafter",(e=>!i(e)||(0,n.isNumber)(e)),r),s("video.pos",(e=>!i(e)||(0,n.isNumber)(e)),r),s("params.badv",(e=>!i(e)||(0,n.isArray)(e)),r,'array of strings, ex: ["ford.com","pepsi.com"]'),s("params.bcat",(e=>!i(e)||(0,n.isArray)(e)),r,'array of strings, ex: ["IAB1-5","IAB1-6"]'),!0}catch(e){return(0,n.logError)(e.message),!1}}(e))},buildRequests:function(e,t){const r=function(e){return!!e.refererInfo?.referer?.includes("pb_force_a")}(t),i=N("/exchange/prebid",r),d=N("/exchange/prebidvideo",r),p=e.filter((e=>I(e))),u=e.filter((e=>w(e)));let m=[];const l=function(e){if((0,o.A)(e,"userIdAsEids"))return e.userIdAsEids||[]}(e[0])||[],f=function(e){const t=(0,o.A)(e,"ortb2.user.data")||[],r=t.filter((e=>{const t=e.ext?.segtax;return t>=600&&t<=609}))[0];if(r){return{taxonomy:r.ext.segtax,classifier:r.ext.segclass,topics:Object.values(r.segment).map((e=>Number(e)))}}return null}(t),y=function(e){const t=(0,o.A)(e,"ortb2.device.ext.cdep")||null;return t}(t);if(p.length>0){let e={pbav:"9.7.0",p:[],page_url:t.refererInfo.page,bust:(new Date).getTime().toString(),dnt:"1"===window.doNotTrack||"1"===window.navigator.doNotTrack||!1,description:_(),tmax:t.timeout||400,userConsent:JSON.stringify({gdprApplies:(0,o.A)(t,"gdprConsent.gdprApplies")||"",cmp:(0,o.A)(t,"gdprConsent.consentString")||"",gpp:(0,o.A)(t,"gppConsent.gppString")||"",gpp_sid:(0,o.A)(t,"gppConsent.applicableSections")||[]}),us_privacy:(0,o.A)(t,"uspConsent")||""};f&&(e.topics=JSON.stringify(f));const r=k(t);r&&(e.gpc=r),y&&(e.cdep=y),function(){try{if((0,n.getWindowTop)().location.href)return!0}catch(e){return!1}}()&&(e.pr=b.document&&b.document.referrer||"",e.scrd=b.devicePixelRatio||0,e.title=b.document.title||"",e.w=b.innerWidth,e.h=b.innerHeight);const s=window.navigator.maxTouchPoints;s&&(e.mtp=s),p.forEach((t=>{e.p.push(function(e){const t=(0,o.A)(e,"ortb2Imp.ext.gpid")||(0,o.A)(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);const t=T(e,a.D4);t&&(r.bidFloor=t)}t&&(r.gpid=t);const i=(0,o.A)(e,"ortb2Imp.ext.tid");i&&(r.tid=i);e.auctionId&&(r.auctionId=e.auctionId);return JSON.stringify(r)}(t));const r=S(t,"pubcid");r?e.pubcid=r:t.crumbs&&t.crumbs.pubcid&&(e.pubcid=t.crumbs.pubcid);const i=S(t,"tdid");i&&(e.tdid=i);const n=S(t,"criteoId");n&&(e.cri_prebid=n),t.schain&&(e.schain=JSON.stringify(t.schain)),(0,o.A)(t,"params.lr_env")&&(e.ats_envelope=t.params.lr_env)})),e.p="["+e.p.toString()+"]",l.length&&(e.eids=JSON.stringify(l));let d=`${i}?${(0,n.parseQueryStringParameters)(e)}`.length-8e3;if(d>0)for(let t=0;t<A.length&&(d=E(d,e,A[t]),!(d<=0));t++);m.push({method:"GET",url:i,data:e})}if(u.length>0){const e=function(e,t){const r=e[0].schain;let i={id:e[0].bidderRequestId,tmax:t.timeout||400,at:1,imp:e.map((e=>function(e){const t=(0,o.A)(e,"ortb2Imp.ext.gpid")||(0,o.A)(e,"ortb2Imp.ext.data.pbadslot"),r=function(e){const t=(0,o.A)(e,"mediaTypes.video.playerSize");if((0,n.isArrayOfNums)(t,2))return t;if((0,n.isArray)(t)&&(0,n.isArrayOfNums)(t[0],2))return t[0];return null}(e),i={id:e.bidId,tagid:e.adUnitCode,bidfloor:T(e,a.G_),ext:{placement_id:e.params.placementId,tid:(0,o.A)(e,"ortb2Imp.ext.tid")},video:{w:r[0],h:r[1],linearity:1}},s=(0,o.A)(e,"mediaTypes.video",{});Object.keys(s).filter((e=>(0,c.mK)(g,e))).forEach((e=>i.video[e]=s[e]));const d=(0,o.A)(e,"params.video",{});Object.keys(d).filter((e=>(0,c.mK)(g,e))).forEach((e=>i.video[e]=d[e])),i.video.skippable&&(i.video.skip=1,delete i.video.skippable);1===i.video.plcmt&&1===i.video.placement||(i.video.startdelay=v,i.video.playbackmethod=[h]);t&&(i.ext.gpid=t);return i}(e))),site:O(e[0],t),device:(0,o.A)(t,"ortb2.device"),badv:e[0].params.badv||[],bcat:(0,o.A)(t,"bcat")||e[0].params.bcat||[],ext:{prebid:"9.7.0"},ats_envelope:e[0].params.lr_env};r&&(i.schain=r);const d=k(t);d&&(0,s.J)(i,"regs.ext.gpc",d);e[0].auctionId&&(i.auctionId=e[0].auctionId);return function(e,t){const r=t.gdprConsent,i=(0,o.A)(t,"gppConsent.gppString"),n=(0,o.A)(t,"gppConsent.applicableSections");i?(0,s.J)(e,"regs.ext.gpp",i):((0,s.J)(e,"regs.ext.gdpr",r&&r.gdprApplies?1:0),(0,s.J)(e,"user.ext.consent",r&&r.consentString?r.consentString:""));n&&n.length>0&&(0,s.J)(e,"regs.ext.gpp_sid",n);const a=(0,o.A)(t,"uspConsent");!i&&a&&(0,s.J)(e,"regs.ext.us_privacy",a)}(i,t),i}(u,t);f&&(e.topics=f),l.length&&(0,s.J)(e,"user.ext.eids",l),m.push({method:"POST",url:d,data:e})}return m},interpretResponse:function(e,t){let r=[];const i=e.body;if(i.length>0&&i.forEach((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:u,netRevenue:l,ttl:300,ad:e.ad,meta:{advertiserDomains:e.adomain||[],mediaType:a.D4}}}(e))})),i.seatbid){i.seatbid.reduce(((e,t)=>e.concat(t.bid)),[]).forEach((e=>r.push(function(e,t){const r=(0,c.I6)((0,o.A)(t,"data.imp")||[],(t=>t.id===e.impid));let i={dealId:e.dealid,requestId:r.id,cpm:e.price,width:r.video.w,height:r.video.h,creativeId:e.crid||e.adid,currency:u,netRevenue:l,mediaType:a.G_,ttl:m,vastXml:e.adm,meta:{advertiserDomains:e.adomain||[],mediaType:a.G_}};if(r.video.plcmt&&1!==r.video.plcmt){const e=p.A4.install({url:f,config:{width:i.width,height:i.height,vastTimeout:15e3,maxAllowedVastTagRedirects:5,allowVpaid:!0,autoPlay:!0,preload:!0,mute:!0},id:r.tagid,loaded:!1});e.setRender((function(e){e.renderer.push((()=>{const{id:t,config:r}=e.renderer;window.YMoutstreamPlayer(e,t,r)}))})),i.renderer=e}return i}(e,t))))}return r},getUserSyncs:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const n=[],o="&gdpr="+(r.gdprApplies?1:0),s=`&gdpr_consent=${encodeURIComponent(r.consentString||"")}`,a=`https://ads.yieldmo.com/pbcas?${`us_privacy=${encodeURIComponent(i)}`}${o}${s}`;return e.iframeEnabled?n.push({type:"iframe",url:a+"&type=iframe"}):e.pixelEnabled&&n.push({type:"image",url:a+"&type=image"}),n}};function I(e){return!!(0,o.A)(e,"mediaTypes.banner")}function w(e){return!!(0,o.A)(e,"mediaTypes.video")}function _(){return document.querySelector('meta[name="description"]')&&document.querySelector('meta[name="description"]').getAttribute("content")||""}function S(e,t){return"object"==typeof(0,o.A)(e,"userId")?e.userId[t]:void 0}function k(e){return(0,o.A)(e,"ortb2.regs.ext.gpc")}function T(e,t){let r={};return"function"==typeof e.getFloor&&(r=e.getFloor({currency:u,mediaType:t,size:"*"})),r.floor||e.params.bidfloor||e.params.bidFloor||0}function O(e,t){let r={};const i=(0,n.parseUrl)((0,o.A)(t,"refererInfo.page"));(0,n.isEmpty)(i)||(r.page=`${i.protocol}://${i.hostname}${i.pathname}`),t.refererInfo?.ref&&(r.ref=t.refererInfo.ref);const s=document.getElementsByTagName("meta").keywords;s&&s.content&&(r.keywords=s.content);const a=(0,o.A)(e,"params.site");return a&&Object.keys(a).filter((e=>(0,c.mK)(y,e))).forEach((e=>r[e]=a[e])),r}function E(e,t,r){if(t[r].length>e)return t[r]=t[r].substring(0,t[r].length-e),0;const i=e-t[r].length;return t[r]="",i}function N(e,t){return`${t?"https://ads-stg.yieldmo.com":"https://ads.yieldmo.com"}${e}`}(0,d.a$)(x),(0,i.E)("yieldmoBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return t=64668,e(e.s=t);var t}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[69380],{64668:(e,t,r)=>{var i=r(7873),n=r(91069),o=r(70433),s=r(63172),a=r(71371),d=r(57377),p=r(95789),c=r(15901);const u="USD",m=300,l=!0,f="https://prebid-outstream.yieldmo.com/bundle.js",g=["mimes","startdelay","placement","plcmt","skipafter","protocols","api","playbackmethod","maxduration","minduration","pos","skip","skippable"],y=["name","domain","cat","keywords"],b=(0,n.getWindowTop)(),h=2,v=0,A=["description","title","pr","page_url"],x={code:"yieldmo",supportedMediaTypes:[a.D4,a.G_],gvlid:173,isBidRequestValid:function(e){return!!(e&&e.adUnitCode&&e.bidId&&(I(e)||w(e))&&function(e){if(!w(e))return!0;const t=(e,t,r)=>{let i=`"${e}" is required`;throw r&&(i+=" when "+r),new Error(i)},r=(e,t,r)=>{throw r=r?", expected: "+r:"",t=JSON.stringify(t),new Error(`"${e}"=${t} is invalid${r}`)},i=e=>void 0!==e,s=(t,r,i,n)=>{if(0===t.indexOf("video")){const s="params."+t,a="mediaTypes."+t,d=(0,o.A)(e,s),p=(0,o.A)(e,a),c=r(d),u=r(p);return c?d:u||(c?u||i(a,p,n):i(s,d,n),d||p)}{const s=(0,o.A)(e,t);return r(s)||i(t,s,n),s}};try{return s("video.context",(e=>!(0,n.isEmpty)(e)),t),s("params.placementId",(e=>!(0,n.isEmpty)(e)),t),s("video.playerSize",(e=>(0,n.isArrayOfNums)(e,2)||(0,n.isArray)(e)&&e.every((e=>(0,n.isArrayOfNums)(e,2)))),r,"array of 2 integers, ex: [640,480] or [[640,480]]"),s("video.mimes",(e=>i(e)),t),s("video.mimes",(e=>(0,n.isArray)(e)&&e.every((e=>(0,n.isStr)(e)))),r,'array of strings, ex: ["video/mp4"]'),s("video.protocols",(e=>i(e)),t),s("video.api",(e=>i(e)),t),s("video.api",(e=>(0,n.isArrayOfNums)(e)&&e.every((e=>e>=1&&e<=6))),r,"array of numbers, ex: [2,3]"),s("video.playbackmethod",(e=>!i(e)||(0,n.isArrayOfNums)(e)),r,"array of integers, ex: [2,6]"),s("video.maxduration",(e=>i(e)),t),s("video.maxduration",(e=>(0,n.isInteger)(e)),r),s("video.minduration",(e=>!i(e)||(0,n.isNumber)(e)),r),s("video.skippable",(e=>!i(e)||(0,n.isBoolean)(e)),r),s("video.skipafter",(e=>!i(e)||(0,n.isNumber)(e)),r),s("video.pos",(e=>!i(e)||(0,n.isNumber)(e)),r),s("params.badv",(e=>!i(e)||(0,n.isArray)(e)),r,'array of strings, ex: ["ford.com","pepsi.com"]'),s("params.bcat",(e=>!i(e)||(0,n.isArray)(e)),r,'array of strings, ex: ["IAB1-5","IAB1-6"]'),!0}catch(e){return(0,n.logError)(e.message),!1}}(e))},buildRequests:function(e,t){const r=function(e){return!!e.refererInfo?.referer?.includes("pb_force_a")}(t),i=N("/exchange/prebid",r),d=N("/exchange/prebidvideo",r),p=e.filter((e=>I(e))),u=e.filter((e=>w(e)));let m=[];const l=function(e){if((0,o.A)(e,"userIdAsEids"))return e.userIdAsEids||[]}(e[0])||[],f=function(e){const t=(0,o.A)(e,"ortb2.user.data")||[],r=t.filter((e=>{const t=e.ext?.segtax;return t>=600&&t<=609}))[0];if(r){return{taxonomy:r.ext.segtax,classifier:r.ext.segclass,topics:Object.values(r.segment).map((e=>Number(e)))}}return null}(t),y=function(e){const t=(0,o.A)(e,"ortb2.device.ext.cdep")||null;return t}(t);if(p.length>0){let e={pbav:"9.9.0",p:[],page_url:t.refererInfo.page,bust:(new Date).getTime().toString(),dnt:"1"===window.doNotTrack||"1"===window.navigator.doNotTrack||!1,description:_(),tmax:t.timeout||400,userConsent:JSON.stringify({gdprApplies:(0,o.A)(t,"gdprConsent.gdprApplies")||"",cmp:(0,o.A)(t,"gdprConsent.consentString")||"",gpp:(0,o.A)(t,"gppConsent.gppString")||"",gpp_sid:(0,o.A)(t,"gppConsent.applicableSections")||[]}),us_privacy:(0,o.A)(t,"uspConsent")||""};f&&(e.topics=JSON.stringify(f));const r=k(t);r&&(e.gpc=r),y&&(e.cdep=y),function(){try{if((0,n.getWindowTop)().location.href)return!0}catch(e){return!1}}()&&(e.pr=b.document&&b.document.referrer||"",e.scrd=b.devicePixelRatio||0,e.title=b.document.title||"",e.w=b.innerWidth,e.h=b.innerHeight);const s=window.navigator.maxTouchPoints;s&&(e.mtp=s),p.forEach((t=>{e.p.push(function(e){const t=(0,o.A)(e,"ortb2Imp.ext.gpid")||(0,o.A)(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);const t=T(e,a.D4);t&&(r.bidFloor=t)}t&&(r.gpid=t);const i=(0,o.A)(e,"ortb2Imp.ext.tid");i&&(r.tid=i);e.auctionId&&(r.auctionId=e.auctionId);return JSON.stringify(r)}(t));const r=S(t,"pubcid");r?e.pubcid=r:t.crumbs&&t.crumbs.pubcid&&(e.pubcid=t.crumbs.pubcid);const i=S(t,"tdid");i&&(e.tdid=i);const n=S(t,"criteoId");n&&(e.cri_prebid=n),t.schain&&(e.schain=JSON.stringify(t.schain)),(0,o.A)(t,"params.lr_env")&&(e.ats_envelope=t.params.lr_env)})),e.p="["+e.p.toString()+"]",l.length&&(e.eids=JSON.stringify(l));let d=`${i}?${(0,n.parseQueryStringParameters)(e)}`.length-8e3;if(d>0)for(let t=0;t<A.length&&(d=E(d,e,A[t]),!(d<=0));t++);m.push({method:"GET",url:i,data:e})}if(u.length>0){const e=function(e,t){const r=e[0].schain;let i={id:e[0].bidderRequestId,tmax:t.timeout||400,at:1,imp:e.map((e=>function(e){const t=(0,o.A)(e,"ortb2Imp.ext.gpid")||(0,o.A)(e,"ortb2Imp.ext.data.pbadslot"),r=function(e){const t=(0,o.A)(e,"mediaTypes.video.playerSize");if((0,n.isArrayOfNums)(t,2))return t;if((0,n.isArray)(t)&&(0,n.isArrayOfNums)(t[0],2))return t[0];return null}(e),i={id:e.bidId,tagid:e.adUnitCode,bidfloor:T(e,a.G_),ext:{placement_id:e.params.placementId,tid:(0,o.A)(e,"ortb2Imp.ext.tid")},video:{w:r[0],h:r[1],linearity:1}},s=(0,o.A)(e,"mediaTypes.video",{});Object.keys(s).filter((e=>(0,c.mK)(g,e))).forEach((e=>i.video[e]=s[e]));const d=(0,o.A)(e,"params.video",{});Object.keys(d).filter((e=>(0,c.mK)(g,e))).forEach((e=>i.video[e]=d[e])),i.video.skippable&&(i.video.skip=1,delete i.video.skippable);1===i.video.plcmt&&1===i.video.placement||(i.video.startdelay=v,i.video.playbackmethod=[h]);t&&(i.ext.gpid=t);return i}(e))),site:O(e[0],t),device:(0,o.A)(t,"ortb2.device"),badv:e[0].params.badv||[],bcat:(0,o.A)(t,"bcat")||e[0].params.bcat||[],ext:{prebid:"9.9.0"},ats_envelope:e[0].params.lr_env};r&&(i.schain=r);const d=k(t);d&&(0,s.J)(i,"regs.ext.gpc",d);e[0].auctionId&&(i.auctionId=e[0].auctionId);return function(e,t){const r=t.gdprConsent,i=(0,o.A)(t,"gppConsent.gppString"),n=(0,o.A)(t,"gppConsent.applicableSections");i?(0,s.J)(e,"regs.ext.gpp",i):((0,s.J)(e,"regs.ext.gdpr",r&&r.gdprApplies?1:0),(0,s.J)(e,"user.ext.consent",r&&r.consentString?r.consentString:""));n&&n.length>0&&(0,s.J)(e,"regs.ext.gpp_sid",n);const a=(0,o.A)(t,"uspConsent");!i&&a&&(0,s.J)(e,"regs.ext.us_privacy",a)}(i,t),i}(u,t);f&&(e.topics=f),l.length&&(0,s.J)(e,"user.ext.eids",l),m.push({method:"POST",url:d,data:e})}return m},interpretResponse:function(e,t){let r=[];const i=e.body;if(i.length>0&&i.forEach((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:u,netRevenue:l,ttl:300,ad:e.ad,meta:{advertiserDomains:e.adomain||[],mediaType:a.D4}}}(e))})),i.seatbid){i.seatbid.reduce(((e,t)=>e.concat(t.bid)),[]).forEach((e=>r.push(function(e,t){const r=(0,c.I6)((0,o.A)(t,"data.imp")||[],(t=>t.id===e.impid));let i={dealId:e.dealid,requestId:r.id,cpm:e.price,width:r.video.w,height:r.video.h,creativeId:e.crid||e.adid,currency:u,netRevenue:l,mediaType:a.G_,ttl:m,vastXml:e.adm,meta:{advertiserDomains:e.adomain||[],mediaType:a.G_}};if(r.video.plcmt&&1!==r.video.plcmt){const e=p.A4.install({url:f,config:{width:i.width,height:i.height,vastTimeout:15e3,maxAllowedVastTagRedirects:5,allowVpaid:!0,autoPlay:!0,preload:!0,mute:!0},id:r.tagid,loaded:!1});e.setRender((function(e){e.renderer.push((()=>{const{id:t,config:r}=e.renderer;window.YMoutstreamPlayer(e,t,r)}))})),i.renderer=e}return i}(e,t))))}return r},getUserSyncs:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const n=[],o="&gdpr="+(r.gdprApplies?1:0),s=`&gdpr_consent=${encodeURIComponent(r.consentString||"")}`,a=`https://ads.yieldmo.com/pbcas?${`us_privacy=${encodeURIComponent(i)}`}${o}${s}`;return e.iframeEnabled?n.push({type:"iframe",url:a+"&type=iframe"}):e.pixelEnabled&&n.push({type:"image",url:a+"&type=image"}),n}};function I(e){return!!(0,o.A)(e,"mediaTypes.banner")}function w(e){return!!(0,o.A)(e,"mediaTypes.video")}function _(){return document.querySelector('meta[name="description"]')&&document.querySelector('meta[name="description"]').getAttribute("content")||""}function S(e,t){return"object"==typeof(0,o.A)(e,"userId")?e.userId[t]:void 0}function k(e){return(0,o.A)(e,"ortb2.regs.ext.gpc")}function T(e,t){let r={};return"function"==typeof e.getFloor&&(r=e.getFloor({currency:u,mediaType:t,size:"*"})),r.floor||e.params.bidfloor||e.params.bidFloor||0}function O(e,t){let r={};const i=(0,n.parseUrl)((0,o.A)(t,"refererInfo.page"));(0,n.isEmpty)(i)||(r.page=`${i.protocol}://${i.hostname}${i.pathname}`),t.refererInfo?.ref&&(r.ref=t.refererInfo.ref);const s=document.getElementsByTagName("meta").keywords;s&&s.content&&(r.keywords=s.content);const a=(0,o.A)(e,"params.site");return a&&Object.keys(a).filter((e=>(0,c.mK)(y,e))).forEach((e=>r[e]=a[e])),r}function E(e,t,r){if(t[r].length>e)return t[r]=t[r].substring(0,t[r].length-e),0;const i=e-t[r].length;return t[r]="",i}function N(e,t){return`${t?"https://ads-stg.yieldmo.com":"https://ads.yieldmo.com"}${e}`}(0,d.a$)(x),(0,i.E)("yieldmoBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return t=64668,e(e.s=t);var t}));e.O()}]);
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[38743],{98059:(e,t,n)=>{var s=n(7873),i=n(91069),d=n(68044),a=n(88910),o=n(78969),r=n(11445),c=n(97779),g=n(67314);const l={},p={},b={},u={};u[o.qY.BID_ADJUSTMENT]=!0,u[o.qY.BIDDER_DONE]=!0,u[o.qY.AUCTION_END]=!0;let v="",f="https://pool.tsukiji.iponweb.net/hba",I="";function S(e,t){e.adUnitCode&&t[e.adUnitCode]&&(e.adUnitName=t[e.adUnitCode]),(0,i.isArray)(e.adUnits)&&e.adUnits.forEach((e=>{e.code&&t[e.code]&&(e.name=t[e.code])})),(0,i.isArray)(e.adUnitCodes)&&(e.adUnitNames=e.adUnitCodes.map((e=>t[e]))),["bids","bidderRequests","bidsReceived","noBids"].forEach((n=>{!function(e,t){(0,i.isArray)(e)&&e.forEach((e=>{S(e,t)}))}(e[n],t)}))}const y=Object.assign((0,a.Ay)({analyticsType:"endpoint"}),{getUrl:()=>f,track(e){let{eventType:t,args:n={}}=e;if(t===o.qY.BID_REQUESTED){const e=`${n.bidderCode}_${n.auctionId}`;l[e]=(0,i.deepClone)(n),l[e].bids=[],n.bids.forEach((e=>{p[`${e.bidId}_${e.auctionId}`]=e}))}if(t===o.qY.BID_TIMEOUT&&(0,i.isArray)(n)){const e=y.eventsStorage,s={};n.forEach((n=>{const i=`${n.bidId}_${n.auctionId}`,d=`${n.bidder}_${n.auctionId}`;e[n.auctionId]||(e[n.auctionId]={events:[]}),(l[d]||s[n.bidder])&&p[i]&&(s[n.bidder]||(s[n.bidder]=l[d],e[n.auctionId].events.push({eventType:t,params:s[n.bidder]}),delete l[d]),s[n.bidder].bids.push(p[i]),delete p[i])}))}else if(v=n.auctionId||v,v){const e=y.eventsStorage;e[v]||(e[v]={events:[]});const s=n.refererInfo&&n.refererInfo.page;s&&b[v]!==s&&(b[v]=s);const i=Object.assign({},n);if(delete i.ad,i.bidsReceived&&(i.bidsReceived=i.bidsReceived.map((e=>{const t=Object.assign({},e);return delete t.ad,t}))),u[t]||e[v].events.push({eventType:t,params:i}),t===o.qY.AUCTION_END||t===o.qY.BID_WON){if(i.adServerTargeting=c.iS.getAllTargeting(g.n.getAdUnitCodes(),g.n.getBidsReceived()),y.eventsStorage[v]&&y.eventsStorage[v].events.length){y.eventsStorage[v].page={url:b[v]},y.eventsStorage[v].pubId=I,y.eventsStorage[v].wrapper_version="9.7.0";const e=function(){if(window.googletag&&window.googletag.pubads){const e=googletag.pubads();if(e&&e.getSlots){const t=e.getSlots();if(t&&t.length){const e={};return t.forEach((t=>{const n=t.getSlotElementId(),s=(t.getAdUnitPath()||"").split("/").pop();e[n]=s})),e}}}}();e&&y.eventsStorage[v].events.forEach((t=>{S(t.params,e)}))}y.sendStat(y.eventsStorage[v],v)}}},sendStat(e,t){e&&e.events&&e.events.length&&(delete y.eventsStorage[t],(0,d.RD)(f,{success:function(){},error:function(){}},JSON.stringify(e),{method:"POST"}))}});y.eventsStorage={},y.originEnableAnalytics=y.enableAnalytics,y.enableAnalytics=function(e){const t=e&&e.options;t&&("string"==typeof t.url&&(f=t.url),t.pubId&&(I=t.pubId.toString())),y.originEnableAnalytics(e)},r.Ay.registerAnalyticsAdapter({adapter:y,code:"yieldone"});(0,s.E)("yieldoneAnalyticsAdapter")}},e=>{e.O(0,[2630,60802,51085],(()=>{return t=98059,e(e.s=t);var t}));e.O()}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[38743],{98059:(e,t,n)=>{var s=n(7873),i=n(91069),d=n(68044),a=n(88910),o=n(78969),r=n(11445),c=n(97779),g=n(67314);const l={},p={},b={},u={};u[o.qY.BID_ADJUSTMENT]=!0,u[o.qY.BIDDER_DONE]=!0,u[o.qY.AUCTION_END]=!0;let v="",f="https://pool.tsukiji.iponweb.net/hba",I="";function S(e,t){e.adUnitCode&&t[e.adUnitCode]&&(e.adUnitName=t[e.adUnitCode]),(0,i.isArray)(e.adUnits)&&e.adUnits.forEach((e=>{e.code&&t[e.code]&&(e.name=t[e.code])})),(0,i.isArray)(e.adUnitCodes)&&(e.adUnitNames=e.adUnitCodes.map((e=>t[e]))),["bids","bidderRequests","bidsReceived","noBids"].forEach((n=>{!function(e,t){(0,i.isArray)(e)&&e.forEach((e=>{S(e,t)}))}(e[n],t)}))}const y=Object.assign((0,a.Ay)({analyticsType:"endpoint"}),{getUrl:()=>f,track(e){let{eventType:t,args:n={}}=e;if(t===o.qY.BID_REQUESTED){const e=`${n.bidderCode}_${n.auctionId}`;l[e]=(0,i.deepClone)(n),l[e].bids=[],n.bids.forEach((e=>{p[`${e.bidId}_${e.auctionId}`]=e}))}if(t===o.qY.BID_TIMEOUT&&(0,i.isArray)(n)){const e=y.eventsStorage,s={};n.forEach((n=>{const i=`${n.bidId}_${n.auctionId}`,d=`${n.bidder}_${n.auctionId}`;e[n.auctionId]||(e[n.auctionId]={events:[]}),(l[d]||s[n.bidder])&&p[i]&&(s[n.bidder]||(s[n.bidder]=l[d],e[n.auctionId].events.push({eventType:t,params:s[n.bidder]}),delete l[d]),s[n.bidder].bids.push(p[i]),delete p[i])}))}else if(v=n.auctionId||v,v){const e=y.eventsStorage;e[v]||(e[v]={events:[]});const s=n.refererInfo&&n.refererInfo.page;s&&b[v]!==s&&(b[v]=s);const i=Object.assign({},n);if(delete i.ad,i.bidsReceived&&(i.bidsReceived=i.bidsReceived.map((e=>{const t=Object.assign({},e);return delete t.ad,t}))),u[t]||e[v].events.push({eventType:t,params:i}),t===o.qY.AUCTION_END||t===o.qY.BID_WON){if(i.adServerTargeting=c.iS.getAllTargeting(g.n.getAdUnitCodes(),g.n.getBidsReceived()),y.eventsStorage[v]&&y.eventsStorage[v].events.length){y.eventsStorage[v].page={url:b[v]},y.eventsStorage[v].pubId=I,y.eventsStorage[v].wrapper_version="9.9.0";const e=function(){if(window.googletag&&window.googletag.pubads){const e=googletag.pubads();if(e&&e.getSlots){const t=e.getSlots();if(t&&t.length){const e={};return t.forEach((t=>{const n=t.getSlotElementId(),s=(t.getAdUnitPath()||"").split("/").pop();e[n]=s})),e}}}}();e&&y.eventsStorage[v].events.forEach((t=>{S(t.params,e)}))}y.sendStat(y.eventsStorage[v],v)}}},sendStat(e,t){e&&e.events&&e.events.length&&(delete y.eventsStorage[t],(0,d.RD)(f,{success:function(){},error:function(){}},JSON.stringify(e),{method:"POST"}))}});y.eventsStorage={},y.originEnableAnalytics=y.enableAnalytics,y.enableAnalytics=function(e){const t=e&&e.options;t&&("string"==typeof t.url&&(f=t.url),t.pubId&&(I=t.pubId.toString())),y.originEnableAnalytics(e)},r.Ay.registerAnalyticsAdapter({adapter:y,code:"yieldone"});(0,s.E)("yieldoneAnalyticsAdapter")}},e=>{e.O(0,[2630,60802,51085],(()=>{return t=98059,e(e.s=t);var t}));e.O()}]);
@@ -0,0 +1,73 @@
1
+ import {
2
+ isPlainObject,
3
+ isArray,
4
+ isStr,
5
+ isNumber,
6
+ } from '../../src/utils.js';
7
+ import { config } from '../../src/config.js';
8
+ import { USERSYNC_DEFAULT_CONFIG } from '../../src/userSync.js';
9
+
10
+ const PIXEL_SYNC_URL = 'https://cm.mgid.com/i.gif';
11
+ const IFRAME_SYNC_URL = 'https://cm.mgid.com/i.html';
12
+
13
+ export function getUserSyncs(syncOptions, serverResponses, gdprConsent, uspConsent, gppConsent) {
14
+ const spb = isPlainObject(config.getConfig('userSync')) &&
15
+ isNumber(config.getConfig('userSync').syncsPerBidder)
16
+ ? config.getConfig('userSync').syncsPerBidder : USERSYNC_DEFAULT_CONFIG.syncsPerBidder;
17
+
18
+ if (spb > 0 && isPlainObject(syncOptions) && (syncOptions.iframeEnabled || syncOptions.pixelEnabled)) {
19
+ let pixels = [];
20
+ if (serverResponses &&
21
+ isArray(serverResponses) &&
22
+ serverResponses.length > 0 &&
23
+ isPlainObject(serverResponses[0].body) &&
24
+ isPlainObject(serverResponses[0].body.ext) &&
25
+ isArray(serverResponses[0].body.ext.cm) &&
26
+ serverResponses[0].body.ext.cm.length > 0) {
27
+ pixels = serverResponses[0].body.ext.cm;
28
+ }
29
+
30
+ const syncs = [];
31
+ const query = [];
32
+ query.push('cbuster={cbuster}');
33
+ query.push('gdpr_consent=' + encodeURIComponent(isPlainObject(gdprConsent) && isStr(gdprConsent?.consentString) ? gdprConsent.consentString : ''));
34
+ if (isPlainObject(gdprConsent) && typeof gdprConsent?.gdprApplies === 'boolean' && gdprConsent.gdprApplies) {
35
+ query.push('gdpr=1');
36
+ } else {
37
+ query.push('gdpr=0');
38
+ }
39
+ if (isPlainObject(uspConsent) && uspConsent?.consentString) {
40
+ query.push(`us_privacy=${encodeURIComponent(uspConsent?.consentString)}`);
41
+ }
42
+ if (isPlainObject(gppConsent) && gppConsent?.gppString) {
43
+ query.push(`gppString=${encodeURIComponent(gppConsent?.gppString)}`);
44
+ }
45
+ if (config.getConfig('coppa')) {
46
+ query.push('coppa=1')
47
+ }
48
+ const q = query.join('&')
49
+ if (syncOptions.iframeEnabled) {
50
+ syncs.push({
51
+ type: 'iframe',
52
+ url: IFRAME_SYNC_URL + '?' + q.replace('{cbuster}', Math.round(new Date().getTime()))
53
+ });
54
+ } else if (syncOptions.pixelEnabled) {
55
+ if (pixels.length === 0) {
56
+ for (let i = 0; i < spb; i++) {
57
+ syncs.push({
58
+ type: 'image',
59
+ url: PIXEL_SYNC_URL + '?' + q.replace('{cbuster}', Math.round(new Date().getTime())) // randomly selects partner if sync required
60
+ });
61
+ }
62
+ } else {
63
+ for (let i = 0; i < spb && i < pixels.length; i++) {
64
+ syncs.push({
65
+ type: 'image',
66
+ url: pixels[i] + (pixels[i].indexOf('?') > 0 ? '&' : '?') + q.replace('{cbuster}', Math.round(new Date().getTime()))
67
+ });
68
+ }
69
+ }
70
+ }
71
+ return syncs;
72
+ }
73
+ }
@@ -26,4 +26,4 @@ export function getDM(win = window) {
26
26
  dm = undefined;
27
27
  }
28
28
  return dm;
29
- };
29
+ }
@@ -324,7 +324,7 @@ export function generateGeneralParams(generalObject, bidderRequest, adapterVersi
324
324
  if (bidderRequest && bidderRequest.refererInfo) {
325
325
  generalParams.referrer = deepAccess(bidderRequest, 'refererInfo.ref');
326
326
  generalParams.page_url = deepAccess(bidderRequest, 'refererInfo.page') || deepAccess(window, 'location.href');
327
- generalParams.page_domain = deepAccess(bidderRequest, 'refererInfo.domain') || deepAccess(window, 'location.hostname');
327
+ generalParams.site_domain = deepAccess(bidderRequest, 'refererInfo.domain') || deepAccess(window, 'location.hostname');
328
328
  }
329
329
 
330
330
  return generalParams;
@@ -102,7 +102,7 @@ const checkIfObjectHasKey = (keys, obj, mode = 'some') => {
102
102
  const val = obj[key];
103
103
 
104
104
  if (mode === 'some' && val) return true;
105
- if (!val) return false;
105
+ if (mode === 'every' && !val) return false;
106
106
  }
107
107
 
108
108
  return mode === 'every';
@@ -1,4 +1,4 @@
1
- import {isStr, logError} from '../src/utils.js';
1
+ import {isStr, logError, isFn, deepAccess} from '../src/utils.js';
2
2
  import {registerBidder} from '../src/adapters/bidderFactory.js';
3
3
  import {config} from '../src/config.js';
4
4
  import {BANNER, VIDEO, NATIVE} from '../src/mediaTypes.js';
@@ -71,15 +71,15 @@ export const spec = {
71
71
  if (bidderRequest.uspConsent) {
72
72
  payload.uspConsent = bidderRequest.uspConsent;
73
73
  }
74
- let bidFloor = getBidFloor(bidderRequest);
75
- if (bidFloor) {
76
- payload.bidFloor = bidFloor;
77
- }
78
74
  }
79
75
  validRequest.forEach((bid) => {
80
76
  let imp = {};
81
77
  Object.keys(bid).forEach(key => imp[key] = bid[key]);
82
78
  imp.ortb2 && delete imp.ortb2;
79
+ let bidFloor = getBidFloor(bid);
80
+ if (bidFloor) {
81
+ imp.bidFloor = bidFloor;
82
+ }
83
83
  payload.imps.push(imp);
84
84
  });
85
85
 
@@ -117,10 +117,16 @@ export const spec = {
117
117
  return pixels;
118
118
  }
119
119
  };
120
+
120
121
  function getEndpointUrl(code) {
121
122
  return find(ALIASES, (val) => val.code === code)?.endpoint || ENDPOINT_URL;
122
123
  }
124
+
123
125
  function getBidFloor(bid) {
126
+ if (!isFn(bid.getFloor)) {
127
+ return deepAccess(bid, 'params.bidFloor', 0);
128
+ }
129
+
124
130
  try {
125
131
  const bidFloor = bid.getFloor({
126
132
  currency: 'USD',
@@ -132,4 +138,5 @@ function getBidFloor(bid) {
132
138
  return 0;
133
139
  }
134
140
  }
141
+
135
142
  registerBidder(spec);
@@ -747,7 +747,7 @@ function bidToTag(bid) {
747
747
  // page.html?ast_override_div=divId:creativeId,divId2:creativeId2
748
748
  const overrides = getParameterByName('ast_override_div');
749
749
  if (isStr(overrides) && overrides !== '') {
750
- const adUnitOverride = overrides.split(',').find((pair) => pair.startsWith(`${bid.adUnitCode}:`));
750
+ const adUnitOverride = decodeURIComponent(overrides).split(',').find((pair) => pair.startsWith(`${bid.adUnitCode}:`));
751
751
  if (adUnitOverride) {
752
752
  const forceCreativeId = adUnitOverride.split(':')[1];
753
753
  if (forceCreativeId) {
@@ -65,7 +65,7 @@ function _validateSizes (sizeObj, type) {
65
65
  return true
66
66
  }
67
67
 
68
- function _buildBid (bid) {
68
+ function _buildBid (bid, bidderRequest) {
69
69
  let placement = {}
70
70
  placement.id = bid.bidId
71
71
  placement.secure = 1
@@ -105,6 +105,10 @@ function _buildBid (bid) {
105
105
 
106
106
  placement.ext = {'pid': bid.params.placementId}
107
107
 
108
+ if (bidderRequest.paapi?.enabled) {
109
+ placement.ext.ae = bid?.ortb2Imp?.ext?.ae
110
+ }
111
+
108
112
  return placement
109
113
  }
110
114
 
@@ -197,7 +201,7 @@ export const spec = {
197
201
  }
198
202
 
199
203
  _each(validBidRequests, function (bid) {
200
- requestBody.imp.push(_buildBid(bid))
204
+ requestBody.imp.push(_buildBid(bid, bidderRequest))
201
205
  })
202
206
  // Return the server request
203
207
  return {
@@ -101,8 +101,7 @@ function init(config) {
101
101
  rxApi = null;
102
102
 
103
103
  try {
104
- const { version, customer, hostname } = extractParameters(config);
105
- initCustomer(version, customer, hostname);
104
+ initCustomer(config);
106
105
  return true;
107
106
  } catch (error) {
108
107
  logError(MODULE, error);
@@ -137,35 +136,39 @@ export function extractParameters(config) {
137
136
  /**
138
137
  * Initialize sub module for a customer.
139
138
  * This will load the external resources for the sub module.
140
- * @param { String } version
141
- * @param { String } customer
142
- * @param { String } hostname
139
+ * @param { String } config
143
140
  */
144
- function initCustomer(version, customer, hostname) {
141
+ function initCustomer(config) {
142
+ const { version, customer, hostname } = extractParameters(config);
145
143
  const CONNECTOR_URL = buildUrl({
146
144
  protocol: 'https',
147
145
  host: hostname,
148
146
  pathname: `/${version}/prebid/${customer}/connector/rxConnector.js`,
149
147
  });
150
148
 
151
- const externalScript = loadExternalScript(CONNECTOR_URL, MODULE_NAME);
152
- addExternalScriptEventListener(externalScript, customer);
149
+ addConnectorEventListener(customer, config);
150
+ loadExternalScript(CONNECTOR_URL, MODULE_NAME);
153
151
  }
154
152
 
155
153
  /**
156
154
  * Add event listener to the script tag for the expected events from the external script.
157
- * @param { HTMLScriptElement } script
155
+ * @param { String } tagId
156
+ * @param { String } prebidConfig
158
157
  */
159
- function addExternalScriptEventListener(script, tagId) {
160
- script.addEventListener(
158
+ function addConnectorEventListener(tagId, prebidConfig) {
159
+ window.addEventListener(
161
160
  'rxConnectorIsReady',
162
- async ({ detail: rxConnector }) => {
161
+ async ({ detail: { [tagId]: rxConnector } }) => {
162
+ if (!rxConnector) {
163
+ return;
164
+ }
163
165
  // Fetch the customer configuration
164
166
  const { rxApiBuilder, fetchConfig } = rxConnector;
165
167
  let config = await fetchConfig(tagId);
166
168
  if (!config) {
167
169
  return;
168
170
  }
171
+ config['prebid'] = prebidConfig || {};
169
172
  rxApi = await rxApiBuilder(config);
170
173
  }
171
174
  );
@@ -151,14 +151,18 @@ export const spec = {
151
151
  * @return boolean True if this is a valid bid, and false otherwise.
152
152
  */
153
153
  isBidRequestValid: function (bid) {
154
- if (!bid.params?.placementId || !isNumber(bid.params.placementId)) {
155
- logError('placementId not provided or not a number');
156
- return false;
157
- }
154
+ if (!bid.params?.domainId || !isNumber(bid.params.domainId)) {
155
+ logError('domainId not provided or not a number');
156
+ if (!bid.params?.placementId || !isNumber(bid.params.placementId)) {
157
+ logError('placementId not provided or not a number');
158
+ return false;
159
+ }
158
160
 
159
- if (!bid.params?.pageId || !isNumber(bid.params.pageId)) {
160
- logError('pageId not provided or not a number');
161
- return false;
161
+ if (!bid.params?.pageId || !isNumber(bid.params.pageId)) {
162
+ logError('pageId not provided or not a number');
163
+ return false;
164
+ }
165
+ return true;
162
166
  }
163
167
  return true;
164
168
  },
@@ -176,8 +180,8 @@ export const spec = {
176
180
  // process bid requests
177
181
  let processed = validBidRequests
178
182
  .map(bid => slotDimensions(bid))
179
- // Flattens the pageId and placement Id for backwards compatibility.
180
- .map((bid) => ({...bid, pageId: bid.params?.pageId, placementId: bid.params?.placementId}));
183
+ // Flattens the pageId, domainId and placement Id for backwards compatibility.
184
+ .map((bid) => ({...bid, pageId: bid.params?.pageId, domainId: bid.params?.domainId, placementId: bid.params?.placementId}));
181
185
 
182
186
  const extensions = getCwExtension();
183
187
  const payload = {
@@ -14,14 +14,15 @@ Prebid.js Adapter for C-Wire.
14
14
 
15
15
  Below, the list of C-WIRE params and where they can be set.
16
16
 
17
- | Param name | URL parameter | AdUnit config | Type | Required |
18
- |-------------|:-------------:|:-------------:|:--------:|:-------------:|
19
- | pageId | | x | number | YES |
20
- | placementId | | x | number | YES |
21
- | cwgroups | x | | string | NO |
22
- | cwcreative | x | | string | NO |
23
- | cwdebug | x | | boolean | NO |
24
- | cwfeatures | x | | string | NO |
17
+ | Param name | URL parameter | AdUnit config | Type | Required |
18
+ |-------------|:-------------:|:-------------:|:--------:|:--------:|
19
+ | pageId | | x | number | NO |
20
+ | domainId | | x | number | YES |
21
+ | placementId | | x | number | NO |
22
+ | cwgroups | x | | string | NO |
23
+ | cwcreative | x | | string | NO |
24
+ | cwdebug | x | | boolean | NO |
25
+ | cwfeatures | x | | string | NO |
25
26
 
26
27
 
27
28
  ### adUnit configuration
@@ -38,12 +39,30 @@ var adUnits = [
38
39
  }
39
40
  },
40
41
  params: {
41
- pageId: 1422, // required - number
42
- placementId: 2211521, // required - number
42
+ domainId: 1422, // required - number
43
+ placementId: 2211521, // optional - number
43
44
  }
44
45
  }]
45
46
  }
46
47
  ];
48
+ // old version for the compatibility
49
+ var adUnits = [
50
+ {
51
+ code: 'target_div_id', // REQUIRED
52
+ bids: [{
53
+ bidder: 'cwire',
54
+ mediaTypes: {
55
+ banner: {
56
+ sizes: [[400, 600]],
57
+ }
58
+ },
59
+ params: {
60
+ pageId: 1422, // required - number
61
+ placementId: 2211521, // required - number
62
+ }
63
+ }]
64
+ }
65
+ ];
47
66
  ```
48
67
 
49
68
  ### URL parameters
@@ -64,7 +64,6 @@ function getVideoMetadata(bidRequest, bidderRequest) {
64
64
  title: videoParams.title || deepAccess(contentObj, 'title', ''),
65
65
  url: videoParams.url || deepAccess(contentObj, 'url', ''),
66
66
  topics: videoParams.topics || '',
67
- xid: videoParams.xid || '',
68
67
  isCreatedForKids: typeof videoParams.isCreatedForKids === 'boolean'
69
68
  ? videoParams.isCreatedForKids
70
69
  : null,
@@ -79,6 +78,7 @@ function getVideoMetadata(bidRequest, bidderRequest) {
79
78
  autoplay: typeof videoParams.autoplay === 'boolean'
80
79
  ? videoParams.autoplay
81
80
  : null,
81
+ playerName: videoParams.playerName || deepAccess(contentObj, 'playerName', ''),
82
82
  playerVolume: (
83
83
  typeof videoParams.playerVolume === 'number' &&
84
84
  videoParams.playerVolume >= 0 &&
@@ -88,7 +88,7 @@ Please note that failing to set these will result in the adapter not bidding at
88
88
  To allow better targeting, you should provide as much context about the video as possible.
89
89
  There are three ways of doing this depending on if you're using Dailymotion player or a third party one.
90
90
 
91
- If you are using the Dailymotion player, you should only provide the video `xid` in your ad unit, example:
91
+ If you are using the Dailymotion player, you must provide the video `xid` in the `video.id` field of your ad unit, example:
92
92
 
93
93
  ```javascript
94
94
  const adUnits = [
@@ -98,7 +98,10 @@ const adUnits = [
98
98
  params: {
99
99
  apiKey: 'dailymotion-testing',
100
100
  video: {
101
- xid: 'x123456' // Dailymotion infrastructure unique video ID
101
+ id: 'x123456' // Dailymotion infrastructure unique video ID
102
+ autoplay: false,
103
+ playerName: 'dailymotion',
104
+ playerVolume: 8
102
105
  },
103
106
  }
104
107
  }],
@@ -117,9 +120,9 @@ const adUnits = [
117
120
  ```
118
121
 
119
122
  This will automatically fetch the most up-to-date information about the video.
120
- If you provide any other metadata in addition to the `xid`, they will be ignored.
123
+ Please note that if you provide any video metadata not listed above, they will be replaced by the ones fetched from the `video.id`.
121
124
 
122
- If you are using a third party video player, you should not provide any `xid` and instead fill the following members:
125
+ If you are using a third party video player, you should fill the following members:
123
126
 
124
127
  ```javascript
125
128
  const adUnits = [
@@ -143,6 +146,7 @@ const adUnits = [
143
146
  isCreatedForKids: false,
144
147
  videoViewsInSession: 1,
145
148
  autoplay: false,
149
+ playerName: 'video.js',
146
150
  playerVolume: 8
147
151
  }
148
152
  }
@@ -181,14 +185,14 @@ Each of the following video metadata fields can be added in bids.params.video.
181
185
  * `title` - Video title
182
186
  * `url` - URL of the content
183
187
  * `topics` - Main topics for the video, comma separated
184
- * `xid` - Dailymotion video identifier (only applicable if using the Dailymotion player)
185
188
  * `isCreatedForKids` - [The content is created for children as primary audience](https://faq.dailymotion.com/hc/en-us/articles/360020920159-Content-created-for-kids)
186
189
 
187
- The following contextual informations can also be added in bids.params.video.
190
+ The following contextual information can also be added in bids.params.video.
188
191
 
189
- * `videoViewsInSession` - Number of videos viewed within the current user session
190
192
  * `autoplay` - Playback was launched without user interaction
193
+ * `playerName` - Name of the player used to display the video
191
194
  * `playerVolume` - Player volume between 0 (muted, 0%) and 10 (100%)
195
+ * `videoViewsInSession` - Number of videos viewed within the current user session
192
196
 
193
197
  If you already specify [First-Party data](https://docs.prebid.org/features/firstPartyData.html) through the `ortb2` object when calling [`pbjs.requestBids(requestObj)`](https://docs.prebid.org/dev-docs/publisher-api-reference/requestBids.html), we will collect the following values and fallback to bids.params.video values when applicable. See the mapping below.
194
198
 
@@ -2,11 +2,11 @@ import * as utils from '../src/utils.js';
2
2
  import { getStorageManager } from '../src/storageManager.js';
3
3
  import { registerBidder } from '../src/adapters/bidderFactory.js';
4
4
  import { BANNER, NATIVE } from '../src/mediaTypes.js';
5
- import { getHLen, getHC, getDM } from '../src/fpd/navigator.js';
6
5
  import { getPageTitle, getPageDescription, getPageKeywords, getConnectionDownLink, getReferrer } from '../libraries/fpdUtils/pageInfo.js';
7
6
  import { getDevice, getScreenSize } from '../libraries/fpdUtils/deviceInfo.js';
8
7
  import { getBidFloor } from '../libraries/currencyUtils/floor.js';
9
8
  import { transformSizes, normalAdSize } from '../libraries/sizeUtils/tranformSize.js';
9
+ import { getHLen } from '../libraries/navigatorData/navigatorData.js';
10
10
 
11
11
  /**
12
12
  * @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
@@ -291,8 +291,6 @@ function getParam(validBidRequests, bidderRequest) {
291
291
  },
292
292
  device: {
293
293
  nbw: getConnectionDownLink(),
294
- hc: getHC(),
295
- dm: getDM()
296
294
  }
297
295
  }
298
296
  } catch (error) {}
@@ -70,14 +70,19 @@ export const spec = {
70
70
  },
71
71
  };
72
72
 
73
- function getPayload(bid, userData) {
73
+ export function getPayload(bid, userData) {
74
74
  if (!userData || !bid) {
75
75
  return false;
76
76
  }
77
77
  const { bidId, params } = bid;
78
- const { placementId } = params;
78
+ const { placementId, publisherUrl } = params;
79
79
  const {
80
80
  userid,
81
+ email,
82
+ firstname,
83
+ lastname,
84
+ hcpid,
85
+ dob,
81
86
  specialization,
82
87
  gender,
83
88
  city,
@@ -95,11 +100,11 @@ function getPayload(bid, userData) {
95
100
 
96
101
  const data = {
97
102
  userid: platformUid || userid || '',
98
- email: '',
99
- firstname: '',
100
- lastname: '',
103
+ email: email || '',
104
+ firstname: firstname || '',
105
+ lastname: lastname || '',
101
106
  specialization: specialization || '',
102
- hcpid: '',
107
+ hcpid: hcpid || '',
103
108
  gender: gender || '',
104
109
  city: city || '',
105
110
  state: state || '',
@@ -113,9 +118,10 @@ function getPayload(bid, userData) {
113
118
  hashedmobile: hashedmobile || '',
114
119
  country: country || '',
115
120
  organization: organization || '',
116
- dob: '',
121
+ dob: dob || '',
117
122
  userconsent: 1,
118
- mobile: mobile || ''
123
+ mobile: mobile || '',
124
+ pageurl: publisherUrl || ''
119
125
  };
120
126
  return {
121
127
  data,
@@ -0,0 +1,80 @@
1
+ import { NATIVE } from '../src/mediaTypes.js';
2
+ import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
3
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
4
+ import { getDevice } from '../libraries/fpdUtils/deviceInfo.js';
5
+
6
+ // ***** ECLICKADS ADAPTER *****
7
+ export const BIDDER_CODE = 'eclickads';
8
+ const DEFAULT_CURRENCY = ['USD'];
9
+ const DEFAULT_TTL = 1000;
10
+ export const ENDPOINT = 'https://g.eclick.vn/rtb_hb_request?fosp_uid=';
11
+ export const spec = {
12
+ code: BIDDER_CODE,
13
+ supportedMediaTypes: [NATIVE],
14
+ isBidRequestValid: (bid) => {
15
+ return !!bid && !!bid.params && !!bid.bidder && !!bid.params.zid;
16
+ },
17
+ buildRequests: (validBidRequests = [], bidderRequest) => {
18
+ validBidRequests = convertOrtbRequestToProprietaryNative(validBidRequests);
19
+
20
+ const ortb2ConfigFPD = bidderRequest.ortb2.site.ext?.data || {};
21
+ const ortb2Device = bidderRequest.ortb2.device;
22
+ const ortb2Site = bidderRequest.ortb2.site;
23
+
24
+ const isMobile = getDevice();
25
+ const imp = [];
26
+ const fENDPOINT = ENDPOINT + (ortb2ConfigFPD.fosp_uid || '');
27
+ const request = {
28
+ deviceWidth: ortb2Device.w,
29
+ deviceHeight: ortb2Device.h,
30
+ ua: ortb2Device.ua,
31
+ language: ortb2Device.language,
32
+ device: isMobile ? 'mobile' : 'desktop',
33
+ host: ortb2Site.domain,
34
+ page: ortb2Site.page,
35
+ imp,
36
+ myvne_id: ortb2ConfigFPD.myvne_id || '',
37
+ orig_aid: ortb2ConfigFPD.orig_aid,
38
+ fosp_aid: ortb2ConfigFPD.fosp_aid,
39
+ fosp_uid: ortb2ConfigFPD.fosp_uid,
40
+ id: ortb2ConfigFPD.id,
41
+ };
42
+
43
+ validBidRequests.map((bid) => {
44
+ imp.push({
45
+ requestId: bid.bidId,
46
+ adUnitCode: bid.adUnitCode,
47
+ zid: bid.params.zid,
48
+ });
49
+ });
50
+
51
+ return {
52
+ method: 'POST',
53
+ url: fENDPOINT,
54
+ data: request,
55
+ };
56
+ },
57
+ interpretResponse: (serverResponse) => {
58
+ const seatbid = serverResponse.body?.seatbid || [];
59
+ return seatbid.reduce((bids, bid) => {
60
+ return [
61
+ ...bids,
62
+ {
63
+ id: bid.id,
64
+ impid: bid.impid,
65
+ adUnitCode: bid.adUnitCode,
66
+ cpm: bid.cpm,
67
+ ttl: bid.ttl || DEFAULT_TTL,
68
+ requestId: bid.requestId,
69
+ creativeId: bid.creativeId,
70
+ netRevenue: bid.netRevenue,
71
+ currency: bid.currency || DEFAULT_CURRENCY,
72
+ adserverTargeting: {
73
+ hb_ad_eclickads: bid.ad,
74
+ },
75
+ },
76
+ ];
77
+ }, []);
78
+ },
79
+ };
80
+ registerBidder(spec);