prebid.js 7.51.0 → 7.53.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/dist/1plusXRtdProvider.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.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/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adriverIdSystem.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/airgridRtdProvider.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/allowActivities.js +1 -0
- 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/axonixBidAdapter.js +1 -1
- package/dist/beopBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/conceptxBidAdapter.js +1 -0
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectIdSystem.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dependencies.json +6 -0
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/eskimiBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -0
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freepassIdSystem.js +1 -0
- package/dist/freewheel-sspBidAdapter.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/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/growthCodeRtdProvider.js +1 -0
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/id5IdSystem.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/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/kulturemediaBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/limelightDigitalBidAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +154 -146
- package/dist/objectGuard.js +1 -0
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/oxxionAnalyticsAdapter.js +1 -0
- package/dist/pairIdSystem.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/proxistoreBidAdapter.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/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/richaudienceBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rtdModule.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/schain.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/sirdataRtdProvider.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/stroeerCoreBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- 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/uid2IdSystem.js +1 -1
- package/dist/uid2IdSystem_shared.js +1 -0
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/viouslyBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/weboramaRtdProvider.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/zeta_global_sspBidAdapter.js +1 -1
- package/integrationExamples/gpt/growthcode.html +20 -9
- package/integrationExamples/gpt/userId_example.html +20 -6
- package/libraries/objectGuard/objectGuard.js +108 -0
- package/libraries/objectGuard/ortbGuard.js +88 -0
- package/modules/.submodules.json +3 -1
- package/modules/1plusXRtdProvider.js +31 -60
- package/modules/adagioBidAdapter.js +86 -24
- package/modules/adgenerationBidAdapter.js +14 -5
- package/modules/adkernelBidAdapter.js +2 -2
- package/modules/adriverIdSystem.js +1 -1
- package/modules/airgridRtdProvider.js +11 -12
- package/modules/allowActivities.js +74 -0
- package/modules/asoBidAdapter.js +2 -1
- package/modules/beopBidAdapter.js +6 -0
- package/modules/conceptxBidAdapter.js +70 -0
- package/modules/conceptxBidAdapter.md +36 -0
- package/modules/connectIdSystem.js +89 -13
- package/modules/connectIdSystem.md +4 -7
- package/modules/criteoBidAdapter.js +18 -2
- package/modules/eskimiBidAdapter.js +171 -41
- package/modules/eskimiBidAdapter.md +35 -16
- package/modules/euidIdSystem.js +121 -0
- package/modules/euidIdSystem.md +131 -0
- package/modules/freepassIdSystem.js +61 -0
- package/modules/freepassIdSystem.md +47 -0
- package/modules/gdprEnforcement.js +98 -169
- package/modules/greenbidsAnalyticsAdapter.js +1 -1
- package/modules/growthCodeRtdProvider.js +131 -0
- package/modules/growthCodeRtdProvider.md +55 -0
- package/modules/id5IdSystem.js +3 -5
- package/modules/ixBidAdapter.js +17 -3
- package/modules/limelightDigitalBidAdapter.js +1 -1
- package/modules/logicadBidAdapter.js +14 -1
- package/modules/mediasquareBidAdapter.js +13 -5
- package/modules/nexx360BidAdapter.js +1 -0
- package/modules/oxxionAnalyticsAdapter.js +212 -0
- package/modules/oxxionAnalyticsAdapter.md +33 -0
- package/modules/pairIdSystem.js +16 -11
- package/modules/proxistoreBidAdapter.js +11 -14
- package/modules/richaudienceBidAdapter.js +10 -1
- package/modules/riseBidAdapter.js +1 -1
- package/modules/rtdModule/index.js +12 -1
- package/modules/schain.js +2 -2
- package/modules/sharethroughBidAdapter.js +2 -2
- package/modules/sirdataRtdProvider.js +73 -146
- package/modules/smartadserverBidAdapter.js +5 -0
- package/modules/sovrnBidAdapter.js +4 -1
- package/modules/stroeerCoreBidAdapter.js +55 -6
- package/modules/stvBidAdapter.js +34 -1
- package/modules/uid2IdSystem.js +27 -210
- package/modules/uid2IdSystem.md +104 -23
- package/modules/uid2IdSystem_shared.js +232 -0
- package/modules/undertoneBidAdapter.js +9 -1
- package/modules/userId/eids.js +8 -0
- package/modules/userId/index.js +69 -41
- package/modules/userId/userId.md +2 -1
- package/modules/viouslyBidAdapter.js +2 -2
- package/modules/weboramaRtdProvider.js +25 -95
- package/modules/weboramaRtdProvider.md +4 -4
- package/modules/yahoosspBidAdapter.js +45 -3
- package/modules/yahoosspBidAdapter.md +1 -1
- package/modules/yieldlabBidAdapter.js +23 -14
- package/modules/zeta_global_sspBidAdapter.js +28 -22
- package/package.json +1 -1
- package/src/activities/activities.js +47 -0
- package/src/activities/activityParams.js +8 -0
- package/src/activities/modules.js +1 -1
- package/src/activities/params.js +59 -0
- package/src/activities/redactor.js +157 -0
- package/src/activities/rules.js +95 -0
- package/src/adapterManager.js +45 -8
- package/src/adloader.js +1 -0
- package/src/fpd/rootDomain.js +1 -1
- package/src/prebid.js +1 -1
- package/src/storageManager.js +57 -44
- package/src/userSync.js +35 -18
- package/test/spec/activities/allowActivites_spec.js +138 -0
- package/test/spec/activities/objectGuard_spec.js +144 -0
- package/test/spec/activities/ortbGuard_spec.js +140 -0
- package/test/spec/activities/params_spec.js +25 -0
- package/test/spec/activities/redactor_spec.js +296 -0
- package/test/spec/activities/rules_spec.js +135 -0
- package/test/spec/modules/1plusXRtdProvider_spec.js +98 -149
- package/test/spec/modules/adagioBidAdapter_spec.js +46 -17
- package/test/spec/modules/adgenerationBidAdapter_spec.js +52 -12
- package/test/spec/modules/airgridRtdProvider_spec.js +2 -0
- package/test/spec/modules/beopBidAdapter_spec.js +24 -0
- package/test/spec/modules/conceptxBidAdapter_spec.js +136 -0
- package/test/spec/modules/connectIdSystem_spec.js +291 -23
- package/test/spec/modules/criteoBidAdapter_spec.js +85 -1
- package/test/spec/modules/eids_spec.js +15 -0
- package/test/spec/modules/eskimiBidAdapter_spec.js +264 -112
- package/test/spec/modules/euidIdSystem_spec.js +130 -0
- package/test/spec/modules/freepassIdSystem_spec.js +186 -0
- package/test/spec/modules/gdprEnforcement_spec.js +127 -414
- package/test/spec/modules/growthCodeRtdProvider_spec.js +127 -0
- package/test/spec/modules/id5IdSystem_spec.js +10 -3
- package/test/spec/modules/ixBidAdapter_spec.js +32 -1
- package/test/spec/modules/logicadBidAdapter_spec.js +122 -2
- package/test/spec/modules/mediasquareBidAdapter_spec.js +4 -0
- package/test/spec/modules/oxxionAnalyticsAdapter_spec.js +324 -0
- package/test/spec/modules/pairIdSystem_spec.js +16 -3
- package/test/spec/modules/realTimeDataModule_spec.js +1 -1
- package/test/spec/modules/richaudienceBidAdapter_spec.js +44 -0
- package/test/spec/modules/schain_spec.js +9 -0
- package/test/spec/modules/sharethroughBidAdapter_spec.js +1 -1
- package/test/spec/modules/sirdataRtdProvider_spec.js +110 -17
- package/test/spec/modules/smartadserverBidAdapter_spec.js +42 -0
- package/test/spec/modules/sovrnBidAdapter_spec.js +13 -0
- package/test/spec/modules/stroeerCoreBidAdapter_spec.js +151 -6
- package/test/spec/modules/stvBidAdapter_spec.js +13 -1
- package/test/spec/modules/uid2IdSystem_helpers.js +70 -0
- package/test/spec/modules/uid2IdSystem_spec.js +131 -86
- package/test/spec/modules/undertoneBidAdapter_spec.js +57 -1
- package/test/spec/modules/userId_spec.js +96 -33
- package/test/spec/modules/weboramaRtdProvider_spec.js +331 -205
- package/test/spec/modules/yahoosspBidAdapter_spec.js +103 -51
- package/test/spec/modules/yieldlabBidAdapter_spec.js +42 -2
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +204 -4
- package/test/spec/unit/core/adapterManager_spec.js +181 -1
- package/test/spec/unit/core/storageManager_spec.js +76 -68
- package/test/spec/unit/pbjs_api_spec.js +15 -25
- package/test/spec/userSync_spec.js +45 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[15337],{55511:function(e,r,t){var n=t(71002),i=t(78640),a=t(64358),o=t(20265),d=t(96475),c=t(24679),u=t(14699),s=t(35706),p=t(34614),f="USD",m=300,l=!0,v="https://ads.yieldmo.com/pbcas",g="https://prebid-outstream.yieldmo.com/bundle.js",y=["mimes","startdelay","placement","startdelay","skipafter","protocols","api","playbackmethod","maxduration","minduration","pos","skip","skippable"],h=["name","domain","cat","keywords"],b=(0,a.getWindowTop)(),I=["description","title","pr","page_url"],x={code:"yieldmo",supportedMediaTypes:[c.Mk,c.pX],gvlid:173,isBidRequestValid:function(e){return!!(e&&e.adUnitCode&&e.bidId&&(w(e)||Z(e))&&function(e){if(!Z(e))return!0;var r=function(e,r,t){var n='"'.concat(e,'" is required');throw t&&(n+=" when "+t),new Error(n)},t=function(e,r,t){throw t=t?", expected: "+t:"",r=JSON.stringify(r),new Error('"'.concat(e,'"=').concat(r," is invalid").concat(t))},n=function(e){return void 0!==e},i=function(r,t,n,i){if(0===r.indexOf("video")){var a="params."+r,d="mediaTypes."+r,c=(0,o.Z)(e,a),u=(0,o.Z)(e,d),s=t(c),p=t(u);return s?c:p||(s?p||n(d,u,i):n(a,c,i),c||u)}var f=(0,o.Z)(e,r);return t(f)||n(r,f,i),f};try{i("video.context",(function(e){return!(0,a.isEmpty)(e)}),r),i("params.placementId",(function(e){return!(0,a.isEmpty)(e)}),r),i("video.playerSize",(function(e){return(0,a.isArrayOfNums)(e,2)||(0,a.isArray)(e)&&e.every((function(e){return(0,a.isArrayOfNums)(e,2)}))}),t,"array of 2 integers, ex: [640,480] or [[640,480]]"),i("video.mimes",(function(e){return n(e)}),r),i("video.mimes",(function(e){return(0,a.isArray)(e)&&e.every((function(e){return(0,a.isStr)(e)}))}),t,'array of strings, ex: ["video/mp4"]');var d=i("video.placement",(function(e){return n(e)}),r);return i("video.placement",(function(e){return e>=1&&e<=5}),t),1===d&&(i("video.startdelay",(function(e){return n(e)}),(function(e,t){return r(e,t,"placement == 1")})),i("video.startdelay",(function(e){return(0,a.isNumber)(e)}),t,"number, ex: 5")),i("video.protocols",(function(e){return n(e)}),r),i("video.protocols",(function(e){return(0,a.isArrayOfNums)(e)&&e.every((function(e){return e>=1&&e<=6}))}),t,"array of numbers, ex: [2,3]"),i("video.api",(function(e){return n(e)}),r),i("video.api",(function(e){return(0,a.isArrayOfNums)(e)&&e.every((function(e){return e>=1&&e<=6}))}),t,"array of numbers, ex: [2,3]"),i("video.playbackmethod",(function(e){return!n(e)||(0,a.isArrayOfNums)(e)}),t,"array of integers, ex: [2,6]"),i("video.maxduration",(function(e){return n(e)}),r),i("video.maxduration",(function(e){return(0,a.isInteger)(e)}),t),i("video.minduration",(function(e){return!n(e)||(0,a.isNumber)(e)}),t),i("video.skippable",(function(e){return!n(e)||(0,a.isBoolean)(e)}),t),i("video.skipafter",(function(e){return!n(e)||(0,a.isNumber)(e)}),t),i("video.pos",(function(e){return!n(e)||(0,a.isNumber)(e)}),t),i("params.badv",(function(e){return!n(e)||(0,a.isArray)(e)}),t,'array of strings, ex: ["ford.com","pepsi.com"]'),i("params.bcat",(function(e){return!n(e)||(0,a.isArray)(e)}),t,'array of strings, ex: ["IAB1-5","IAB1-6"]'),!0}catch(e){return(0,a.logError)(e.message),!1}}(e))},buildRequests:function(e,r){var t=function(e){var r,t;return!(null===(r=e.refererInfo)||void 0===r||null===(t=r.referer)||void 0===t||!t.includes("pb_force_a"))}(r),n=_("/exchange/prebid",t),i=_("/exchange/prebidvideo",t),u=e.filter((function(e){return w(e)})),s=e.filter((function(e){return Z(e)})),f=[],m=function(e){if((0,o.Z)(e,"userIdAsEids"))return e.userIdAsEids||[]}(e[0])||[];if(u.length>0){var l={pbav:"7.
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[15337],{55511:function(e,r,t){var n=t(71002),i=t(78640),a=t(64358),o=t(20265),d=t(96475),c=t(24679),u=t(14699),s=t(35706),p=t(34614),f="USD",m=300,l=!0,v="https://ads.yieldmo.com/pbcas",g="https://prebid-outstream.yieldmo.com/bundle.js",y=["mimes","startdelay","placement","startdelay","skipafter","protocols","api","playbackmethod","maxduration","minduration","pos","skip","skippable"],h=["name","domain","cat","keywords"],b=(0,a.getWindowTop)(),I=["description","title","pr","page_url"],x={code:"yieldmo",supportedMediaTypes:[c.Mk,c.pX],gvlid:173,isBidRequestValid:function(e){return!!(e&&e.adUnitCode&&e.bidId&&(w(e)||Z(e))&&function(e){if(!Z(e))return!0;var r=function(e,r,t){var n='"'.concat(e,'" is required');throw t&&(n+=" when "+t),new Error(n)},t=function(e,r,t){throw t=t?", expected: "+t:"",r=JSON.stringify(r),new Error('"'.concat(e,'"=').concat(r," is invalid").concat(t))},n=function(e){return void 0!==e},i=function(r,t,n,i){if(0===r.indexOf("video")){var a="params."+r,d="mediaTypes."+r,c=(0,o.Z)(e,a),u=(0,o.Z)(e,d),s=t(c),p=t(u);return s?c:p||(s?p||n(d,u,i):n(a,c,i),c||u)}var f=(0,o.Z)(e,r);return t(f)||n(r,f,i),f};try{i("video.context",(function(e){return!(0,a.isEmpty)(e)}),r),i("params.placementId",(function(e){return!(0,a.isEmpty)(e)}),r),i("video.playerSize",(function(e){return(0,a.isArrayOfNums)(e,2)||(0,a.isArray)(e)&&e.every((function(e){return(0,a.isArrayOfNums)(e,2)}))}),t,"array of 2 integers, ex: [640,480] or [[640,480]]"),i("video.mimes",(function(e){return n(e)}),r),i("video.mimes",(function(e){return(0,a.isArray)(e)&&e.every((function(e){return(0,a.isStr)(e)}))}),t,'array of strings, ex: ["video/mp4"]');var d=i("video.placement",(function(e){return n(e)}),r);return i("video.placement",(function(e){return e>=1&&e<=5}),t),1===d&&(i("video.startdelay",(function(e){return n(e)}),(function(e,t){return r(e,t,"placement == 1")})),i("video.startdelay",(function(e){return(0,a.isNumber)(e)}),t,"number, ex: 5")),i("video.protocols",(function(e){return n(e)}),r),i("video.protocols",(function(e){return(0,a.isArrayOfNums)(e)&&e.every((function(e){return e>=1&&e<=6}))}),t,"array of numbers, ex: [2,3]"),i("video.api",(function(e){return n(e)}),r),i("video.api",(function(e){return(0,a.isArrayOfNums)(e)&&e.every((function(e){return e>=1&&e<=6}))}),t,"array of numbers, ex: [2,3]"),i("video.playbackmethod",(function(e){return!n(e)||(0,a.isArrayOfNums)(e)}),t,"array of integers, ex: [2,6]"),i("video.maxduration",(function(e){return n(e)}),r),i("video.maxduration",(function(e){return(0,a.isInteger)(e)}),t),i("video.minduration",(function(e){return!n(e)||(0,a.isNumber)(e)}),t),i("video.skippable",(function(e){return!n(e)||(0,a.isBoolean)(e)}),t),i("video.skipafter",(function(e){return!n(e)||(0,a.isNumber)(e)}),t),i("video.pos",(function(e){return!n(e)||(0,a.isNumber)(e)}),t),i("params.badv",(function(e){return!n(e)||(0,a.isArray)(e)}),t,'array of strings, ex: ["ford.com","pepsi.com"]'),i("params.bcat",(function(e){return!n(e)||(0,a.isArray)(e)}),t,'array of strings, ex: ["IAB1-5","IAB1-6"]'),!0}catch(e){return(0,a.logError)(e.message),!1}}(e))},buildRequests:function(e,r){var t=function(e){var r,t;return!(null===(r=e.refererInfo)||void 0===r||null===(t=r.referer)||void 0===t||!t.includes("pb_force_a"))}(r),n=_("/exchange/prebid",t),i=_("/exchange/prebidvideo",t),u=e.filter((function(e){return w(e)})),s=e.filter((function(e){return Z(e)})),f=[],m=function(e){if((0,o.Z)(e,"userIdAsEids"))return e.userIdAsEids||[]}(e[0])||[];if(u.length>0){var l={pbav:"7.53.0",p:[],page_url:r.refererInfo.page,bust:(new Date).getTime().toString(),dnt:"1"===window.doNotTrack||"1"===window.navigator.doNotTrack||!1,description:k(),userConsent:JSON.stringify({gdprApplies:(0,o.Z)(r,"gdprConsent.gdprApplies")||"",cmp:(0,o.Z)(r,"gdprConsent.consentString")||"",gpp:(0,o.Z)(r,"gppConsent.gppString")||"",gpp_sid:(0,o.Z)(r,"gppConsent.applicableSections")||[]}),us_privacy:(0,o.Z)(r,"uspConsent")||""};(function(){try{if((0,a.getWindowTop)().location.href)return!0}catch(e){return!1}})()&&(l.pr=b.document&&b.document.referrer||"",l.scrd=b.devicePixelRatio||0,l.title=b.document.title||"",l.w=b.innerWidth,l.h=b.innerHeight);var v=window.navigator.maxTouchPoints;v&&(l.mtp=v),u.forEach((function(e){l.p.push(function(e){var r=(0,o.Z)(e,"ortb2Imp.ext.data.pbadslot"),t={placement_id:e.adUnitCode,callback_id:e.bidId,sizes:e.mediaTypes.banner.sizes};if(e.params){e.params.placementId&&(t.ym_placement_id=e.params.placementId);var n=S(e,c.Mk);n&&(t.bidFloor=n)}r&&(t.gpid=r);var i=(0,o.Z)(e,"ortb2Imp.ext.tid");i&&(t.tid=i);e.auctionId&&(t.auctionId=e.auctionId);return JSON.stringify(t)}(e));var r=N(e,"pubcid");r?l.pubcid=r:e.crumbs&&e.crumbs.pubcid&&(l.pubcid=e.crumbs.pubcid);var t=N(e,"tdid");t&&(l.tdid=t);var n=N(e,"criteoId");n&&(l.cri_prebid=n),e.schain&&(l.schain=JSON.stringify(e.schain)),(0,o.Z)(e,"params.lr_env")&&(l.ats_envelope=e.params.lr_env)})),l.p="["+l.p.toString()+"]",m.length&&(l.eids=JSON.stringify(m));var g="".concat(n,"?").concat((0,a.parseQueryStringParameters)(l)).length-8e3;if(g>0)for(var h=0;h<I.length&&!((g=T(g,l,I[h]))<=0);h++);f.push({method:"GET",url:n,data:l})}if(s.length>0){var x=function(e,r){var t=e[0].schain,n={id:e[0].bidderRequestId,tmax:r.timeout||400,at:1,imp:e.map((function(e){return function(e){var r=(0,o.Z)(e,"ortb2Imp.ext.data.pbadslot"),t=function(e){var r=(0,o.Z)(e,"mediaTypes.video.playerSize");if((0,a.isArrayOfNums)(r,2))return r;if((0,a.isArray)(r)&&(0,a.isArrayOfNums)(r[0],2))return r[0];return null}(e),n={id:e.bidId,tagid:e.adUnitCode,bidfloor:S(e,c.pX),ext:{placement_id:e.params.placementId,tid:(0,o.Z)(e,"ortb2Imp.ext.tid")},video:{w:t[0],h:t[1],linearity:1}},i=(0,o.Z)(e,"mediaTypes.video");Object.keys(i).filter((function(e){return(0,p.q9)(y,e)})).forEach((function(e){return n.video[e]=i[e]}));var d=(0,o.Z)(e,"params.video");Object.keys(d).filter((function(e){return(0,p.q9)(y,e)})).forEach((function(e){return n.video[e]=d[e]})),n.video.skippable&&(n.video.skip=1,delete n.video.skippable);1!==n.video.placement&&(n.video.startdelay=0,n.video.playbackmethod=[2]);r&&(n.ext.gpid=r);return n}(e)})),site:A(e[0],r),device:(0,o.Z)(r,"ortb2.device"),badv:e[0].params.badv||[],bcat:(0,o.Z)(r,"bcat")||e[0].params.bcat||[],ext:{prebid:"7.53.0"},ats_envelope:e[0].params.lr_env};t&&(n.schain=t);e[0].auctionId&&(n.auctionId=e[0].auctionId);return function(e,r){var t=r.gdprConsent,n=(0,o.Z)(r,"gppConsent.gppString"),i=(0,o.Z)(r,"gppConsent.applicableSections");n?(0,d.N)(e,"regs.ext.gpp",n):((0,d.N)(e,"regs.ext.gdpr",t&&t.gdprApplies?1:0),(0,d.N)(e,"user.ext.consent",t&&t.consentString?t.consentString:""));i&&i.length>0&&(0,d.N)(e,"regs.ext.gpp_sid",i);var a=(0,o.Z)(r,"uspConsent");!n&&a&&(0,d.N)(e,"regs.ext.us_privacy",a)}(n,r),n}(s,r);m.length&&(x.user={eids:m}),f.push({method:"POST",url:i,data:x})}return f},interpretResponse:function(e,r){var t=[],n=e.body;(n.length>0&&n.forEach((function(e){e.cpm>0&&t.push(function(e){return{dealId:e.publisherDealId,requestId:e.callback_id,cpm:e.cpm,width:e.width,height:e.height,creativeId:e.creative_id,currency:f,netRevenue:l,ttl:300,ad:e.ad,meta:{advertiserDomains:e.adomain||[],mediaType:c.Mk}}}(e))})),n.seatbid)&&n.seatbid.reduce((function(e,r){return e.concat(r.bid)}),[]).forEach((function(e){return t.push(function(e,r){var t=(0,p.sE)((0,o.Z)(r,"data.imp")||[],(function(r){return r.id===e.impid})),n={dealId:e.dealid,requestId:t.id,cpm:e.price,width:t.video.w,height:t.video.h,creativeId:e.crid||e.adid,currency:f,netRevenue:l,mediaType:c.pX,ttl:m,vastXml:e.adm,meta:{advertiserDomains:e.adomain||[],mediaType:c.pX}};if(t.video.placement&&1!==t.video.placement){var i=s.Th.install({url:g,config:{width:n.width,height:n.height,vastTimeout:15e3,maxAllowedVastTagRedirects:5,allowVpaid:!0,autoPlay:!0,preload:!0,mute:!0},id:t.tagid,loaded:!1});i.setRender((function(e){e.renderer.push((function(){var r=e.renderer,t=r.id,n=r.config;window.YMoutstreamPlayer(e,t,n)}))})),n.renderer=i}return n}(e,r))}));return t},getUserSyncs:function(e,r){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",i=[],a="&gdpr=".concat(t.gdprApplies?1:0),o="&gdpr_consent=".concat(encodeURIComponent(t.consentString||"")),d="us_privacy=".concat(encodeURIComponent(n)),c="".concat(v,"?").concat(d).concat(a).concat(o);return e.iframeEnabled?i.push({type:"iframe",url:c+"&type=iframe"}):e.pixelEnabled&&i.push({type:"image",url:c+"&type=image"}),i}};function w(e){return!!(0,o.Z)(e,"mediaTypes.banner")}function Z(e){return!!(0,o.Z)(e,"mediaTypes.video")}function k(){return document.querySelector('meta[name="description"]')&&document.querySelector('meta[name="description"]').getAttribute("content")||""}function N(e,r){return"object"===(0,n.Z)((0,o.Z)(e,"userId"))?e.userId[r]:void 0}function S(e,r){var t={};return"function"==typeof e.getFloor&&(t=e.getFloor({currency:f,mediaType:r,size:"*"})),t.floor||e.params.bidfloor||e.params.bidFloor||0}function A(e,r){var t,n={},i=(0,a.parseUrl)((0,o.Z)(r,"refererInfo.page"));(0,a.isEmpty)(i)||(n.page="".concat(i.protocol,"://").concat(i.hostname).concat(i.pathname)),null!==(t=r.refererInfo)&&void 0!==t&&t.ref&&(n.ref=r.refererInfo.ref);var d=document.getElementsByTagName("meta").keywords;d&&d.content&&(n.keywords=d.content);var c=(0,o.Z)(e,"params.site");return c&&Object.keys(c).filter((function(e){return(0,p.q9)(h,e)})).forEach((function(e){return n[e]=c[e]})),n}function T(e,r,t){if(r[t].length>e)return r[t]=r[t].substring(0,r[t].length-e),0;var n=e-r[t].length;return r[t]="",n}function _(e,r){return"".concat(r?"https://ads-stg.yieldmo.com":"https://ads.yieldmo.com").concat(e)}(0,u.dX)(x),(0,i.z)("yieldmoBidAdapter")}},function(e){var r;r=55511,e(e.s=r)}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[54572],{83519:function(e,t,n){var a=n(78640),i=n(64358),o=n(48928),r=n(64563),d=n(5644),s=n(51039),c=n(18621),u=n(78653),v={},g={},f={},l={};l[d.FP.BID_ADJUSTMENT]=!0,l[d.FP.BIDDER_DONE]=!0,l[d.FP.AUCTION_END]=!0;var p="",b="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((function(e){e.code&&t[e.code]&&(e.name=t[e.code])})),(0,i.isArray)(e.adUnitCodes)&&(e.adUnitNames=e.adUnitCodes.map((function(e){return t[e]}))),["bids","bidderRequests","bidsReceived","noBids"].forEach((function(n){!function(e,t){(0,i.isArray)(e)&&e.forEach((function(e){S(e,t)}))}(e[n],t)}))}var h=Object.assign((0,r.ZP)({analyticsType:"endpoint"}),{getUrl:function(){return b},track:function(e){var t=e.eventType,n=e.args,a=void 0===n?{}:n;if(t===d.FP.BID_REQUESTED){var o="".concat(a.bidderCode,"_").concat(a.auctionId);v[o]=(0,i.deepClone)(a),v[o].bids=[],a.bids.forEach((function(e){g["".concat(e.bidId,"_").concat(e.auctionId)]=e}))}if(t===d.FP.BID_TIMEOUT&&(0,i.isArray)(a)){var r=h.eventsStorage,s={};a.forEach((function(e){var n="".concat(e.bidId,"_").concat(e.auctionId),a="".concat(e.bidder,"_").concat(e.auctionId);r[e.auctionId]||(r[e.auctionId]={events:[]}),(v[a]||s[e.bidder])&&g[n]&&(s[e.bidder]||(s[e.bidder]=v[a],r[e.auctionId].events.push({eventType:t,params:s[e.bidder]}),delete v[a]),s[e.bidder].bids.push(g[n]),delete g[n])}))}else if(p=a.auctionId||p){var b=h.eventsStorage;b[p]||(b[p]={events:[]});var y=a.refererInfo&&a.refererInfo.page;y&&f[p]!==y&&(f[p]=y);var E=Object.assign({},a);if(delete E.ad,E.bidsReceived&&(E.bidsReceived=E.bidsReceived.map((function(e){var t=Object.assign({},e);return delete t.ad,t}))),l[t]||b[p].events.push({eventType:t,params:E}),t===d.FP.AUCTION_END||t===d.FP.BID_WON){if(E.adServerTargeting=c.q0.getAllTargeting(u.K.getAdUnitCodes(),u.K.getBidsReceived()),h.eventsStorage[p]&&h.eventsStorage[p].events.length){h.eventsStorage[p].page={url:f[p]},h.eventsStorage[p].pubId=I,h.eventsStorage[p].wrapper_version="7.
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[54572],{83519:function(e,t,n){var a=n(78640),i=n(64358),o=n(48928),r=n(64563),d=n(5644),s=n(51039),c=n(18621),u=n(78653),v={},g={},f={},l={};l[d.FP.BID_ADJUSTMENT]=!0,l[d.FP.BIDDER_DONE]=!0,l[d.FP.AUCTION_END]=!0;var p="",b="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((function(e){e.code&&t[e.code]&&(e.name=t[e.code])})),(0,i.isArray)(e.adUnitCodes)&&(e.adUnitNames=e.adUnitCodes.map((function(e){return t[e]}))),["bids","bidderRequests","bidsReceived","noBids"].forEach((function(n){!function(e,t){(0,i.isArray)(e)&&e.forEach((function(e){S(e,t)}))}(e[n],t)}))}var h=Object.assign((0,r.ZP)({analyticsType:"endpoint"}),{getUrl:function(){return b},track:function(e){var t=e.eventType,n=e.args,a=void 0===n?{}:n;if(t===d.FP.BID_REQUESTED){var o="".concat(a.bidderCode,"_").concat(a.auctionId);v[o]=(0,i.deepClone)(a),v[o].bids=[],a.bids.forEach((function(e){g["".concat(e.bidId,"_").concat(e.auctionId)]=e}))}if(t===d.FP.BID_TIMEOUT&&(0,i.isArray)(a)){var r=h.eventsStorage,s={};a.forEach((function(e){var n="".concat(e.bidId,"_").concat(e.auctionId),a="".concat(e.bidder,"_").concat(e.auctionId);r[e.auctionId]||(r[e.auctionId]={events:[]}),(v[a]||s[e.bidder])&&g[n]&&(s[e.bidder]||(s[e.bidder]=v[a],r[e.auctionId].events.push({eventType:t,params:s[e.bidder]}),delete v[a]),s[e.bidder].bids.push(g[n]),delete g[n])}))}else if(p=a.auctionId||p){var b=h.eventsStorage;b[p]||(b[p]={events:[]});var y=a.refererInfo&&a.refererInfo.page;y&&f[p]!==y&&(f[p]=y);var E=Object.assign({},a);if(delete E.ad,E.bidsReceived&&(E.bidsReceived=E.bidsReceived.map((function(e){var t=Object.assign({},e);return delete t.ad,t}))),l[t]||b[p].events.push({eventType:t,params:E}),t===d.FP.AUCTION_END||t===d.FP.BID_WON){if(E.adServerTargeting=c.q0.getAllTargeting(u.K.getAdUnitCodes(),u.K.getBidsReceived()),h.eventsStorage[p]&&h.eventsStorage[p].events.length){h.eventsStorage[p].page={url:f[p]},h.eventsStorage[p].pubId=I,h.eventsStorage[p].wrapper_version="7.53.0";var A=function(){if(window.googletag&&window.googletag.pubads){var e=googletag.pubads();if(e&&e.getSlots){var t=e.getSlots();if(t&&t.length){var n={};return t.forEach((function(e){var t=e.getSlotElementId(),a=(e.getAdUnitPath()||"").split("/").pop();n[t]=a})),n}}}}();A&&h.eventsStorage[p].events.forEach((function(e){S(e.params,A)}))}h.sendStat(h.eventsStorage[p],p)}}},sendStat:function(e,t){e&&e.events&&e.events.length&&(delete h.eventsStorage[t],(0,o.h)(b,{success:function(){},error:function(){}},JSON.stringify(e),{method:"POST"}))}});h.eventsStorage={},h.originEnableAnalytics=h.enableAnalytics,h.enableAnalytics=function(e){var t=e&&e.options;t&&("string"==typeof t.url&&(b=t.url),t.pubId&&(I=t.pubId.toString())),h.originEnableAnalytics(e)},s.ZP.registerAnalyticsAdapter({adapter:h,code:"yieldone"});(0,a.z)("yieldoneAnalyticsAdapter")}},function(e){e.O(0,[14861],(function(){return t=83519,e(e.s=t);var t}));e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[25995],{716:function(e,t,r){var i=r(71002),n=r(4942),a=r(78640),s=r(64358),o=r(96475),p=r(20265),d=r(14699),c=r(24679),u=r(3193),m=r(25102),b=r(48928);function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[25995],{716:function(e,t,r){var i=r(71002),n=r(4942),a=r(78640),s=r(64358),o=r(96475),p=r(20265),d=r(14699),c=r(24679),u=r(3193),m=r(25102),b=r(48928);function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function g(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){(0,n.Z)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var y="https://ssp.disqus.com/bid/prebid",f="number",v="string",h="boolean",w="array",O={mimes:w,minduration:f,maxduration:f,startdelay:f,playbackmethod:w,api:w,protocols:w,w:f,h:f,battr:w,linearity:f,placement:f,plcmt:f,minbitrate:f,maxbitrate:f,skip:f},S={code:"zeta_global_ssp",supportedMediaTypes:[c.Mk,c.pX],isBidRequestValid:function(e){return!!(e&&e.bidId&&e.params)||((0,s.logWarn)("Invalid bid request - missing required bid data"),!1)},buildRequests:function(e,t){var r,i=e[0].params,n=e.map((function(e){var t={id:e.bidId,secure:1};if(i.tagid&&(t.tagid=i.tagid),e.mediaTypes)for(var r in e.mediaTypes)switch(r){case c.Mk:t.banner=I(e);break;case c.pX:t.video=T(e)}if(t.banner||t.video||(t.banner=I(e)),"function"==typeof e.getFloor){var n=e.getFloor({currency:"USD",mediaType:t.video?"video":"banner",size:[t.video?t.video.w:t.banner.w,t.video?t.video.h:t.banner.h]});n&&n.floor&&(t.bidfloor=n.floor)}return!t.bidfloor&&i.bidfloor&&(t.bidfloor=i.bidfloor),t})),a={id:t.auctionId,cur:["USD"],imp:n,site:i.site?i.site:{},device:g(g({},(null===(r=t.ortb2)||void 0===r?void 0:r.device)||{}),i.device),user:i.user?i.user:{},app:i.app?i.app:{},ext:{tags:i.tags?i.tags:{},sid:i.sid?i.sid:void 0}},s=t.refererInfo;return a.site.page=s.page||s.topmostLocation,a.site.domain=(0,m.hh)(a.site.page,{noLeadingWww:!0}),a.device.ua=navigator.userAgent,a.device.language=navigator.language,i.test&&(a.test=i.test),t&&t.gdprConsent&&((0,o.N)(a,"user.ext.consent",t.gdprConsent.consentString),(0,o.N)(a,"regs.ext.gdpr",t.gdprConsent.gdprApplies?1:0)),t&&t.uspConsent&&(0,o.N)(a,"regs.ext.us_privacy",t.uspConsent),e[0].schain&&(a.source={ext:{schain:e[0].schain}}),null!=t&&t.timeout&&(a.tmax=t.timeout),function(e,t){Array.isArray(e.userIdAsEids)&&e.userIdAsEids.length>0&&(0,o.N)(t,"user.ext.eids",e.userIdAsEids)}(e[0],a),{method:"POST",url:i.shortname?y.concat("?shortname=",i.shortname):y,data:JSON.stringify(a)}},interpretResponse:function(e,t){var r=[],i=(e||{}).body;return i&&i.seatbid&&i.seatbid[0].bid&&i.seatbid[0].bid.length&&i.seatbid.forEach((function(e){e.bid.forEach((function(e){var n={requestId:e.impid,cpm:e.price,currency:i.cur,width:e.w,height:e.h,ad:e.adm,ttl:300,creativeId:e.crid,netRevenue:true};e.adomain&&e.adomain.length&&(n.meta={advertiserDomains:e.adomain}),function(e,t,r){e.ext&&e.ext.prebid&&e.ext.prebid.type?t.mediaType=e.ext.prebid.type===c.pX?c.pX:c.Mk:t.mediaType=r.imp[0].video?c.pX:c.Mk}(e,n,t.data),n.mediaType===c.pX&&(n.vastXml=n.ad),r.push(n)}))})),r},getUserSyncs:function(e,t,r,i){var n="";return r&&(n+="&gdpr="+(r.gdprApplies?1:0),n+="&gdpr_consent="+encodeURIComponent(r.consentString||"")),i&&(n+="&us_privacy="+encodeURIComponent(i)),!0===u.vc.getConfig("coppa")&&(n+="&coppa=1"),e.iframeEnabled?[{type:"iframe",url:"https://ssp.disqus.com/sync?type=iframe"+n}]:[{type:"image",url:"https://ssp.disqus.com/sync?type=image"+n}]},onTimeout:function(e){e&&(0,b.h)("https://ssp.disqus.com/timeout/prebid",null,JSON.stringify(e),{method:"POST",options:{withCredentials:!1,contentType:"application/json"}})}};function I(e){var t=e.sizes;if(e.mediaTypes&&e.mediaTypes.banner&&e.mediaTypes.banner.sizes&&(t=e.mediaTypes.banner.sizes),t.length>1){var r=t.map((function(e){return{w:e[0],h:e[1]}}));return{w:t[0][0],h:t[0][1],format:r}}return{w:t[0][0],h:t[0][1]}}function T(e){var t={},r=(0,p.Z)(e,"mediaTypes.video",{});for(var i in O)r.hasOwnProperty(i)&&(t[i]=j(i,r[i],O[i]));return r.playerSize&&((0,s.isArray)(r.playerSize[0])?(t.w=parseInt(r.playerSize[0][0],10),t.h=parseInt(r.playerSize[0][1],10)):(0,s.isNumber)(r.playerSize[0])&&(t.w=parseInt(r.playerSize[0],10),t.h=parseInt(r.playerSize[1],10))),t}function j(e,t,r){var n;switch(r){case h:n=s.isBoolean;break;case f:n=s.isNumber;break;case v:n=s.isStr;break;case w:n=s.isArray}if(n(t))return t;(0,s.logWarn)("Ignoring param key: "+e+", expects "+r+", found "+(0,i.Z)(t))}(0,d.dX)(S),(0,a.z)("zeta_global_sspBidAdapter")}},function(e){var t;t=716,e(e.s=t)}]);
|
|
@@ -7,10 +7,13 @@
|
|
|
7
7
|
<script async src="../../build/dev/prebid.js"></script>
|
|
8
8
|
<script async src="https://www.googletagservices.com/tag/js/gpt.js"></script>
|
|
9
9
|
<script>
|
|
10
|
-
var FAILSAFE_TIMEOUT =
|
|
11
|
-
var PREBID_TIMEOUT =
|
|
10
|
+
var FAILSAFE_TIMEOUT = 33000;
|
|
11
|
+
var PREBID_TIMEOUT = 10000;
|
|
12
12
|
|
|
13
13
|
var adUnits = [{
|
|
14
|
+
debugging: {
|
|
15
|
+
enabled: true
|
|
16
|
+
},
|
|
14
17
|
code: 'div-gpt-ad-1460505748561-0',
|
|
15
18
|
mediaTypes: {
|
|
16
19
|
banner: {
|
|
@@ -23,6 +26,11 @@
|
|
|
23
26
|
params: {
|
|
24
27
|
placementId: 13144370
|
|
25
28
|
}
|
|
29
|
+
},{
|
|
30
|
+
bidder: 'criteo',
|
|
31
|
+
params: {
|
|
32
|
+
zoneId: 497747
|
|
33
|
+
},
|
|
26
34
|
}],
|
|
27
35
|
}];
|
|
28
36
|
|
|
@@ -67,12 +75,15 @@
|
|
|
67
75
|
pbjs.setConfig({
|
|
68
76
|
debugging: {
|
|
69
77
|
enabled: true,
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
78
|
+
},
|
|
79
|
+
realTimeData: {
|
|
80
|
+
auctionDelay: 1000,
|
|
81
|
+
dataProviders: [{
|
|
82
|
+
name: 'growthCodeRtd',
|
|
83
|
+
waitForIt: true,
|
|
84
|
+
params: {
|
|
85
|
+
pid: 'TEST01',
|
|
86
|
+
}
|
|
76
87
|
}]
|
|
77
88
|
},
|
|
78
89
|
userSync: {
|
|
@@ -81,7 +92,7 @@
|
|
|
81
92
|
storage: {
|
|
82
93
|
type: "html5",
|
|
83
94
|
name: "_sharedID", // create a cookie with this name
|
|
84
|
-
expires: 365 // expires in 1
|
|
95
|
+
expires: 365 // expires in 1 year
|
|
85
96
|
}
|
|
86
97
|
},{
|
|
87
98
|
name: 'growthCodeId',
|
|
@@ -251,17 +251,31 @@
|
|
|
251
251
|
{
|
|
252
252
|
"name": "uid2",
|
|
253
253
|
"params": {
|
|
254
|
+
"uid2ApiBase": "https://operator-integ.uidapi.com", // Omit this setting for production
|
|
254
255
|
"uid2Token": {
|
|
255
|
-
"advertising_token": "
|
|
256
|
-
"refresh_token": "
|
|
257
|
-
"identity_expires": Date.now() + 60*1000,
|
|
256
|
+
"advertising_token": "advertising token goes here",
|
|
257
|
+
"refresh_token": "refresh token goes here",
|
|
258
|
+
"identity_expires": Date.now() + 60*1000, // These timestamps should be from the token generate response
|
|
258
259
|
"refresh_from": Date.now() - 10*1000,
|
|
259
260
|
"refresh_expires": Date.now() + 12*60*60*1000,
|
|
260
|
-
"refresh_response_key":
|
|
261
|
+
"refresh_response_key": "refresh key goes here"
|
|
261
262
|
}
|
|
262
263
|
}
|
|
263
|
-
}
|
|
264
|
-
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"name": "euid",
|
|
267
|
+
"params": {
|
|
268
|
+
"euidApiBase": "https://integ.euid.eu", // Omit this setting for production
|
|
269
|
+
"euidToken": {
|
|
270
|
+
"advertising_token": "advertising token goes here",
|
|
271
|
+
"refresh_token": "refresh token goes here",
|
|
272
|
+
"identity_expires": Date.now() + 60*1000, // These timestamps should be from the token generate response
|
|
273
|
+
"refresh_from": Date.now() - 10*1000,
|
|
274
|
+
"refresh_expires": Date.now() + 12*60*60*1000,
|
|
275
|
+
"refresh_response_key": "refresh key goes here"
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
},
|
|
265
279
|
{
|
|
266
280
|
"name": "imuid",
|
|
267
281
|
"params": {
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import {isData, objectTransformer} from '../../src/activities/redactor.js';
|
|
2
|
+
import {deepAccess, deepClone, deepEqual, deepSetValue} from '../../src/utils.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @typedef {Object} ObjectGuard
|
|
6
|
+
* @property {*} obj a view on the guarded object
|
|
7
|
+
* @property {function(): void} verify a function that checks for and rolls back disallowed changes to the guarded object
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Create a factory function for object guards using the given rules.
|
|
12
|
+
*
|
|
13
|
+
* An object guard is a pair {obj, verify} where:
|
|
14
|
+
* - `obj` is a view on the guarded object that applies "redact" rules (the same rules used in activites/redactor.js)
|
|
15
|
+
* - `verify` is a function that, when called, will check that the guarded object was not modified
|
|
16
|
+
* in a way that violates any "write protect" rules, and rolls back any offending changes.
|
|
17
|
+
*
|
|
18
|
+
* This is meant to provide sandboxed version of a privacy-sensitive object, where reads
|
|
19
|
+
* are filtered through redaction rules and writes are checked against write protect rules.
|
|
20
|
+
*
|
|
21
|
+
* @param {Array[TransformationRule]} rules
|
|
22
|
+
* @return {function(*, ...[*]): ObjectGuard}
|
|
23
|
+
*/
|
|
24
|
+
export function objectGuard(rules) {
|
|
25
|
+
const root = {};
|
|
26
|
+
const writeRules = [];
|
|
27
|
+
|
|
28
|
+
rules.forEach(rule => {
|
|
29
|
+
if (rule.wp) writeRules.push(rule);
|
|
30
|
+
if (!rule.get) return;
|
|
31
|
+
rule.paths.forEach(path => {
|
|
32
|
+
let node = root;
|
|
33
|
+
path.split('.').forEach(el => {
|
|
34
|
+
node.children = node.children || {};
|
|
35
|
+
node.children[el] = node.children[el] || {};
|
|
36
|
+
node = node.children[el];
|
|
37
|
+
})
|
|
38
|
+
node.rule = rule;
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const wpTransformer = objectTransformer(writeRules);
|
|
43
|
+
|
|
44
|
+
function mkApplies(session, args) {
|
|
45
|
+
return function applies(rule) {
|
|
46
|
+
if (!session.hasOwnProperty(rule.name)) {
|
|
47
|
+
session[rule.name] = rule.applies(...args);
|
|
48
|
+
}
|
|
49
|
+
return session[rule.name];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function mkGuard(obj, tree, applies) {
|
|
54
|
+
return new Proxy(obj, {
|
|
55
|
+
get(target, prop, receiver) {
|
|
56
|
+
const val = Reflect.get(target, prop, receiver);
|
|
57
|
+
if (tree.hasOwnProperty(prop)) {
|
|
58
|
+
const {children, rule} = tree[prop];
|
|
59
|
+
if (children && val != null && typeof val === 'object') {
|
|
60
|
+
return mkGuard(val, children, applies);
|
|
61
|
+
} else if (rule && isData(val) && applies(rule)) {
|
|
62
|
+
return rule.get(val);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return val;
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function mkVerify(transformResult) {
|
|
71
|
+
return function () {
|
|
72
|
+
transformResult.forEach(fn => fn());
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return function guard(obj, ...args) {
|
|
77
|
+
const session = {};
|
|
78
|
+
return {
|
|
79
|
+
obj: mkGuard(obj, root.children || {}, mkApplies(session, args)),
|
|
80
|
+
verify: mkVerify(wpTransformer(session, obj, ...args))
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* @param {TransformationRuleDef} ruleDef
|
|
87
|
+
* @return {TransformationRule}
|
|
88
|
+
*/
|
|
89
|
+
export function writeProtectRule(ruleDef) {
|
|
90
|
+
return Object.assign({
|
|
91
|
+
wp: true,
|
|
92
|
+
run(root, path, object, property, applies) {
|
|
93
|
+
const origHasProp = object && object.hasOwnProperty(property);
|
|
94
|
+
const original = origHasProp ? object[property] : undefined;
|
|
95
|
+
const origCopy = origHasProp && original != null && typeof original === 'object' ? deepClone(original) : original;
|
|
96
|
+
return function () {
|
|
97
|
+
const object = path == null ? root : deepAccess(root, path);
|
|
98
|
+
const finalHasProp = object && isData(object[property]);
|
|
99
|
+
const finalValue = finalHasProp ? object[property] : undefined;
|
|
100
|
+
if (!origHasProp && finalHasProp && applies()) {
|
|
101
|
+
delete object[property];
|
|
102
|
+
} else if ((origHasProp !== finalHasProp || finalValue !== original || !deepEqual(finalValue, origCopy)) && applies()) {
|
|
103
|
+
deepSetValue(root, (path == null ? [] : [path]).concat(property).join('.'), origCopy);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}, ruleDef)
|
|
108
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import {isActivityAllowed} from '../../src/activities/rules.js';
|
|
2
|
+
import {ACTIVITY_ENRICH_EIDS, ACTIVITY_ENRICH_UFPD} from '../../src/activities/activities.js';
|
|
3
|
+
import {
|
|
4
|
+
appliesWhenActivityDenied,
|
|
5
|
+
ortb2TransmitRules,
|
|
6
|
+
ORTB_EIDS_PATHS,
|
|
7
|
+
ORTB_UFPD_PATHS
|
|
8
|
+
} from '../../src/activities/redactor.js';
|
|
9
|
+
import {objectGuard, writeProtectRule} from './objectGuard.js';
|
|
10
|
+
import {mergeDeep} from '../../src/utils.js';
|
|
11
|
+
|
|
12
|
+
function ortb2EnrichRules(isAllowed = isActivityAllowed) {
|
|
13
|
+
return [
|
|
14
|
+
{
|
|
15
|
+
name: ACTIVITY_ENRICH_EIDS,
|
|
16
|
+
paths: ORTB_EIDS_PATHS,
|
|
17
|
+
applies: appliesWhenActivityDenied(ACTIVITY_ENRICH_EIDS, isAllowed)
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: ACTIVITY_ENRICH_UFPD,
|
|
21
|
+
paths: ORTB_UFPD_PATHS,
|
|
22
|
+
applies: appliesWhenActivityDenied(ACTIVITY_ENRICH_UFPD, isAllowed)
|
|
23
|
+
}
|
|
24
|
+
].map(writeProtectRule)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function ortb2GuardFactory(isAllowed = isActivityAllowed) {
|
|
28
|
+
return objectGuard(ortb2TransmitRules(isAllowed).concat(ortb2EnrichRules(isAllowed)));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
*
|
|
33
|
+
*
|
|
34
|
+
* @typedef {Function} ortb2Guard
|
|
35
|
+
* @param {{}} ortb2 ORTB object to guard
|
|
36
|
+
* @param {{}} params activity params to use for activity checks
|
|
37
|
+
* @returns {ObjectGuard}
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
/*
|
|
41
|
+
* Get a guard for an ORTB object. Read access is restricted in the same way it'd be redacted (see activites/redactor.js);
|
|
42
|
+
* and writes are checked against the enrich* activites.
|
|
43
|
+
*
|
|
44
|
+
* @type ortb2Guard
|
|
45
|
+
*/
|
|
46
|
+
export const ortb2Guard = ortb2GuardFactory();
|
|
47
|
+
|
|
48
|
+
export function ortb2FragmentsGuardFactory(guardOrtb2 = ortb2Guard) {
|
|
49
|
+
return function guardOrtb2Fragments(fragments, params) {
|
|
50
|
+
fragments.global = fragments.global || {};
|
|
51
|
+
fragments.bidder = fragments.bidder || {};
|
|
52
|
+
const bidders = new Set(Object.keys(fragments.bidder));
|
|
53
|
+
const verifiers = [];
|
|
54
|
+
|
|
55
|
+
function makeGuard(ortb2) {
|
|
56
|
+
const guard = guardOrtb2(ortb2, params);
|
|
57
|
+
verifiers.push(guard.verify);
|
|
58
|
+
return guard.obj;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const obj = {
|
|
62
|
+
global: makeGuard(fragments.global),
|
|
63
|
+
bidder: Object.fromEntries(Object.entries(fragments.bidder).map(([bidder, ortb2]) => [bidder, makeGuard(ortb2)]))
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
return {
|
|
67
|
+
obj,
|
|
68
|
+
verify() {
|
|
69
|
+
Object.entries(obj.bidder)
|
|
70
|
+
.filter(([bidder]) => !bidders.has(bidder))
|
|
71
|
+
.forEach(([bidder, ortb2]) => {
|
|
72
|
+
const repl = {};
|
|
73
|
+
const guard = guardOrtb2(repl, params);
|
|
74
|
+
mergeDeep(guard.obj, ortb2);
|
|
75
|
+
guard.verify();
|
|
76
|
+
fragments.bidder[bidder] = repl;
|
|
77
|
+
})
|
|
78
|
+
verifiers.forEach(fn => fn());
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Get a guard for an ortb2Fragments object.
|
|
86
|
+
* @type {function(*, *): ObjectGuard}
|
|
87
|
+
*/
|
|
88
|
+
export const guardOrtb2Fragments = ortb2FragmentsGuardFactory();
|
package/modules/.submodules.json
CHANGED
|
@@ -40,11 +40,13 @@
|
|
|
40
40
|
"tncIdSystem",
|
|
41
41
|
"trustpidSystem",
|
|
42
42
|
"uid2IdSystem",
|
|
43
|
+
"euidIdSystem",
|
|
43
44
|
"unifiedIdSystem",
|
|
44
45
|
"verizonMediaIdSystem",
|
|
45
46
|
"zeotapIdPlusIdSystem",
|
|
46
47
|
"adqueryIdSystem",
|
|
47
|
-
"gravitoIdSystem"
|
|
48
|
+
"gravitoIdSystem",
|
|
49
|
+
"freepassIdSystem"
|
|
48
50
|
],
|
|
49
51
|
"adpod": [
|
|
50
52
|
"freeWheelAdserverVideo",
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { submodule } from '../src/hook.js';
|
|
2
|
-
import { config } from '../src/config.js';
|
|
3
2
|
import { ajax } from '../src/ajax.js';
|
|
4
3
|
import {
|
|
5
4
|
logMessage, logError,
|
|
6
|
-
deepAccess, mergeDeep,
|
|
7
|
-
isNumber, isArray,
|
|
5
|
+
deepAccess, deepSetValue, mergeDeep,
|
|
6
|
+
isNumber, isArray,
|
|
8
7
|
} from '../src/utils.js';
|
|
9
8
|
|
|
10
9
|
// Constants
|
|
@@ -14,7 +13,6 @@ const ORTB2_NAME = '1plusX.com'
|
|
|
14
13
|
const PAPI_VERSION = 'v1.0';
|
|
15
14
|
const LOG_PREFIX = '[1plusX RTD Module]: ';
|
|
16
15
|
const OPE_FPID = 'ope_fpid'
|
|
17
|
-
const LEGACY_SITE_KEYWORDS_BIDDERS = ['appnexus'];
|
|
18
16
|
export const segtaxes = {
|
|
19
17
|
// cf. https://github.com/InteractiveAdvertisingBureau/openrtb/pull/108
|
|
20
18
|
AUDIENCE: 526,
|
|
@@ -151,18 +149,7 @@ const getTargetingDataFromPapi = (papiUrl) => {
|
|
|
151
149
|
* @param {string[]} topics Represents the topics of the page
|
|
152
150
|
* @returns {Object} Object describing the updates to make on bidder configs
|
|
153
151
|
*/
|
|
154
|
-
export const buildOrtb2Updates = ({ segments = [], topics = [] }
|
|
155
|
-
// Currently appnexus bidAdapter doesn't support topics in `site.content.data.segment`
|
|
156
|
-
// Therefore, writing them in `site.keywords` until it's supported
|
|
157
|
-
// Other bidAdapters do fine with `site.content.data.segment`
|
|
158
|
-
const writeToLegacySiteKeywords = LEGACY_SITE_KEYWORDS_BIDDERS.includes(bidder);
|
|
159
|
-
if (writeToLegacySiteKeywords) {
|
|
160
|
-
const site = {
|
|
161
|
-
keywords: topics.join(',')
|
|
162
|
-
};
|
|
163
|
-
return { site };
|
|
164
|
-
}
|
|
165
|
-
|
|
152
|
+
export const buildOrtb2Updates = ({ segments = [], topics = [] }) => {
|
|
166
153
|
const userData = {
|
|
167
154
|
name: ORTB2_NAME,
|
|
168
155
|
segment: segments.map((segmentId) => ({ id: segmentId }))
|
|
@@ -172,81 +159,64 @@ export const buildOrtb2Updates = ({ segments = [], topics = [] }, bidder) => {
|
|
|
172
159
|
segment: topics.map((topicId) => ({ id: topicId })),
|
|
173
160
|
ext: { segtax: segtaxes.CONTENT }
|
|
174
161
|
}
|
|
175
|
-
|
|
162
|
+
// Currently appnexus bidAdapter doesn't support topics in `site.content.data.segment`
|
|
163
|
+
// Therefore, writing them in `site.keywords` until it's supported
|
|
164
|
+
// Other bidAdapters do fine with `site.content.data.segment`
|
|
165
|
+
const siteKeywords = topics.map(topic => `1plusX=${topic}`).join(',');
|
|
166
|
+
|
|
167
|
+
return { userData, siteContentData, siteKeywords };
|
|
176
168
|
}
|
|
177
169
|
|
|
178
170
|
/**
|
|
179
171
|
* Merges the targeting data with the existing config for bidder and updates
|
|
180
172
|
* @param {string} bidder Bidder for which to set config
|
|
181
173
|
* @param {Object} ortb2Updates Updates to be applied to bidder config
|
|
182
|
-
* @param {Object}
|
|
183
|
-
* @returns {Object} Updated bidder config
|
|
174
|
+
* @param {Object} biddersOrtb2 All current bidder configs
|
|
184
175
|
*/
|
|
185
|
-
export const updateBidderConfig = (bidder, ortb2Updates,
|
|
186
|
-
const {
|
|
187
|
-
|
|
176
|
+
export const updateBidderConfig = (bidder, ortb2Updates, biddersOrtb2) => {
|
|
177
|
+
const { siteKeywords, siteContentData, userData } = ortb2Updates;
|
|
178
|
+
mergeDeep(biddersOrtb2, { [bidder]: {} });
|
|
179
|
+
const bidderConfig = deepAccess(biddersOrtb2, bidder);
|
|
188
180
|
|
|
189
|
-
|
|
190
|
-
// Legacy : cf. comment on buildOrtb2Updates
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
deepSetValue(bidderConfigCopy, 'ortb2.site', updatedSite);
|
|
181
|
+
{
|
|
182
|
+
// Legacy : cf. comment on buildOrtb2Updates
|
|
183
|
+
const siteKeywordsPath = 'site.keywords';
|
|
184
|
+
deepSetValue(bidderConfig, siteKeywordsPath, siteKeywords);
|
|
194
185
|
}
|
|
195
186
|
|
|
196
|
-
|
|
197
|
-
const siteDataPath = '
|
|
198
|
-
const currentSiteContentData = deepAccess(
|
|
187
|
+
{
|
|
188
|
+
const siteDataPath = 'site.content.data';
|
|
189
|
+
const currentSiteContentData = deepAccess(bidderConfig, siteDataPath) || [];
|
|
199
190
|
const updatedSiteContentData = [
|
|
200
191
|
...currentSiteContentData.filter(({ name }) => name != siteContentData.name),
|
|
201
192
|
siteContentData
|
|
202
193
|
];
|
|
203
|
-
deepSetValue(
|
|
194
|
+
deepSetValue(bidderConfig, siteDataPath, updatedSiteContentData);
|
|
204
195
|
}
|
|
205
196
|
|
|
206
|
-
|
|
207
|
-
const userDataPath = '
|
|
208
|
-
const currentUserData = deepAccess(
|
|
197
|
+
{
|
|
198
|
+
const userDataPath = 'user.data';
|
|
199
|
+
const currentUserData = deepAccess(bidderConfig, userDataPath) || [];
|
|
209
200
|
const updatedUserData = [
|
|
210
201
|
...currentUserData.filter(({ name }) => name != userData.name),
|
|
211
202
|
userData
|
|
212
203
|
];
|
|
213
|
-
deepSetValue(
|
|
204
|
+
deepSetValue(bidderConfig, userDataPath, updatedUserData);
|
|
214
205
|
}
|
|
215
|
-
|
|
216
|
-
return bidderConfigCopy;
|
|
217
206
|
};
|
|
218
207
|
|
|
219
|
-
const setAppnexusAudiences = (audiences) => {
|
|
220
|
-
config.setConfig({
|
|
221
|
-
appnexusAuctionKeywords: {
|
|
222
|
-
'1plusX': audiences,
|
|
223
|
-
},
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
|
|
227
208
|
/**
|
|
228
209
|
* Updates bidder configs with the targeting data retreived from Profile API
|
|
229
210
|
* @param {Object} papiResponse Response from Profile API
|
|
230
211
|
* @param {Object} config Module configuration
|
|
231
212
|
* @param {string[]} config.bidders Bidders specified in module's configuration
|
|
232
213
|
*/
|
|
233
|
-
export const setTargetingDataToConfig = (papiResponse, { bidders }) => {
|
|
234
|
-
const bidderConfigs = config.getBidderConfig();
|
|
214
|
+
export const setTargetingDataToConfig = (papiResponse, { bidders, biddersOrtb2 }) => {
|
|
235
215
|
const { s: segments, t: topics } = papiResponse;
|
|
236
216
|
|
|
217
|
+
const ortb2Updates = buildOrtb2Updates({ segments, topics });
|
|
237
218
|
for (const bidder of bidders) {
|
|
238
|
-
|
|
239
|
-
const updatedBidderConfig = updateBidderConfig(bidder, ortb2Updates, bidderConfigs);
|
|
240
|
-
if (updatedBidderConfig) {
|
|
241
|
-
config.setBidderConfig({
|
|
242
|
-
bidders: [bidder],
|
|
243
|
-
config: updatedBidderConfig
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
if (bidder === 'appnexus') {
|
|
247
|
-
// Do the legacy stuff for appnexus with segments
|
|
248
|
-
setAppnexusAudiences(segments);
|
|
249
|
-
}
|
|
219
|
+
updateBidderConfig(bidder, ortb2Updates, biddersOrtb2);
|
|
250
220
|
}
|
|
251
221
|
}
|
|
252
222
|
|
|
@@ -272,13 +242,14 @@ const getBidRequestData = (reqBidsConfigObj, callback, moduleConfig, userConsent
|
|
|
272
242
|
try {
|
|
273
243
|
// Get the required config
|
|
274
244
|
const { customerId, bidders } = extractConfig(moduleConfig, reqBidsConfigObj);
|
|
245
|
+
const { ortb2Fragments: { bidder: biddersOrtb2 } } = reqBidsConfigObj;
|
|
275
246
|
// Get PAPI URL
|
|
276
247
|
const papiUrl = getPapiUrl(customerId, extractConsent(userConsent) || {}, extractFpid())
|
|
277
248
|
// Call PAPI
|
|
278
249
|
getTargetingDataFromPapi(papiUrl)
|
|
279
250
|
.then((papiResponse) => {
|
|
280
251
|
logMessage(LOG_PREFIX, 'Get targeting data request successful');
|
|
281
|
-
setTargetingDataToConfig(papiResponse, { bidders });
|
|
252
|
+
setTargetingDataToConfig(papiResponse, { bidders, biddersOrtb2 });
|
|
282
253
|
callback();
|
|
283
254
|
})
|
|
284
255
|
} catch (error) {
|