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.
- package/.circleci/config.yml +11 -6
- package/.github/dependabot.yml +6 -0
- package/.github/workflows/issue_tracker.yml +5 -0
- package/.github/workflows/release-drafter.yml +6 -0
- package/README.md +35 -0
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/adotBidAdapter.js +1 -1
- package/dist/adpod.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/audiencerunBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bluebillywigBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/cpexIdSystem.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/debugging-standalone.js +1 -1
- package/dist/debugging.js +1 -1
- package/dist/dianomiBidAdapter.js +1 -0
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -0
- package/dist/fpdModule.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronIdSystem.js +1 -1
- package/dist/hadronRtdProvider.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoAnalyticsAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -0
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/nativoBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +137 -131
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxOrtbBidAdapter.js +1 -0
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +2 -2
- package/dist/pubCommonId.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharedIdSystem.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -0
- package/dist/sizeMappingV2.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/tncIdSystem.js +1 -0
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/ventesBidAdapter.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vrtcalBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yieldlabBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yieldoneBidAdapter.js +1 -1
- package/governance.md +5 -11
- package/gulpHelpers.js +1 -1
- package/gulpfile.js +1 -1
- package/karma.conf.maker.js +3 -1
- package/modules/.submodules.json +1 -0
- package/modules/33acrossBidAdapter.js +5 -1
- package/modules/adkernelBidAdapter.js +2 -1
- package/modules/adotBidAdapter.js +3 -3
- package/modules/adqueryBidAdapter.js +5 -1
- package/modules/appnexusBidAdapter.js +3 -3
- package/modules/cpexIdSystem.js +7 -8
- package/modules/criteoBidAdapter.js +7 -1
- package/modules/cwireBidAdapter.md +1 -1
- package/modules/debugging/bidInterceptor.js +1 -1
- package/modules/debugging/index.js +2 -1
- package/modules/dianomiBidAdapter.js +369 -0
- package/modules/dianomiBidAdapter.md +73 -0
- package/modules/finativeBidAdapter.js +235 -0
- package/modules/finativeBidAdapter.md +45 -0
- package/modules/fpdModule/index.js +6 -5
- package/modules/gdprEnforcement.js +8 -14
- package/modules/gumgumBidAdapter.js +2 -0
- package/modules/gumgumBidAdapter.md +19 -1
- package/modules/hadronAnalyticsAdapter.md +5 -5
- package/modules/hadronIdSystem.js +18 -5
- package/modules/hadronIdSystem.md +15 -11
- package/modules/hadronRtdProvider.js +14 -1
- package/modules/hadronRtdProvider.md +17 -13
- package/modules/insticatorBidAdapter.js +9 -0
- package/modules/ixBidAdapter.js +457 -57
- package/modules/ixBidAdapter.md +95 -5
- package/modules/kargoAnalyticsAdapter.js +88 -6
- package/modules/kargoAnalyticsAdapter.md +33 -0
- package/modules/kargoBidAdapter.js +1 -2
- package/modules/lassoBidAdapter.js +133 -0
- package/modules/lassoBidAdapter.md +29 -0
- package/modules/medianetBidAdapter.js +9 -5
- package/modules/missenaBidAdapter.js +20 -2
- package/modules/nativoBidAdapter.js +19 -7
- package/modules/openxBidAdapter.md +3 -1
- package/modules/openxOrtbBidAdapter.js +349 -0
- package/modules/openxOrtbBidAdapter.md +105 -0
- package/modules/pubCommonId.js +1 -2
- package/modules/readpeakBidAdapter.js +15 -6
- package/modules/relaidoBidAdapter.js +19 -4
- package/modules/riseBidAdapter.js +1 -0
- package/modules/seedtagBidAdapter.js +33 -1
- package/modules/sharedIdSystem.js +11 -5
- package/modules/sharethroughBidAdapter.js +9 -24
- package/modules/shinezBidAdapter.js +435 -0
- package/modules/shinezBidAdapter.md +76 -0
- package/modules/sonobiBidAdapter.js +28 -9
- package/modules/sovrnBidAdapter.js +16 -10
- package/modules/taboolaBidAdapter.js +1 -1
- package/modules/taboolaBidAdapter.md +3 -3
- package/modules/tncIdSystem.js +63 -0
- package/modules/tncIdSystem.md +33 -0
- package/modules/userId/eids.js +12 -0
- package/modules/userId/eids.md +7 -0
- package/modules/userId/userId.md +17 -0
- package/modules/ventesBidAdapter.js +1 -1
- package/modules/ventesBidAdapter.md +1 -1
- package/modules/vrtcalBidAdapter.js +35 -0
- package/modules/yieldlabBidAdapter.js +4 -0
- package/modules/yieldmoBidAdapter.js +20 -2
- package/modules/yieldoneBidAdapter.js +12 -1
- package/package.json +1 -1
- package/plugins/pbjsGlobals.js +2 -1
- package/src/adloader.js +1 -0
- package/src/prebid.js +4 -1
- package/src/storageManager.js +4 -5
- package/test/spec/modules/33acrossBidAdapter_spec.js +39 -0
- package/test/spec/modules/appnexusBidAdapter_spec.js +165 -156
- package/test/spec/modules/cpexIdSystem_spec.js +5 -5
- package/test/spec/modules/criteoBidAdapter_spec.js +15 -5
- package/test/spec/modules/debugging_mod_spec.js +7 -0
- package/test/spec/modules/dianomiBidAdapter_spec.js +1223 -0
- package/test/spec/modules/eids_spec.js +26 -1
- package/test/spec/modules/finativeBidAdapter_spec.js +186 -0
- package/test/spec/modules/fpdModule_spec.js +28 -1
- package/test/spec/modules/gdprEnforcement_spec.js +53 -100
- package/test/spec/modules/gumgumBidAdapter_spec.js +5 -0
- package/test/spec/modules/hadronIdSystem_spec.js +2 -2
- package/test/spec/modules/insticatorBidAdapter_spec.js +22 -1
- package/test/spec/modules/ixBidAdapter_spec.js +429 -10
- package/test/spec/modules/kargoAnalyticsAdapter_spec.js +42 -0
- package/test/spec/modules/kargoBidAdapter_spec.js +1 -0
- package/test/spec/modules/lassoBidAdapter_spec.js +177 -0
- package/test/spec/modules/medianetBidAdapter_spec.js +24 -1
- package/test/spec/modules/missenaBidAdapter_spec.js +36 -14
- package/test/spec/modules/nativoBidAdapter_spec.js +67 -17
- package/test/spec/modules/openxOrtbBidAdapter_spec.js +1303 -0
- package/test/spec/modules/readpeakBidAdapter_spec.js +1 -0
- package/test/spec/modules/relaidoBidAdapter_spec.js +29 -2
- package/test/spec/modules/riseBidAdapter_spec.js +3 -0
- package/test/spec/modules/seedtagBidAdapter_spec.js +4 -0
- package/test/spec/modules/sharethroughBidAdapter_spec.js +4 -4
- package/test/spec/modules/shinezBidAdapter_spec.js +479 -0
- package/test/spec/modules/sonobiBidAdapter_spec.js +38 -23
- package/test/spec/modules/sovrnBidAdapter_spec.js +39 -5
- package/test/spec/modules/taboolaBidAdapter_spec.js +1 -1
- package/test/spec/modules/tncIdSystem_spec.js +109 -0
- package/test/spec/modules/userId_spec.js +6 -3
- package/test/spec/modules/ventesBidAdapter_spec.js +2 -2
- package/test/spec/modules/vrtcalBidAdapter_spec.js +17 -0
- package/test/spec/modules/yieldlabBidAdapter_spec.js +4 -0
- package/test/spec/modules/yieldmoBidAdapter_spec.js +15 -2
- package/test/spec/modules/yieldoneBidAdapter_spec.js +43 -2
- package/test/spec/unit/pbjs_api_spec.js +23 -0
- 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");
|
|
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).
|
|
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
|
-
- **
|
|
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
|
-
|
|
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 =>
|
|
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
|
package/karma.conf.maker.js
CHANGED
|
@@ -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;
|
package/modules/.submodules.json
CHANGED
|
@@ -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
|
-
|
|
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,
|
|
@@ -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
|
-
|
|
52
|
+
const refererInfo = (bidderRequest && bidderRequest.refererInfo) || null;
|
|
53
53
|
|
|
54
|
-
const 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:
|
|
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
|
|
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]);
|
package/modules/cpexIdSystem.js
CHANGED
|
@@ -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
|
|
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.
|
|
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 (
|
|
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 (
|
|
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,
|
|
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
|
+
}
|