prebid.js 7.2.0 → 7.5.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 (251) hide show
  1. package/.circleci/config.yml +11 -6
  2. package/.github/dependabot.yml +6 -0
  3. package/.github/workflows/issue_tracker.yml +5 -0
  4. package/.github/workflows/release-drafter.yml +6 -0
  5. package/README.md +35 -0
  6. package/dist/33acrossBidAdapter.js +1 -1
  7. package/dist/adagioBidAdapter.js +1 -1
  8. package/dist/adbookpspBidAdapter.js +1 -1
  9. package/dist/adgenerationBidAdapter.js +1 -1
  10. package/dist/adkernelBidAdapter.js +1 -1
  11. package/dist/adotBidAdapter.js +1 -1
  12. package/dist/adpod.js +1 -1
  13. package/dist/adqueryBidAdapter.js +1 -1
  14. package/dist/adrelevantisBidAdapter.js +1 -1
  15. package/dist/adxcgBidAdapter.js +1 -1
  16. package/dist/adyoulikeBidAdapter.js +1 -1
  17. package/dist/ajaBidAdapter.js +1 -1
  18. package/dist/amxBidAdapter.js +1 -1
  19. package/dist/amxIdSystem.js +1 -1
  20. package/dist/appierAnalyticsAdapter.js +1 -1
  21. package/dist/appnexusBidAdapter.js +1 -1
  22. package/dist/asoBidAdapter.js +1 -1
  23. package/dist/audiencerunBidAdapter.js +1 -1
  24. package/dist/axonixBidAdapter.js +1 -1
  25. package/dist/bidglassBidAdapter.js +1 -1
  26. package/dist/big-richmediaBidAdapter.js +1 -1
  27. package/dist/bluebillywigBidAdapter.js +1 -1
  28. package/dist/bridgewellBidAdapter.js +1 -1
  29. package/dist/brightMountainMediaBidAdapter.js +1 -1
  30. package/dist/concertBidAdapter.js +1 -1
  31. package/dist/connectadBidAdapter.js +1 -1
  32. package/dist/consumableBidAdapter.js +1 -1
  33. package/dist/conversantBidAdapter.js +1 -1
  34. package/dist/cpexIdSystem.js +1 -1
  35. package/dist/craftBidAdapter.js +1 -1
  36. package/dist/criteoBidAdapter.js +1 -1
  37. package/dist/debugging-standalone.js +1 -1
  38. package/dist/debugging.js +1 -1
  39. package/dist/dianomiBidAdapter.js +1 -0
  40. package/dist/dspxBidAdapter.js +1 -1
  41. package/dist/eplanningBidAdapter.js +1 -1
  42. package/dist/finativeBidAdapter.js +1 -0
  43. package/dist/fpdModule.js +1 -1
  44. package/dist/gdprEnforcement.js +1 -1
  45. package/dist/glimpseBidAdapter.js +1 -1
  46. package/dist/gmosspBidAdapter.js +1 -1
  47. package/dist/goldbachBidAdapter.js +1 -1
  48. package/dist/gridBidAdapter.js +1 -1
  49. package/dist/gridNMBidAdapter.js +1 -1
  50. package/dist/gumgumBidAdapter.js +1 -1
  51. package/dist/h12mediaBidAdapter.js +1 -1
  52. package/dist/hadronIdSystem.js +1 -1
  53. package/dist/hadronRtdProvider.js +1 -1
  54. package/dist/id5IdSystem.js +1 -1
  55. package/dist/impactifyBidAdapter.js +1 -1
  56. package/dist/improvedigitalBidAdapter.js +1 -1
  57. package/dist/inmarBidAdapter.js +1 -1
  58. package/dist/insticatorBidAdapter.js +1 -1
  59. package/dist/ixBidAdapter.js +1 -1
  60. package/dist/jixieBidAdapter.js +1 -1
  61. package/dist/justpremiumBidAdapter.js +1 -1
  62. package/dist/kargoAnalyticsAdapter.js +1 -1
  63. package/dist/kargoBidAdapter.js +1 -1
  64. package/dist/konduitAnalyticsAdapter.js +1 -1
  65. package/dist/kueezBidAdapter.js +1 -1
  66. package/dist/lassoBidAdapter.js +1 -0
  67. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  68. package/dist/logicadBidAdapter.js +1 -1
  69. package/dist/loglyliftBidAdapter.js +1 -1
  70. package/dist/malltvAnalyticsAdapter.js +1 -1
  71. package/dist/marsmediaBidAdapter.js +1 -1
  72. package/dist/mediafuseBidAdapter.js +1 -1
  73. package/dist/mediakeysBidAdapter.js +1 -1
  74. package/dist/medianetBidAdapter.js +1 -1
  75. package/dist/mediasquareBidAdapter.js +1 -1
  76. package/dist/mgidBidAdapter.js +1 -1
  77. package/dist/minutemediaBidAdapter.js +1 -1
  78. package/dist/missenaBidAdapter.js +1 -1
  79. package/dist/nativoBidAdapter.js +1 -1
  80. package/dist/not-for-prod/prebid.js +137 -131
  81. package/dist/oguryBidAdapter.js +1 -1
  82. package/dist/onetagBidAdapter.js +1 -1
  83. package/dist/ooloAnalyticsAdapter.js +1 -1
  84. package/dist/openxOrtbBidAdapter.js +1 -0
  85. package/dist/outbrainBidAdapter.js +1 -1
  86. package/dist/parrableIdSystem.js +1 -1
  87. package/dist/pixfutureBidAdapter.js +1 -1
  88. package/dist/prebid-core.js +2 -2
  89. package/dist/pubCommonId.js +1 -1
  90. package/dist/publinkIdSystem.js +1 -1
  91. package/dist/pubmaticBidAdapter.js +1 -1
  92. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  93. package/dist/pxyzBidAdapter.js +1 -1
  94. package/dist/quantcastBidAdapter.js +1 -1
  95. package/dist/readpeakBidAdapter.js +1 -1
  96. package/dist/relaidoBidAdapter.js +1 -1
  97. package/dist/rhythmoneBidAdapter.js +1 -1
  98. package/dist/riseBidAdapter.js +1 -1
  99. package/dist/rubiconAnalyticsAdapter.js +1 -1
  100. package/dist/rubiconBidAdapter.js +1 -1
  101. package/dist/seedingAllianceBidAdapter.js +1 -1
  102. package/dist/seedtagBidAdapter.js +1 -1
  103. package/dist/sharedIdSystem.js +1 -1
  104. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  105. package/dist/sharethroughBidAdapter.js +1 -1
  106. package/dist/shinezBidAdapter.js +1 -0
  107. package/dist/sizeMappingV2.js +1 -1
  108. package/dist/smaatoBidAdapter.js +1 -1
  109. package/dist/smartadserverBidAdapter.js +1 -1
  110. package/dist/smartxBidAdapter.js +1 -1
  111. package/dist/smilewantedBidAdapter.js +1 -1
  112. package/dist/sonobiBidAdapter.js +1 -1
  113. package/dist/sovrnAnalyticsAdapter.js +1 -1
  114. package/dist/sovrnBidAdapter.js +1 -1
  115. package/dist/sspBCBidAdapter.js +1 -1
  116. package/dist/sublimeBidAdapter.js +1 -1
  117. package/dist/synacormediaBidAdapter.js +1 -1
  118. package/dist/taboolaBidAdapter.js +1 -1
  119. package/dist/targetVideoBidAdapter.js +1 -1
  120. package/dist/teadsBidAdapter.js +1 -1
  121. package/dist/tncIdSystem.js +1 -0
  122. package/dist/trionBidAdapter.js +1 -1
  123. package/dist/tripleliftBidAdapter.js +1 -1
  124. package/dist/ttdBidAdapter.js +1 -1
  125. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  126. package/dist/underdogmediaBidAdapter.js +1 -1
  127. package/dist/undertoneBidAdapter.js +1 -1
  128. package/dist/userId.js +1 -1
  129. package/dist/ventesBidAdapter.js +1 -1
  130. package/dist/vidazooBidAdapter.js +1 -1
  131. package/dist/videobyteBidAdapter.js +1 -1
  132. package/dist/visxBidAdapter.js +1 -1
  133. package/dist/vrtcalBidAdapter.js +1 -1
  134. package/dist/vuukleBidAdapter.js +1 -1
  135. package/dist/widespaceBidAdapter.js +1 -1
  136. package/dist/winrBidAdapter.js +1 -1
  137. package/dist/yahoosspBidAdapter.js +1 -1
  138. package/dist/yieldlabBidAdapter.js +1 -1
  139. package/dist/yieldmoBidAdapter.js +1 -1
  140. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  141. package/dist/yieldoneBidAdapter.js +1 -1
  142. package/governance.md +5 -11
  143. package/gulpHelpers.js +1 -1
  144. package/gulpfile.js +1 -1
  145. package/karma.conf.maker.js +3 -1
  146. package/modules/.submodules.json +1 -0
  147. package/modules/33acrossBidAdapter.js +5 -1
  148. package/modules/adkernelBidAdapter.js +2 -1
  149. package/modules/adotBidAdapter.js +3 -3
  150. package/modules/adqueryBidAdapter.js +5 -1
  151. package/modules/appnexusBidAdapter.js +3 -3
  152. package/modules/cpexIdSystem.js +7 -8
  153. package/modules/criteoBidAdapter.js +7 -1
  154. package/modules/cwireBidAdapter.md +1 -1
  155. package/modules/debugging/bidInterceptor.js +1 -1
  156. package/modules/debugging/index.js +2 -1
  157. package/modules/dianomiBidAdapter.js +369 -0
  158. package/modules/dianomiBidAdapter.md +73 -0
  159. package/modules/finativeBidAdapter.js +235 -0
  160. package/modules/finativeBidAdapter.md +45 -0
  161. package/modules/fpdModule/index.js +6 -5
  162. package/modules/gdprEnforcement.js +8 -14
  163. package/modules/gumgumBidAdapter.js +2 -0
  164. package/modules/gumgumBidAdapter.md +19 -1
  165. package/modules/hadronAnalyticsAdapter.md +5 -5
  166. package/modules/hadronIdSystem.js +18 -5
  167. package/modules/hadronIdSystem.md +15 -11
  168. package/modules/hadronRtdProvider.js +14 -1
  169. package/modules/hadronRtdProvider.md +17 -13
  170. package/modules/insticatorBidAdapter.js +9 -0
  171. package/modules/ixBidAdapter.js +457 -57
  172. package/modules/ixBidAdapter.md +95 -5
  173. package/modules/kargoAnalyticsAdapter.js +88 -6
  174. package/modules/kargoAnalyticsAdapter.md +33 -0
  175. package/modules/kargoBidAdapter.js +1 -2
  176. package/modules/lassoBidAdapter.js +133 -0
  177. package/modules/lassoBidAdapter.md +29 -0
  178. package/modules/medianetBidAdapter.js +9 -5
  179. package/modules/missenaBidAdapter.js +20 -2
  180. package/modules/nativoBidAdapter.js +19 -7
  181. package/modules/openxBidAdapter.md +3 -1
  182. package/modules/openxOrtbBidAdapter.js +349 -0
  183. package/modules/openxOrtbBidAdapter.md +105 -0
  184. package/modules/pubCommonId.js +1 -2
  185. package/modules/readpeakBidAdapter.js +15 -6
  186. package/modules/relaidoBidAdapter.js +19 -4
  187. package/modules/riseBidAdapter.js +1 -0
  188. package/modules/seedtagBidAdapter.js +33 -1
  189. package/modules/sharedIdSystem.js +11 -5
  190. package/modules/sharethroughBidAdapter.js +9 -24
  191. package/modules/shinezBidAdapter.js +435 -0
  192. package/modules/shinezBidAdapter.md +76 -0
  193. package/modules/sonobiBidAdapter.js +28 -9
  194. package/modules/sovrnBidAdapter.js +16 -10
  195. package/modules/taboolaBidAdapter.js +1 -1
  196. package/modules/taboolaBidAdapter.md +3 -3
  197. package/modules/tncIdSystem.js +63 -0
  198. package/modules/tncIdSystem.md +33 -0
  199. package/modules/userId/eids.js +12 -0
  200. package/modules/userId/eids.md +7 -0
  201. package/modules/userId/userId.md +17 -0
  202. package/modules/ventesBidAdapter.js +1 -1
  203. package/modules/ventesBidAdapter.md +1 -1
  204. package/modules/vrtcalBidAdapter.js +35 -0
  205. package/modules/yieldlabBidAdapter.js +4 -0
  206. package/modules/yieldmoBidAdapter.js +20 -2
  207. package/modules/yieldoneBidAdapter.js +12 -1
  208. package/package.json +1 -1
  209. package/plugins/pbjsGlobals.js +2 -1
  210. package/src/adloader.js +1 -0
  211. package/src/prebid.js +4 -1
  212. package/src/storageManager.js +4 -5
  213. package/test/spec/modules/33acrossBidAdapter_spec.js +39 -0
  214. package/test/spec/modules/appnexusBidAdapter_spec.js +165 -156
  215. package/test/spec/modules/cpexIdSystem_spec.js +5 -5
  216. package/test/spec/modules/criteoBidAdapter_spec.js +15 -5
  217. package/test/spec/modules/debugging_mod_spec.js +7 -0
  218. package/test/spec/modules/dianomiBidAdapter_spec.js +1223 -0
  219. package/test/spec/modules/eids_spec.js +26 -1
  220. package/test/spec/modules/finativeBidAdapter_spec.js +186 -0
  221. package/test/spec/modules/fpdModule_spec.js +28 -1
  222. package/test/spec/modules/gdprEnforcement_spec.js +53 -100
  223. package/test/spec/modules/gumgumBidAdapter_spec.js +5 -0
  224. package/test/spec/modules/hadronIdSystem_spec.js +2 -2
  225. package/test/spec/modules/insticatorBidAdapter_spec.js +22 -1
  226. package/test/spec/modules/ixBidAdapter_spec.js +429 -10
  227. package/test/spec/modules/kargoAnalyticsAdapter_spec.js +42 -0
  228. package/test/spec/modules/kargoBidAdapter_spec.js +1 -0
  229. package/test/spec/modules/lassoBidAdapter_spec.js +177 -0
  230. package/test/spec/modules/medianetBidAdapter_spec.js +24 -1
  231. package/test/spec/modules/missenaBidAdapter_spec.js +36 -14
  232. package/test/spec/modules/nativoBidAdapter_spec.js +67 -17
  233. package/test/spec/modules/openxOrtbBidAdapter_spec.js +1303 -0
  234. package/test/spec/modules/readpeakBidAdapter_spec.js +1 -0
  235. package/test/spec/modules/relaidoBidAdapter_spec.js +29 -2
  236. package/test/spec/modules/riseBidAdapter_spec.js +3 -0
  237. package/test/spec/modules/seedtagBidAdapter_spec.js +4 -0
  238. package/test/spec/modules/sharethroughBidAdapter_spec.js +4 -4
  239. package/test/spec/modules/shinezBidAdapter_spec.js +479 -0
  240. package/test/spec/modules/sonobiBidAdapter_spec.js +38 -23
  241. package/test/spec/modules/sovrnBidAdapter_spec.js +39 -5
  242. package/test/spec/modules/taboolaBidAdapter_spec.js +1 -1
  243. package/test/spec/modules/tncIdSystem_spec.js +109 -0
  244. package/test/spec/modules/userId_spec.js +6 -3
  245. package/test/spec/modules/ventesBidAdapter_spec.js +2 -2
  246. package/test/spec/modules/vrtcalBidAdapter_spec.js +17 -0
  247. package/test/spec/modules/yieldlabBidAdapter_spec.js +4 -0
  248. package/test/spec/modules/yieldmoBidAdapter_spec.js +15 -2
  249. package/test/spec/modules/yieldoneBidAdapter_spec.js +43 -2
  250. package/test/spec/unit/pbjs_api_spec.js +23 -0
  251. package/webpack.conf.js +1 -1
@@ -1 +1 @@
1
- (self.pbjsChunk=self.pbjsChunk||[]).push([[5180],{9716:function(e,n,i){var t=i(265),r=i(4358),a=i(3193),d=i(4699),o=i(5706),s=i(4679),c="https://img.ak.impact-ad.jp/ic/pone/ivt/firstview/js/dac-video-prebid.min.js",p="https://an.cmertv.com/hb/renderer/cmertv-video-yone-prebid.min.js",l={w:640,h:360},u={code:"yieldone",aliases:["y1"],supportedMediaTypes:[s.Mk,s.pX],isBidRequestValid:function(e){return!!e.params.placementId},buildRequests:function(e,n){return e.map((function(e){var i={v:"hb1",p:e.params.placementId,cb:Math.floor(99999999999*Math.random()),r:n.refererInfo.page,uid:e.bidId,tid:e.transactionId,uc:e.adUnitCode,tmax:a.vc.getConfig("bidderTimeout"),t:"i"},d=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=Boolean((0,t.Z)(e,"mediaTypes.banner")),a=Boolean((0,t.Z)(e,"mediaTypes.video"));n&&(i=i||e.mediaType===s.Mk||(0,r.isEmpty)(e.mediaTypes)&&(0,r.isEmpty)(e.mediaType),a=a||e.mediaType===s.pX);if(i&&a)return(0,t.Z)(e,"params.playerParams")?s.pX:s.Mk;if(i)return s.Mk;if(a)return s.pX;return null}(e);switch(d){case s.Mk:i.sz=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=(0,t.Z)(e,"mediaTypes.banner.sizes");n&&(i=i||e.sizes);return(0,r.parseSizesInput)(i).join(",")}(e);break;case s.pX:var o=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=function(e){var n=null,i=(0,r.parseSizesInput)(e)[0];if((0,r.isEmpty)(i))return n;var t=i.split("x"),a={w:parseInt(t[0],10),h:parseInt(t[1],10)};return!(0,r.isEmpty)(a)&&isFinite(a.w)&&isFinite(a.h)?n=a:n},d=a((0,t.Z)(e,"mediaTypes.video.playerSize"));n&&(d=d||a(e.sizes));i&&d&&1===d.w&&1===d.h&&(d=a((0,t.Z)(e,"params.playerSize")));return d||l}(e);i.w=o.w,i.h=o.h}var c=(0,t.Z)(e,"userId.idl_env");(0,r.isStr)(c)&&!(0,r.isEmpty)(c)&&(i.lr_env=c);var p=(0,t.Z)(e,"userId.imuid");return(0,r.isStr)(p)&&!(0,r.isEmpty)(p)&&(i.imuid=p),{method:"GET",url:"https://y.one.impact-ad.jp/h_bid",data:i}}))},interpretResponse:function(e,n){var i=[],t=e.body,d=t.crid||0,l=t.width||0,u=t.height||0,f=1e3*t.cpm||0;if(0!==l&&0!==u&&0!==f&&0!==d){var h=t.dealId||"",g=t.renderid||"",v=t.currency||"JPY",y=void 0===t.netRevenue||t.netRevenue,b=n.data.r||"",E={requestId:t.uid,cpm:f,width:t.width,height:t.height,creativeId:d,dealId:h,currency:v,netRevenue:y,ttl:a.vc.getConfig("_bidderTimeout"),referrer:b,meta:{advertiserDomains:t.adomain?t.adomain:[]}};if(t.adTag&&"ViewableRendering"===g){E.mediaType=s.Mk;var T='\n <script src="'.concat("https://img.ak.impact-ad.jp/ic/pone/ivt/firstview/js/prebid-adformat-config.js",'"><\/script>\n <script>\n let width =').concat(E.width,";\n let height =").concat(E.height,";\n let adTag = `").concat(t.adTag.replace(/\\/g,"\\\\").replace(/\//g,"\\/").replace(/'/g,"\\'").replace(/"/g,'\\"'),'`;\n let targetId ="').concat(n.data.uc,'";\n window.YONEPBViewable = {};\n window.YONEPBViewable.executed = false;\n const viewablePercentage = window.pb_conf.viewablePercentage;\n const viewableRange = height * 0.01 * viewablePercentage;\n const iframe = document.createElement(\'iframe\');\n iframe.setAttribute("style", "border: 0; margin: 0 auto; left: 0; top: 0; width:" + width + "px; height:" + height + "px;");\n iframe.frameBorder = 0; iframe.scrolling = \'no\';\n const inDap = document.createElement(\'script\');\n inDap.innerHTML = "inDapIF = true;";\n iframe.appendChild(inDap);\n window.frameElement.parentElement.appendChild(iframe);\n const doc = iframe.contentWindow ? iframe.contentWindow.document : iframe.contentDocument;\n if(!window.parent.$sf){\n let target = window.top.document.getElementById(targetId);\n window.top.addEventListener(\'scroll\', () => {\n const targetRect = target.getBoundingClientRect();\n if (!window.YONEPBViewable.executed && window.top.innerHeight - targetRect.top > viewableRange) {\n window.YONEPBViewable.executed = true;\n doc.open(); doc.write(adTag); doc.close();\n window.frameElement.style.display = "none";\n }\n }, false);\n }else{\n let disp = function(){\n if(!window.YONEPBViewable.executed && window.parent.$sf.ext.inViewPercentage() > viewablePercentage){\n window.YONEPBViewable.executed = true;\n doc.open(); doc.write(adTag); doc.close();\n window.frameElement.style.display = "none";\n }\n let id = setTimeout(disp, 100);\n if(window.YONEPBViewable.executed){clearTimeout(id);}\n };\n disp();\n }\n <\/script>\n ');E.ad=T}else t.adTag?(E.mediaType=s.Mk,E.ad=t.adTag):t.adm&&(E.mediaType=s.pX,E.vastXml=t.adm,E.renderer="cmer"===g?function(e){var n=o.Th.install({id:e.uid,url:p,loaded:!1});try{n.setRender(w)}catch(e){(0,r.logWarn)("Prebid Error calling setRender on newRenderer",e)}return n}(t):function(e){var n=o.Th.install({id:e.uid,url:c,loaded:!1});try{n.setRender(m)}catch(e){(0,r.logWarn)("Prebid Error calling setRender on newRenderer",e)}return n}(t));i.push(E)}return i},getUserSyncs:function(e){if(e.iframeEnabled)return[{type:"iframe",url:"https://y.one.impact-ad.jp/push_sync"}]}};function m(e){e.renderer.push((function(){window.DACIVTPREBID.renderPrebid(e)}))}function w(e){e.renderer.push((function(){window.CMERYONEPREBID.renderPrebid(e)}))}(0,d.dX)(u),window.pbjs.installedModules.push("yieldoneBidAdapter")}},function(e){var n;n=9716,e(e.s=n)}]);
1
+ (self.pbjsChunk=self.pbjsChunk||[]).push([[5180],{9716:function(e,n,i){var t=i(265),r=i(4358),a=i(3193),d=i(4699),o=i(5706),s=i(4679),c="https://img.ak.impact-ad.jp/ic/pone/ivt/firstview/js/dac-video-prebid.min.js",p="https://an.cmertv.com/hb/renderer/cmertv-video-yone-prebid.min.js",l={w:640,h:360},u={code:"yieldone",aliases:["y1"],supportedMediaTypes:[s.Mk,s.pX],isBidRequestValid:function(e){return!!e.params.placementId},buildRequests:function(e,n){return e.map((function(e){var i={v:"hb1",p:e.params.placementId,cb:Math.floor(99999999999*Math.random()),r:n.refererInfo.page,uid:e.bidId,tid:e.transactionId,uc:e.adUnitCode,tmax:a.vc.getConfig("bidderTimeout"),t:"i",language:window.navigator.language,screen_size:window.screen.width+"x"+window.screen.height},d=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=Boolean((0,t.Z)(e,"mediaTypes.banner")),a=Boolean((0,t.Z)(e,"mediaTypes.video"));n&&(i=i||e.mediaType===s.Mk||(0,r.isEmpty)(e.mediaTypes)&&(0,r.isEmpty)(e.mediaType),a=a||e.mediaType===s.pX);if(i&&a)return(0,t.Z)(e,"params.playerParams")?s.pX:s.Mk;if(i)return s.Mk;if(a)return s.pX;return null}(e);switch(d){case s.Mk:i.sz=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=(0,t.Z)(e,"mediaTypes.banner.sizes");n&&(i=i||e.sizes);return(0,r.parseSizesInput)(i).join(",")}(e);break;case s.pX:var o=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=function(e){var n=null,i=(0,r.parseSizesInput)(e)[0];if((0,r.isEmpty)(i))return n;var t=i.split("x"),a={w:parseInt(t[0],10),h:parseInt(t[1],10)};return!(0,r.isEmpty)(a)&&isFinite(a.w)&&isFinite(a.h)?n=a:n},d=a((0,t.Z)(e,"mediaTypes.video.playerSize"));n&&(d=d||a(e.sizes));i&&d&&1===d.w&&1===d.h&&(d=a((0,t.Z)(e,"params.playerSize")));return d||l}(e);i.w=o.w,i.h=o.h}var c=(0,t.Z)(e,"userId.idl_env");(0,r.isStr)(c)&&!(0,r.isEmpty)(c)&&(i.lr_env=c);var p=(0,t.Z)(e,"userId.imuid");(0,r.isStr)(p)&&!(0,r.isEmpty)(p)&&(i.imuid=p);var u=(0,t.Z)(e,"userId.dacId.id");return(0,r.isStr)(u)&&!(0,r.isEmpty)(u)&&(i.dac_id=u,i.fuuid=u),{method:"GET",url:"https://y.one.impact-ad.jp/h_bid",data:i}}))},interpretResponse:function(e,n){var i=[],t=e.body,d=t.crid||0,l=t.width||0,u=t.height||0,f=1e3*t.cpm||0;if(0!==l&&0!==u&&0!==f&&0!==d){var h=t.dealId||"",g=t.renderid||"",v=t.currency||"JPY",y=void 0===t.netRevenue||t.netRevenue,b=n.data.r||"",E={requestId:t.uid,cpm:f,width:t.width,height:t.height,creativeId:d,dealId:h,currency:v,netRevenue:y,ttl:a.vc.getConfig("_bidderTimeout"),referrer:b,meta:{advertiserDomains:t.adomain?t.adomain:[]}};if(t.adTag&&"ViewableRendering"===g){E.mediaType=s.Mk;var T='\n <script src="'.concat("https://img.ak.impact-ad.jp/ic/pone/ivt/firstview/js/prebid-adformat-config.js",'"><\/script>\n <script>\n let width =').concat(E.width,";\n let height =").concat(E.height,";\n let adTag = `").concat(t.adTag.replace(/\\/g,"\\\\").replace(/\//g,"\\/").replace(/'/g,"\\'").replace(/"/g,'\\"'),'`;\n let targetId ="').concat(n.data.uc,'";\n window.YONEPBViewable = {};\n window.YONEPBViewable.executed = false;\n const viewablePercentage = window.pb_conf.viewablePercentage;\n const viewableRange = height * 0.01 * viewablePercentage;\n const iframe = document.createElement(\'iframe\');\n iframe.setAttribute("style", "border: 0; margin: 0 auto; left: 0; top: 0; width:" + width + "px; height:" + height + "px;");\n iframe.frameBorder = 0; iframe.scrolling = \'no\';\n const inDap = document.createElement(\'script\');\n inDap.innerHTML = "inDapIF = true;";\n iframe.appendChild(inDap);\n window.frameElement.parentElement.appendChild(iframe);\n const doc = iframe.contentWindow ? iframe.contentWindow.document : iframe.contentDocument;\n if(!window.parent.$sf){\n let target = window.top.document.getElementById(targetId);\n window.top.addEventListener(\'scroll\', () => {\n const targetRect = target.getBoundingClientRect();\n if (!window.YONEPBViewable.executed && window.top.innerHeight - targetRect.top > viewableRange) {\n window.YONEPBViewable.executed = true;\n doc.open(); doc.write(adTag); doc.close();\n window.frameElement.style.display = "none";\n }\n }, false);\n }else{\n let disp = function(){\n if(!window.YONEPBViewable.executed && window.parent.$sf.ext.inViewPercentage() > viewablePercentage){\n window.YONEPBViewable.executed = true;\n doc.open(); doc.write(adTag); doc.close();\n window.frameElement.style.display = "none";\n }\n let id = setTimeout(disp, 100);\n if(window.YONEPBViewable.executed){clearTimeout(id);}\n };\n disp();\n }\n <\/script>\n ');E.ad=T}else t.adTag?(E.mediaType=s.Mk,E.ad=t.adTag):t.adm&&(E.mediaType=s.pX,E.vastXml=t.adm,E.renderer="cmer"===g?function(e){var n=o.Th.install({id:e.uid,url:p,loaded:!1});try{n.setRender(w)}catch(e){(0,r.logWarn)("Prebid Error calling setRender on newRenderer",e)}return n}(t):function(e){var n=o.Th.install({id:e.uid,url:c,loaded:!1});try{n.setRender(m)}catch(e){(0,r.logWarn)("Prebid Error calling setRender on newRenderer",e)}return n}(t));i.push(E)}return i},getUserSyncs:function(e){if(e.iframeEnabled)return[{type:"iframe",url:"https://y.one.impact-ad.jp/push_sync"}]}};function m(e){e.renderer.push((function(){window.DACIVTPREBID.renderPrebid(e)}))}function w(e){e.renderer.push((function(){window.CMERYONEPREBID.renderPrebid(e)}))}(0,d.dX)(u),window.pbjs.installedModules.push("yieldoneBidAdapter")}},function(e){var n;n=9716,e(e.s=n)}]);
package/governance.md CHANGED
@@ -9,15 +9,9 @@ This document describes the governance model for the Prebid project. The Prebid
9
9
 
10
10
  ### Roles and Responsibilities:
11
11
  - **User:** Any individual who consumes / uses the Prebid.js library.
12
- - **Contributor:** Any individual who contributes code that is subsequently merged to the project. Contributed code is governed by the Prebid.js [license](https://github.com/prebid/Prebid.js/blob/master/LICENSE). Contributors are required to sign a CLA before any code can be committed (CLA pending).
13
- - **Core Team Member:** An individual contributor who has been appointed by the Tech Lead on the project to maintain it and further it’s stated goals.
14
- - **Tech Lead:** The Tech Lead is responsible for overall technical direction of the project. The Tech Lead will work closely with Core Team members to facilitate development and further the project goals.
12
+ - **Contributor:** Any individual who contributes code that is subsequently merged to the project. Contributed code is governed by the Prebid.js [license](https://github.com/prebid/Prebid.js/blob/master/LICENSE).
13
+ - **Core & Review Team Member:** An individual contributor who has been appointed by the Tech Lead on the project to maintain it and further it’s stated goals.
14
+ - **Identity Team Member:** An individual contributor who has been appointed by the Identity PMC to review and maintain the identity modules and further the PMC stated goals.
15
+ - **Tech Lead:** The Tech Lead is responsible for overall technical direction of the project & serves as the PMC chair. The Tech Lead will work closely with Core Team members to facilitate development and further the project goals.
15
16
 
16
- ### Current Prebid.js Core Team
17
- - @mkendall07 (Tech Lead)
18
- - @jsnellbaker
19
- - @matthewlane
20
- - @jaiminpanchal27
21
- - @snapwich
22
- - @harpere
23
- - @mike-chowla
17
+ The Core team is currently visible at https://github.com/orgs/prebid/teams/core/members to project members.
package/gulpHelpers.js CHANGED
@@ -91,7 +91,7 @@ module.exports = {
91
91
  },
92
92
  getLibraryFiles(name) {
93
93
  const library = libraries[name];
94
- const files = library.files.map(file => require.resolve(file, {paths: ['./libraries/' + name + '/']}));
94
+ const files = library.files.map((file) => path.resolve('./libraries/', name, file))
95
95
  return files;
96
96
  },
97
97
  isLibrary(name) {
package/gulpfile.js CHANGED
@@ -119,7 +119,7 @@ function makeDevpackPkg() {
119
119
  mode: 'development'
120
120
  })
121
121
 
122
- const babelConfig = require('./babelConfig.js')({prebidDistUrlBase: '/build/dev/'});
122
+ const babelConfig = require('./babelConfig.js')({disableFeatures: helpers.getDisabledFeatures(), prebidDistUrlBase: argv.distUrlBase || '/build/dev/'});
123
123
 
124
124
  // update babel config to set local dist url
125
125
  cloned.module.rules
@@ -92,7 +92,9 @@ function setBrowsers(karmaConf, browserstack) {
92
92
  karmaConf.browserStack = {
93
93
  username: process.env.BROWSERSTACK_USERNAME,
94
94
  accessKey: process.env.BROWSERSTACK_ACCESS_KEY,
95
- build: 'Prebidjs Unit Tests ' + new Date().toLocaleString()
95
+ build: 'Prebidjs Unit Tests ' + new Date().toLocaleString(),
96
+ startTunnel: false,
97
+ localIdentifier: process.env.CIRCLE_WORKFLOW_JOB_ID
96
98
  }
97
99
  if (process.env.TRAVIS) {
98
100
  karmaConf.browserStack.startTunnel = false;
@@ -35,6 +35,7 @@
35
35
  "quantcastIdSystem",
36
36
  "sharedIdSystem",
37
37
  "tapadIdSystem",
38
+ "tncIdSystem",
38
39
  "trustpidSystem",
39
40
  "uid2IdSystem",
40
41
  "unifiedIdSystem",
@@ -16,6 +16,7 @@ import { BANNER, VIDEO } from '../src/mediaTypes.js';
16
16
 
17
17
  // **************************** UTILS *************************** //
18
18
  const BIDDER_CODE = '33across';
19
+ const BIDDER_ALIASES = ['33across_mgni'];
19
20
  const END_POINT = 'https://ssc.33across.com/api/v1/hb';
20
21
  const SYNC_ENDPOINT = 'https://ssc-cms.33across.com/ps/?m=xch&rt=html&ru=deb';
21
22
 
@@ -70,7 +71,9 @@ function isBidRequestValid(bid) {
70
71
  }
71
72
 
72
73
  function _validateBasic(bid) {
73
- if (bid.bidder !== BIDDER_CODE || typeof bid.params === 'undefined') {
74
+ const invalidBidderName = bid.bidder !== BIDDER_CODE && !BIDDER_ALIASES.includes(bid.bidder);
75
+
76
+ if (invalidBidderName || !bid.params) {
74
77
  return false;
75
78
  }
76
79
 
@@ -735,6 +738,7 @@ export const spec = {
735
738
  NON_MEASURABLE,
736
739
 
737
740
  code: BIDDER_CODE,
741
+ aliases: BIDDER_ALIASES,
738
742
  supportedMediaTypes: [ BANNER, VIDEO ],
739
743
  gvlid: GVLID,
740
744
  isBidRequestValid,
@@ -92,7 +92,8 @@ export const spec = {
92
92
  {code: 'ergadx'},
93
93
  {code: 'turktelekom'},
94
94
  {code: 'felixads'},
95
- {code: 'motionspots'}
95
+ {code: 'motionspots'},
96
+ {code: 'sonic_twist'}
96
97
  ],
97
98
  supportedMediaTypes: [BANNER, VIDEO, NATIVE],
98
99
 
@@ -49,15 +49,15 @@ function tryParse(data) {
49
49
  * @returns {Site|null} Formatted Site OpenRtb object or null
50
50
  */
51
51
  function getOpenRTBSiteObject(bidderRequest) {
52
- if (!bidderRequest || !bidderRequest.refererInfo) return null;
52
+ const refererInfo = (bidderRequest && bidderRequest.refererInfo) || null;
53
53
 
54
- const domain = bidderRequest.refererInfo.domain;
54
+ const domain = refererInfo ? refererInfo.domain : window.location.hostname;
55
55
  const publisherId = config.getConfig('adot.publisherId');
56
56
 
57
57
  if (!domain) return null;
58
58
 
59
59
  return {
60
- page: bidderRequest.refererInfo.page,
60
+ page: refererInfo ? refererInfo.page : window.location.href,
61
61
  domain: domain,
62
62
  name: domain,
63
63
  publisher: {
@@ -178,11 +178,15 @@ export const spec = {
178
178
 
179
179
  };
180
180
  function buildRequest(validBidRequests, bidderRequest) {
181
- let qid = Math.random().toString(36).substring(2) + Date.now().toString(36);
181
+ let gnerateQid = (Math.random().toString(36).substring(2)) + ((new Date().getTime()).toString(36));
182
182
  let bid = validBidRequests;
183
+ let qid = gnerateQid;
183
184
 
184
185
  if (storage.getDataFromLocalStorage('qid')) {
185
186
  qid = storage.getDataFromLocalStorage('qid');
187
+ if (qid && qid.includes('%7B%22')) {
188
+ qid = gnerateQid;
189
+ }
186
190
  } else {
187
191
  storage.setDataInLocalStorage('qid', qid);
188
192
  }
@@ -447,7 +447,7 @@ export const spec = {
447
447
  * @param {Bid} bid
448
448
  */
449
449
  onBidWon: function (bid) {
450
- if (bid.native) {
450
+ if (FEATURES.NATIVE && bid.native) {
451
451
  reloadViewabilityScriptWithCorrectParameters(bid);
452
452
  }
453
453
  }
@@ -715,7 +715,7 @@ function newBid(serverBid, rtbBid, bidderRequest) {
715
715
  bid.vastUrl = rtbBid.notify_url + '&redir=' + encodeURIComponent(rtbBid.rtb.video.asset_url);
716
716
  break;
717
717
  }
718
- } else if (rtbBid.rtb[NATIVE]) {
718
+ } else if (FEATURES.NATIVE && rtbBid.rtb[NATIVE]) {
719
719
  const nativeAd = rtbBid.rtb[NATIVE];
720
720
 
721
721
  // setting up the jsTracker:
@@ -853,7 +853,7 @@ function bidToTag(bid) {
853
853
  tag.gpid = gpid;
854
854
  }
855
855
 
856
- if (bid.mediaType === NATIVE || deepAccess(bid, `mediaTypes.${NATIVE}`)) {
856
+ if (FEATURES.NATIVE && (bid.mediaType === NATIVE || deepAccess(bid, `mediaTypes.${NATIVE}`))) {
857
857
  tag.ad_types.push(NATIVE);
858
858
  if (tag.sizes.length === 0) {
859
859
  tag.sizes = transformSizes([1, 1]);
@@ -12,11 +12,11 @@ import { getStorageManager } from '../src/storageManager.js'
12
12
  export const storage = getStorageManager({ gvlid: 570, moduleName: 'cpexId' })
13
13
 
14
14
  // Returns the id string from either cookie or localstorage
15
- const getId = () => { return storage.getCookie('caid') || storage.getDataFromLocalStorage('caid') }
15
+ const readId = () => { return storage.getCookie('czaid') || storage.getDataFromLocalStorage('czaid') }
16
16
 
17
17
  /** @type {Submodule} */
18
18
  export const cpexIdSubmodule = {
19
- version: '0.0.4',
19
+ version: '0.0.5',
20
20
  /**
21
21
  * used to link submodule with config
22
22
  * @type {string}
@@ -30,19 +30,18 @@ export const cpexIdSubmodule = {
30
30
  /**
31
31
  * decode the stored id value for passing to bid requests
32
32
  * @function decode
33
- * @param {(Object|string)} value
34
33
  * @returns {(Object|undefined)}
35
34
  */
36
- decode (value) { return { cpexId: getId() } },
35
+ decode () { return { cpexId: readId() } },
37
36
  /**
38
37
  * performs action to obtain id and return a value in the callback's response argument
39
38
  * @function
40
- * @param {SubmoduleConfig} [config]
41
- * @param {ConsentData} [consentData]
42
- * @param {(Object|undefined)} cacheIdObj
43
39
  * @returns {IdResponse|undefined}
44
40
  */
45
- getId (config, consentData) { return { cpexId: getId() } }
41
+ getId () {
42
+ const id = readId()
43
+ return id ? { id: id } : undefined
44
+ }
46
45
  }
47
46
 
48
47
  submodule('userId', cpexIdSubmodule)
@@ -13,7 +13,7 @@ const BIDDER_CODE = 'criteo';
13
13
  const CDB_ENDPOINT = 'https://bidder.criteo.com/cdb';
14
14
  const PROFILE_ID_INLINE = 207;
15
15
  export const PROFILE_ID_PUBLISHERTAG = 185;
16
- const storage = getStorageManager({ gvlid: GVLID, bidderCode: BIDDER_CODE });
16
+ export const storage = getStorageManager({ gvlid: GVLID, bidderCode: BIDDER_CODE });
17
17
  const LOG_PREFIX = 'Criteo: ';
18
18
 
19
19
  /*
@@ -255,6 +255,12 @@ function buildCdbUrl(context) {
255
255
  url += '&wv=' + encodeURIComponent('$prebid.version$');
256
256
  url += '&cb=' + String(Math.floor(Math.random() * 99999999999));
257
257
 
258
+ if (storage.localStorageIsEnabled()) {
259
+ url += '&lsavail=1';
260
+ } else {
261
+ url += '&lsavail=0';
262
+ }
263
+
258
264
  if (context.amp) {
259
265
  url += '&im=1';
260
266
  }
@@ -38,7 +38,7 @@ var adUnits = [
38
38
  params: {
39
39
  pageId: 1422, // required - number
40
40
  placementId: 2211521, // required - number
41
- cwcreative: 42, // optional - id of creative to force
41
+ cwcreative: '42', // optional - id of creative to force
42
42
  refgroups: 'test-user', // optional - name of group or coma separated list of groups to force
43
43
  cwapikey: 'api_key_xyz', // optional - api key for integration testing
44
44
  }
@@ -122,7 +122,7 @@ Object.assign(BidInterceptor.prototype, {
122
122
  replFn = () => ({});
123
123
  } else {
124
124
  replFn = ({args, ref = replDef}) => {
125
- const result = {};
125
+ const result = Array.isArray(ref) ? [] : {};
126
126
  Object.entries(ref).forEach(([key, val]) => {
127
127
  if (typeof val === 'function') {
128
128
  result[key] = val(...args);
@@ -3,5 +3,6 @@ import {hook} from '../../src/hook.js';
3
3
  import {install} from './debugging.js';
4
4
  import {prefixLog} from '../../src/utils.js';
5
5
  import {createBid} from '../../src/bidfactory.js';
6
+ import {DEBUG_KEY} from '../../src/debugging.js';
6
7
 
7
- install({config, hook, createBid, logger: prefixLog('DEBUG:')});
8
+ install({DEBUG_KEY, config, hook, createBid, logger: prefixLog('DEBUG:')});
@@ -0,0 +1,369 @@
1
+ // jshint esversion: 6, es3: false, node: true
2
+ 'use strict';
3
+
4
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
5
+ import { NATIVE, BANNER, VIDEO } from '../src/mediaTypes.js';
6
+ import {
7
+ mergeDeep,
8
+ _map,
9
+ deepAccess,
10
+ parseSizesInput,
11
+ deepSetValue,
12
+ formatQS,
13
+ } from '../src/utils.js';
14
+ import { config } from '../src/config.js';
15
+ import { Renderer } from '../src/Renderer.js';
16
+
17
+ const { getConfig } = config;
18
+
19
+ const BIDDER_CODE = 'dianomi';
20
+ const GVLID = 885;
21
+ const BIDDER_ALIAS = [{ code: 'dia', gvlid: GVLID }];
22
+ const NATIVE_ASSET_IDS = {
23
+ 0: 'title',
24
+ 2: 'icon',
25
+ 3: 'image',
26
+ 5: 'sponsoredBy',
27
+ 4: 'body',
28
+ 1: 'cta',
29
+ };
30
+ const NATIVE_PARAMS = {
31
+ title: {
32
+ id: 0,
33
+ name: 'title',
34
+ },
35
+ icon: {
36
+ id: 2,
37
+ type: 1,
38
+ name: 'img',
39
+ },
40
+ image: {
41
+ id: 3,
42
+ type: 3,
43
+ name: 'img',
44
+ },
45
+ sponsoredBy: {
46
+ id: 5,
47
+ name: 'data',
48
+ type: 1,
49
+ },
50
+ body: {
51
+ id: 4,
52
+ name: 'data',
53
+ type: 2,
54
+ },
55
+ cta: {
56
+ id: 1,
57
+ type: 12,
58
+ name: 'data',
59
+ },
60
+ };
61
+ let endpoint = 'www-prebid.dianomi.com';
62
+
63
+ const OUTSTREAM_RENDERER_URL = (hostname) => `https://${hostname}/prebid/outstream/renderer.js`;
64
+
65
+ export const spec = {
66
+ code: BIDDER_CODE,
67
+ aliases: BIDDER_ALIAS,
68
+ gvlid: GVLID,
69
+ supportedMediaTypes: [NATIVE, BANNER, VIDEO],
70
+ isBidRequestValid: (bid) => {
71
+ const params = bid.params || {};
72
+ const { smartadId } = params;
73
+ return !!smartadId;
74
+ },
75
+ buildRequests: (validBidRequests, bidderRequest) => {
76
+ let app, site;
77
+
78
+ const commonFpd = bidderRequest.ortb2 || {};
79
+ let { user } = commonFpd;
80
+
81
+ if (typeof getConfig('app') === 'object') {
82
+ app = getConfig('app') || {};
83
+ if (commonFpd.app) {
84
+ mergeDeep(app, commonFpd.app);
85
+ }
86
+ } else {
87
+ site = getConfig('site') || {};
88
+ if (commonFpd.site) {
89
+ mergeDeep(site, commonFpd.site);
90
+ }
91
+
92
+ if (!site.page) {
93
+ site.page = bidderRequest.refererInfo.page;
94
+ }
95
+ }
96
+
97
+ const device = getConfig('device') || {};
98
+ device.w = device.w || window.innerWidth;
99
+ device.h = device.h || window.innerHeight;
100
+ device.ua = device.ua || navigator.userAgent;
101
+
102
+ const paramsEndpoint = setOnAny(validBidRequests, 'params.endpoint');
103
+
104
+ if (paramsEndpoint) {
105
+ endpoint = paramsEndpoint;
106
+ }
107
+
108
+ const pt =
109
+ setOnAny(validBidRequests, 'params.pt') ||
110
+ setOnAny(validBidRequests, 'params.priceType') ||
111
+ 'net';
112
+ const tid = validBidRequests[0].transactionId;
113
+ const currency = getConfig('currency.adServerCurrency');
114
+ const cur = currency && [currency];
115
+ const eids = setOnAny(validBidRequests, 'userIdAsEids');
116
+ const schain = setOnAny(validBidRequests, 'schain');
117
+
118
+ const imp = validBidRequests.map((bid, id) => {
119
+ bid.netRevenue = pt;
120
+
121
+ const floorInfo = bid.getFloor
122
+ ? bid.getFloor({
123
+ currency: currency || 'USD',
124
+ })
125
+ : {};
126
+ const bidfloor = floorInfo.floor;
127
+ const bidfloorcur = floorInfo.currency;
128
+ const { smartadId } = bid.params;
129
+
130
+ const imp = {
131
+ id: id + 1,
132
+ tagid: smartadId,
133
+ bidfloor,
134
+ bidfloorcur,
135
+ ext: {
136
+ bidder: {
137
+ smartadId: smartadId,
138
+ },
139
+ },
140
+ };
141
+
142
+ const assets = _map(bid.nativeParams, (bidParams, key) => {
143
+ const props = NATIVE_PARAMS[key];
144
+ const asset = {
145
+ required: bidParams.required & 1,
146
+ };
147
+ if (props) {
148
+ asset.id = props.id;
149
+ let wmin, hmin, w, h;
150
+ let aRatios = bidParams.aspect_ratios;
151
+
152
+ if (aRatios && aRatios[0]) {
153
+ aRatios = aRatios[0];
154
+ wmin = aRatios.min_width || 0;
155
+ hmin = ((aRatios.ratio_height * wmin) / aRatios.ratio_width) | 0;
156
+ }
157
+
158
+ if (bidParams.sizes) {
159
+ const sizes = flatten(bidParams.sizes);
160
+ w = sizes[0];
161
+ h = sizes[1];
162
+ }
163
+
164
+ asset[props.name] = {
165
+ len: bidParams.len,
166
+ type: props.type,
167
+ wmin,
168
+ hmin,
169
+ w,
170
+ h,
171
+ };
172
+
173
+ return asset;
174
+ }
175
+ }).filter(Boolean);
176
+
177
+ if (assets.length) {
178
+ imp.native = {
179
+ assets,
180
+ };
181
+ }
182
+
183
+ const bannerParams = deepAccess(bid, 'mediaTypes.banner');
184
+
185
+ if (bannerParams && bannerParams.sizes) {
186
+ const sizes = parseSizesInput(bannerParams.sizes);
187
+ const format = sizes.map((size) => {
188
+ const [width, height] = size.split('x');
189
+ const w = parseInt(width, 10);
190
+ const h = parseInt(height, 10);
191
+ return { w, h };
192
+ });
193
+
194
+ imp.banner = {
195
+ format,
196
+ };
197
+ }
198
+
199
+ const videoParams = deepAccess(bid, 'mediaTypes.video');
200
+ if (videoParams) {
201
+ imp.video = videoParams;
202
+ }
203
+
204
+ return imp;
205
+ });
206
+
207
+ const request = {
208
+ id: bidderRequest.auctionId,
209
+ site,
210
+ app,
211
+ user,
212
+ device,
213
+ source: { tid, fd: 1 },
214
+ ext: { pt },
215
+ cur,
216
+ imp,
217
+ };
218
+
219
+ if (deepAccess(bidderRequest, 'gdprConsent.gdprApplies') !== undefined) {
220
+ deepSetValue(request, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
221
+ deepSetValue(request, 'regs.ext.gdpr', bidderRequest.gdprConsent.gdprApplies & 1);
222
+ }
223
+
224
+ if (bidderRequest.uspConsent) {
225
+ deepSetValue(request, 'regs.ext.us_privacy', bidderRequest.uspConsent);
226
+ }
227
+
228
+ if (eids) {
229
+ deepSetValue(request, 'user.ext.eids', eids);
230
+ }
231
+
232
+ if (schain) {
233
+ deepSetValue(request, 'source.ext.schain', schain);
234
+ }
235
+
236
+ return {
237
+ method: 'POST',
238
+ url: 'https://' + endpoint + '/cgi-bin/smartads_prebid.pl',
239
+ data: JSON.stringify(request),
240
+ bids: validBidRequests,
241
+ };
242
+ },
243
+ interpretResponse: function (serverResponse, { bids }) {
244
+ if (!serverResponse.body || serverResponse?.body?.nbr) {
245
+ return;
246
+ }
247
+ const { seatbid, cur } = serverResponse.body;
248
+
249
+ const bidResponses = flatten(seatbid.map((seat) => seat.bid)).reduce((result, bid) => {
250
+ result[bid.impid - 1] = bid;
251
+ return result;
252
+ }, []);
253
+
254
+ return bids
255
+ .map((bid, id) => {
256
+ const bidResponse = bidResponses[id];
257
+ if (bidResponse) {
258
+ const mediaType = deepAccess(bidResponse, 'ext.prebid.type');
259
+ const result = {
260
+ requestId: bid.bidId,
261
+ cpm: bidResponse.price,
262
+ creativeId: bidResponse.crid,
263
+ ttl: 360,
264
+ netRevenue: bid.netRevenue === 'net',
265
+ currency: cur,
266
+ mediaType,
267
+ width: bidResponse.w,
268
+ height: bidResponse.h,
269
+ dealId: bidResponse.dealid,
270
+ meta: {
271
+ mediaType,
272
+ advertiserDomains: bidResponse.adomain,
273
+ },
274
+ };
275
+
276
+ if (bidResponse.native) {
277
+ result.native = parseNative(bidResponse);
278
+ } else {
279
+ result[mediaType === VIDEO ? 'vastXml' : 'ad'] = bidResponse.adm;
280
+ }
281
+
282
+ if (
283
+ !bid.renderer &&
284
+ mediaType === VIDEO &&
285
+ deepAccess(bid, 'mediaTypes.video.context') === 'outstream'
286
+ ) {
287
+ result.renderer = Renderer.install({
288
+ id: bid.bidId,
289
+ url: OUTSTREAM_RENDERER_URL(endpoint),
290
+ adUnitCode: bid.adUnitCode,
291
+ });
292
+ result.renderer.setRender(renderer);
293
+ }
294
+
295
+ return result;
296
+ }
297
+ })
298
+ .filter(Boolean);
299
+ },
300
+ getUserSyncs: (syncOptions, responses, gdprConsent, uspConsent) => {
301
+ if (syncOptions.iframeEnabled) {
302
+ // data is only assigned if params are available to pass to syncEndpoint
303
+ const params = {};
304
+
305
+ if (gdprConsent) {
306
+ if (typeof gdprConsent.gdprApplies === 'boolean') {
307
+ params['gdpr'] = Number(gdprConsent.gdprApplies);
308
+ }
309
+ if (typeof gdprConsent.consentString === 'string') {
310
+ params['gdpr_consent'] = gdprConsent.consentString;
311
+ }
312
+ }
313
+
314
+ if (uspConsent) {
315
+ params['us_privacy'] = encodeURIComponent(uspConsent);
316
+ }
317
+
318
+ return {
319
+ type: 'iframe',
320
+ url: `https://${endpoint}/prebid/usersync/index.html?${formatQS(params)}`,
321
+ };
322
+ }
323
+ },
324
+ };
325
+
326
+ registerBidder(spec);
327
+
328
+ function parseNative(bid) {
329
+ const { assets, link, imptrackers, jstracker } = bid.native;
330
+ const result = {
331
+ clickUrl: link.url,
332
+ clickTrackers: link.clicktrackers || undefined,
333
+ impressionTrackers: imptrackers || undefined,
334
+ javascriptTrackers: jstracker ? [jstracker] : undefined,
335
+ };
336
+ assets.forEach((asset) => {
337
+ const kind = NATIVE_ASSET_IDS[asset.id];
338
+ const content = kind && asset[NATIVE_PARAMS[kind].name];
339
+ if (content) {
340
+ result[kind] = content.text ||
341
+ content.value || {
342
+ url: content.url,
343
+ width: content.w,
344
+ height: content.h,
345
+ };
346
+ }
347
+ });
348
+
349
+ return result;
350
+ }
351
+
352
+ function setOnAny(collection, key) {
353
+ for (let i = 0, result; i < collection.length; i++) {
354
+ result = deepAccess(collection[i], key);
355
+ if (result) {
356
+ return result;
357
+ }
358
+ }
359
+ }
360
+
361
+ function flatten(arr) {
362
+ return [].concat(...arr);
363
+ }
364
+
365
+ function renderer(bid) {
366
+ bid.renderer.push(() => {
367
+ window.Dianomi.renderOutstream(bid);
368
+ });
369
+ }