prebid.js 9.1.0 → 9.3.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/browsers.json +3 -3
- package/dist/33acrossAnalyticsAdapter.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/BTBidAdapter.js +1 -1
- package/dist/acuityadsBidAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adagioRtdProvider.js +1 -1
- package/dist/adagioUtils.js +1 -0
- package/dist/addefendBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/admanBidAdapter.js +1 -1
- package/dist/adnuntiusBidAdapter.js +1 -1
- package/dist/adpod.js +1 -1
- package/dist/adprimeBidAdapter.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adstirBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/agmaAnalyticsAdapter.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/appnexusUtils.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/autoplayDetection.js +1 -1
- package/dist/axisBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/beyondmediaBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bliinkBidAdapter.js +1 -1
- package/dist/boldwinBidAdapter.js +1 -1
- package/dist/bridBidAdapter.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/chunk-core.js +1 -1
- package/dist/compassBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagement.js +1 -0
- package/dist/consentManagementGpp.js +1 -1
- package/dist/consentManagementTcf.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/contentexchangeBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/copper6sspBidAdapter.js +1 -0
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dailymotionBidAdapter.js +1 -1
- package/dist/dependencies.json +96 -6
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/e_volutionBidAdapter.js +1 -1
- package/dist/emtvBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/exadsBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/globalsunBidAdapter.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/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/illuminBidAdapter.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqIdSystem.js +1 -1
- package/dist/iqzoneBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/kimberliteBidAdapter.js +1 -1
- package/dist/kiviadsBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/krushmediaBidAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/loyalBidAdapter.js +1 -1
- package/dist/luceadBidAdapter.js +1 -1
- package/dist/lunamediahbBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mathildeadsBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/mgidXBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/mobfoxpbBidAdapter.js +1 -1
- package/dist/mobianRtdProvider.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/nobidAnalyticsAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +211 -204
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openwebBidAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/orakiBidAdapter.js +1 -0
- package/dist/orbidderBidAdapter.js +1 -1
- package/dist/ortbConverter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/ozoneBidAdapter.js +1 -1
- package/dist/paapi.js +1 -1
- package/dist/pairIdSystem.js +1 -1
- package/dist/pgamsspBidAdapter.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/playdigoBidAdapter.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/pubCircleBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/publirBidAdapter.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/qtBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/raynRtdProvider.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/riseBidAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/setupadBidAdapter.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/shinezRtbBidAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smartyadsBidAdapter.js +1 -1
- package/dist/smartyadsUtils.js +1 -0
- package/dist/smartytechBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/snigelBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stnBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tagorasBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/teqblazeUtils.js +1 -0
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/themoneytizerBidAdapter.js +1 -1
- package/dist/topicsFpdModule.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/twistDigitalBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/unrulyBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/vidazooUtils.js +1 -0
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visiblemeasuresBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahooAdsBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yuktamediaAnalyticsAdapter.js +1 -1
- package/integrationExamples/gpt/raynRtdProvider_example.html +1 -0
- package/libraries/adagioUtils/adagioUtils.js +35 -0
- package/libraries/appnexusUtils/anUtils.js +1 -0
- package/libraries/autoplayDetection/autoplay.js +8 -1
- package/libraries/consentManagement/cmUtils.js +38 -0
- package/libraries/ortbConverter/converter.js +1 -1
- package/libraries/smartyadsUtils/getAdUrlByRegion.js +32 -0
- package/libraries/teqblazeUtils/bidderUtils.js +253 -0
- package/libraries/vidazooUtils/bidderUtils.js +481 -0
- package/libraries/vidazooUtils/constants.js +7 -0
- package/modules/.submodules.json +1 -0
- package/modules/acuityadsBidAdapter.js +5 -203
- package/modules/adagioBidAdapter.js +1 -17
- package/modules/adagioRtdProvider.js +41 -51
- package/modules/adagioRtdProvider.md +1 -0
- package/modules/addefendBidAdapter.js +1 -2
- package/modules/adlooxRtdProvider.js +1 -1
- package/modules/admanBidAdapter.js +31 -188
- package/modules/adnuntiusBidAdapter.js +1 -0
- package/modules/adprimeBidAdapter.js +28 -165
- package/modules/adxcgAnalyticsAdapter.js +1 -2
- package/modules/axisBidAdapter.js +33 -165
- package/modules/beyondmediaBidAdapter.js +5 -189
- package/modules/bliinkBidAdapter.js +3 -31
- package/modules/boldwinBidAdapter.js +21 -159
- package/modules/ceeIdSystem.js +1 -1
- package/modules/compassBidAdapter.js +5 -198
- package/modules/consentManagementGpp.js +2 -38
- package/modules/consentManagementTcf.js +7 -38
- package/modules/contentexchangeBidAdapter.js +5 -200
- package/modules/conversantAnalyticsAdapter.js +1 -2
- package/modules/conversantBidAdapter.js +1 -0
- package/modules/copper6sspBidAdapter.js +19 -0
- package/modules/copper6sspBidAdapter.md +79 -0
- package/modules/criteoBidAdapter.js +10 -3
- package/modules/e_volutionBidAdapter.js +4 -186
- package/modules/emtvBidAdapter.js +5 -198
- package/modules/globalsunBidAdapter.js +5 -199
- package/modules/id5AnalyticsAdapter.js +1 -2
- package/modules/id5IdSystem.js +31 -2
- package/modules/id5IdSystem.md +67 -2
- package/modules/intentIqIdSystem.js +408 -50
- package/modules/intentIqIdSystem.md +92 -0
- package/modules/iqzoneBidAdapter.js +5 -224
- package/modules/kiviadsBidAdapter.js +5 -199
- package/modules/krushmediaBidAdapter.js +25 -143
- package/modules/liveIntentIdSystem.js +2 -2
- package/modules/loyalBidAdapter.js +4 -178
- package/modules/lunamediahbBidAdapter.js +5 -118
- package/modules/mabidderBidAdapter.js +1 -2
- package/modules/mathildeadsBidAdapter.js +5 -198
- package/modules/medianetAnalyticsAdapter.js +1 -2
- package/modules/medianetBidAdapter.js +1 -1
- package/modules/mgidXBidAdapter.js +14 -207
- package/modules/mobfoxpbBidAdapter.js +4 -135
- package/modules/mobianRtdProvider.js +2 -2
- package/modules/nobidAnalyticsAdapter.js +2 -3
- package/modules/orakiBidAdapter.js +19 -0
- package/modules/orakiBidAdapter.md +79 -0
- package/modules/orbidderBidAdapter.js +4 -2
- package/modules/ozoneBidAdapter.js +117 -58
- package/modules/paapi.js +2 -1
- package/modules/pairIdSystem.js +27 -10
- package/modules/pgamsspBidAdapter.js +5 -240
- package/modules/pixfutureBidAdapter.js +1 -2
- package/modules/playdigoBidAdapter.js +4 -186
- package/modules/prebidServerBidAdapter/index.js +10 -3
- package/modules/pubCircleBidAdapter.js +5 -218
- package/modules/pubmaticAnalyticsAdapter.js +21 -8
- package/modules/pubxaiAnalyticsAdapter.js +1 -5
- package/modules/qtBidAdapter.js +5 -224
- package/modules/raynRtdProvider.js +36 -3
- package/modules/seedtagBidAdapter.js +5 -0
- package/modules/setupadBidAdapter.js +58 -140
- package/modules/smartadserverBidAdapter.js +3 -0
- package/modules/smartyadsBidAdapter.js +6 -110
- package/modules/smartytechBidAdapter.js +7 -2
- package/modules/snigelBidAdapter.js +1 -2
- package/modules/tappxBidAdapter.js +1 -2
- package/modules/terceptAnalyticsAdapter.js +1 -2
- package/modules/topicsFpdModule.js +1 -1
- package/modules/twistDigitalBidAdapter.js +1 -12
- package/modules/uid2IdSystem.js +0 -1
- package/modules/uid2IdSystem_shared.js +0 -1
- package/modules/userId/index.js +31 -21
- package/modules/vidazooBidAdapter.js +26 -468
- package/modules/visiblemeasuresBidAdapter.js +5 -199
- package/modules/yahooAdsBidAdapter.js +4 -1
- package/modules/yuktamediaAnalyticsAdapter.js +1 -2
- package/package.json +1 -1
- package/src/auction.js +5 -63
- package/src/utils/focusTimeout.js +41 -0
- package/src/utils/ttlCollection.js +2 -1
- package/src/utils.js +42 -0
- package/src/videoCache.js +72 -0
- package/test/mocks/videoCacheStub.js +1 -1
- package/test/spec/auctionmanager_spec.js +16 -1
- package/test/spec/fpd/gdpr_spec.js +24 -2
- package/test/spec/libraries/teqblazeUtils/bidderUtils_spec.js +519 -0
- package/test/spec/modules/acuityadsBidAdapter_spec.js +79 -43
- package/test/spec/modules/adagioRtdProvider_spec.js +62 -1
- package/test/spec/modules/admanBidAdapter_spec.js +370 -247
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +6 -3
- package/test/spec/modules/adprimeBidAdapter_spec.js +225 -78
- package/test/spec/modules/axisBidAdapter_spec.js +78 -14
- package/test/spec/modules/beyondmediaBidAdapter_spec.js +80 -18
- package/test/spec/modules/bliinkBidAdapter_spec.js +8 -2
- package/test/spec/modules/boldwinBidAdapter_spec.js +221 -75
- package/test/spec/modules/compassBidAdapter_spec.js +130 -16
- package/test/spec/modules/contentexchangeBidAdapter_spec.js +134 -21
- package/test/spec/modules/conversantAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/conversantBidAdapter_spec.js +7 -0
- package/test/spec/modules/copper6sspBidAdapter_spec.js +514 -0
- package/test/spec/modules/e_volutionBidAdapter_spec.js +65 -3
- package/test/spec/modules/emtvBidAdapter_spec.js +131 -16
- package/test/spec/modules/globalsunBidAdapter_spec.js +130 -16
- package/test/spec/modules/id5IdSystem_spec.js +79 -3
- package/test/spec/modules/intentIqIdSystem_spec.js +264 -36
- package/test/spec/modules/iqzoneBidAdapter_spec.js +66 -12
- package/test/spec/modules/kiviadsBidAdapter_spec.js +131 -20
- package/test/spec/modules/krushmediaBidAdapter_spec.js +272 -90
- package/test/spec/modules/loyalBidAdapter_spec.js +114 -14
- package/test/spec/modules/lunamediahbBidAdapter_spec.js +221 -87
- package/test/spec/modules/mathildeadsBidAdapter_spec.js +87 -18
- package/test/spec/modules/mgidXBidAdapter_spec.js +11 -3
- package/test/spec/modules/mobfoxpbBidAdapter_spec.js +229 -91
- package/test/spec/modules/orakiBidAdapter_spec.js +510 -0
- package/test/spec/modules/ozoneBidAdapter_spec.js +192 -22
- package/test/spec/modules/paapi_spec.js +5 -5
- package/test/spec/modules/pgamsspBidAdapter_spec.js +83 -16
- package/test/spec/modules/playdigoBidAdapter_spec.js +38 -9
- package/test/spec/modules/prebidServerBidAdapter_spec.js +14 -0
- package/test/spec/modules/pubCircleBidAdapter_spec.js +82 -17
- package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +52 -5
- package/test/spec/modules/qtBidAdapter_spec.js +15 -3
- package/test/spec/modules/raynRtdProvider_spec.js +25 -0
- package/test/spec/modules/seedtagBidAdapter_spec.js +29 -0
- package/test/spec/modules/setupadBidAdapter_spec.js +124 -97
- package/test/spec/modules/smartadserverBidAdapter_spec.js +7 -0
- package/test/spec/modules/smartyadsBidAdapter_spec.js +6 -83
- package/test/spec/modules/smartytechBidAdapter_spec.js +5 -1
- package/test/spec/modules/topicsFpdModule_spec.js +43 -59
- package/test/spec/modules/twistDigitalBidAdapter_spec.js +5 -3
- package/test/spec/modules/userId_spec.js +86 -47
- package/test/spec/modules/vidazooBidAdapter_spec.js +21 -23
- package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +130 -16
- package/test/spec/modules/yahooAdsBidAdapter_spec.js +1 -1
- package/test/spec/ortbConverter/converter_spec.js +7 -3
- package/test/spec/unit/utils/focusTimeout_spec.js +60 -0
- package/test/spec/videoCache_spec.js +56 -53
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[38743],{98059:(e,t,n)=>{var s=n(7873),i=n(91069),d=n(68044),a=n(88910),o=n(78969),r=n(11445),c=n(97779),g=n(67314);const l={},p={},b={},u={};u[o.qY.BID_ADJUSTMENT]=!0,u[o.qY.BIDDER_DONE]=!0,u[o.qY.AUCTION_END]=!0;let v="",f="https://pool.tsukiji.iponweb.net/hba",I="";function S(e,t){e.adUnitCode&&t[e.adUnitCode]&&(e.adUnitName=t[e.adUnitCode]),(0,i.isArray)(e.adUnits)&&e.adUnits.forEach((e=>{e.code&&t[e.code]&&(e.name=t[e.code])})),(0,i.isArray)(e.adUnitCodes)&&(e.adUnitNames=e.adUnitCodes.map((e=>t[e]))),["bids","bidderRequests","bidsReceived","noBids"].forEach((n=>{!function(e,t){(0,i.isArray)(e)&&e.forEach((e=>{S(e,t)}))}(e[n],t)}))}const y=Object.assign((0,a.Ay)({analyticsType:"endpoint"}),{getUrl:()=>f,track(e){let{eventType:t,args:n={}}=e;if(t===o.qY.BID_REQUESTED){const e=`${n.bidderCode}_${n.auctionId}`;l[e]=(0,i.deepClone)(n),l[e].bids=[],n.bids.forEach((e=>{p[`${e.bidId}_${e.auctionId}`]=e}))}if(t===o.qY.BID_TIMEOUT&&(0,i.isArray)(n)){const e=y.eventsStorage,s={};n.forEach((n=>{const i=`${n.bidId}_${n.auctionId}`,d=`${n.bidder}_${n.auctionId}`;e[n.auctionId]||(e[n.auctionId]={events:[]}),(l[d]||s[n.bidder])&&p[i]&&(s[n.bidder]||(s[n.bidder]=l[d],e[n.auctionId].events.push({eventType:t,params:s[n.bidder]}),delete l[d]),s[n.bidder].bids.push(p[i]),delete p[i])}))}else if(v=n.auctionId||v,v){const e=y.eventsStorage;e[v]||(e[v]={events:[]});const s=n.refererInfo&&n.refererInfo.page;s&&b[v]!==s&&(b[v]=s);const i=Object.assign({},n);if(delete i.ad,i.bidsReceived&&(i.bidsReceived=i.bidsReceived.map((e=>{const t=Object.assign({},e);return delete t.ad,t}))),u[t]||e[v].events.push({eventType:t,params:i}),t===o.qY.AUCTION_END||t===o.qY.BID_WON){if(i.adServerTargeting=c.iS.getAllTargeting(g.n.getAdUnitCodes(),g.n.getBidsReceived()),y.eventsStorage[v]&&y.eventsStorage[v].events.length){y.eventsStorage[v].page={url:b[v]},y.eventsStorage[v].pubId=I,y.eventsStorage[v].wrapper_version="9.
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[38743],{98059:(e,t,n)=>{var s=n(7873),i=n(91069),d=n(68044),a=n(88910),o=n(78969),r=n(11445),c=n(97779),g=n(67314);const l={},p={},b={},u={};u[o.qY.BID_ADJUSTMENT]=!0,u[o.qY.BIDDER_DONE]=!0,u[o.qY.AUCTION_END]=!0;let v="",f="https://pool.tsukiji.iponweb.net/hba",I="";function S(e,t){e.adUnitCode&&t[e.adUnitCode]&&(e.adUnitName=t[e.adUnitCode]),(0,i.isArray)(e.adUnits)&&e.adUnits.forEach((e=>{e.code&&t[e.code]&&(e.name=t[e.code])})),(0,i.isArray)(e.adUnitCodes)&&(e.adUnitNames=e.adUnitCodes.map((e=>t[e]))),["bids","bidderRequests","bidsReceived","noBids"].forEach((n=>{!function(e,t){(0,i.isArray)(e)&&e.forEach((e=>{S(e,t)}))}(e[n],t)}))}const y=Object.assign((0,a.Ay)({analyticsType:"endpoint"}),{getUrl:()=>f,track(e){let{eventType:t,args:n={}}=e;if(t===o.qY.BID_REQUESTED){const e=`${n.bidderCode}_${n.auctionId}`;l[e]=(0,i.deepClone)(n),l[e].bids=[],n.bids.forEach((e=>{p[`${e.bidId}_${e.auctionId}`]=e}))}if(t===o.qY.BID_TIMEOUT&&(0,i.isArray)(n)){const e=y.eventsStorage,s={};n.forEach((n=>{const i=`${n.bidId}_${n.auctionId}`,d=`${n.bidder}_${n.auctionId}`;e[n.auctionId]||(e[n.auctionId]={events:[]}),(l[d]||s[n.bidder])&&p[i]&&(s[n.bidder]||(s[n.bidder]=l[d],e[n.auctionId].events.push({eventType:t,params:s[n.bidder]}),delete l[d]),s[n.bidder].bids.push(p[i]),delete p[i])}))}else if(v=n.auctionId||v,v){const e=y.eventsStorage;e[v]||(e[v]={events:[]});const s=n.refererInfo&&n.refererInfo.page;s&&b[v]!==s&&(b[v]=s);const i=Object.assign({},n);if(delete i.ad,i.bidsReceived&&(i.bidsReceived=i.bidsReceived.map((e=>{const t=Object.assign({},e);return delete t.ad,t}))),u[t]||e[v].events.push({eventType:t,params:i}),t===o.qY.AUCTION_END||t===o.qY.BID_WON){if(i.adServerTargeting=c.iS.getAllTargeting(g.n.getAdUnitCodes(),g.n.getBidsReceived()),y.eventsStorage[v]&&y.eventsStorage[v].events.length){y.eventsStorage[v].page={url:b[v]},y.eventsStorage[v].pubId=I,y.eventsStorage[v].wrapper_version="9.3.0";const e=function(){if(window.googletag&&window.googletag.pubads){const e=googletag.pubads();if(e&&e.getSlots){const t=e.getSlots();if(t&&t.length){const e={};return t.forEach((t=>{const n=t.getSlotElementId(),s=(t.getAdUnitPath()||"").split("/").pop();e[n]=s})),e}}}}();e&&y.eventsStorage[v].events.forEach((t=>{S(t.params,e)}))}y.sendStat(y.eventsStorage[v],v)}}},sendStat(e,t){e&&e.events&&e.events.length&&(delete y.eventsStorage[t],(0,d.RD)(f,{success:function(){},error:function(){}},JSON.stringify(e),{method:"POST"}))}});y.eventsStorage={},y.originEnableAnalytics=y.enableAnalytics,y.enableAnalytics=function(e){const t=e&&e.options;t&&("string"==typeof t.url&&(f=t.url),t.pubId&&(I=t.pubId.toString())),y.originEnableAnalytics(e)},r.Ay.registerAnalyticsAdapter({adapter:y,code:"yieldone"});(0,s.E)("yieldoneAnalyticsAdapter")}},e=>{e.O(0,[2630,60802,51085],(()=>{return t=98059,e(e.s=t);var t}));e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[31930],{74352:(t,e,i)=>{var n=i(7873),o=i(91069),a=i(68044),s=i(88910),d=i(11445),c=i(78969),r=i(12938),u=i(27934),l=i(15901),I=i(45569);const g="yuktamedia",b=(0,r.vM)({moduleType:I.Tn,moduleName:g});let
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[31930],{74352:(t,e,i)=>{var n=i(7873),o=i(91069),a=i(68044),s=i(88910),d=i(11445),c=i(78969),r=i(12938),u=i(27934),l=i(15901),I=i(45569);const g="yuktamedia",b=(0,r.vM)({moduleType:I.Tn,moduleName:g});let f;const m={auctions:{}},p="yuktamediaAnalytics_",y=["utm_source","utm_medium","utm_campaign","utm_term","utm_content"],v=(0,o.getWindowLocation)(),h=(0,u.EN)().page,S={userAgent:window.navigator.userAgent,timezoneOffset:(new Date).getTimezoneOffset(),language:window.navigator.language,screenWidth:window.screen.width,screenHeight:window.screen.height,pageViewId:(0,o.generateUUID)(),host:v.host,path:v.pathname,search:v.search,hash:v.hash,referer:h,refererDomain:(0,o.parseUrl)(h).host,yuktamediaAnalyticsVersion:"v3.1.0",prebidVersion:"vprebid.version$"};function O(){if(function(){let t=b.getDataFromLocalStorage(p.concat("session_timeout"));return Date.now()-t>36e5}()){let t=(0,o.generateUUID)();b.setDataInLocalStorage(p.concat("session_id"),t)}f.sessionId=b.getDataFromLocalStorage(p.concat("session_id"))?b.getDataFromLocalStorage(p.concat("session_id")):"",b.setDataInLocalStorage(p.concat("session_timeout"),Date.now())}function D(t,e){t.initOptions=Object.assign(S,f);const i=(0,o.buildUrl)({protocol:"https",hostname:"analytics-prebid.yuktamedia.com",pathname:"/api/bids"});(0,a.hd)(i,{body:JSON.stringify(t),keepalive:!0,withCredentials:!0,method:"POST"}).catch((e=>{(0,a.RD)(i,void 0,JSON.stringify(t),{method:"POST",contentType:"text/plain"})}))}var T=Object.assign((0,s.Ay)({analyticsType:"endpoint"}),{track(t){let{eventType:e,args:i}=t;if(void 0!==i)switch(e){case c.qY.AUCTION_INIT:(0,o.logInfo)(p+"AUCTION_INIT:",JSON.stringify(i)),void 0!==i.auctionId&&i.auctionId.length&&(m.auctions[i.auctionId]={bids:{}});break;case c.qY.BID_REQUESTED:(0,o.logInfo)(p+"BID_REQUESTED:",JSON.stringify(i)),void 0!==i.auctionId&&i.auctionId.length&&(void 0===m.auctions[i.auctionId]&&(m.auctions[i.auctionId]={bids:{}}),m.auctions[i.auctionId].timeStamp=i.start,i.bids.forEach((function(t){if(m.auctions[i.auctionId].bids[t.bidId]={bidder:t.bidder,adUnit:t.adUnitCode,sizes:(0,o.parseSizesInput)(t.sizes).toString(),isBid:!1,won:!1,timeout:!1,renderStatus:"bid-requested",bidId:t.bidId,auctionId:i.auctionId},void 0!==f.enableUserIdCollection&&f.enableUserIdCollection&&void 0!==t.userId)for(let[e,n]in Object.entries(t.userId))e="string"!=typeof e?JSON.stringify(e):e,n="string"!=typeof n?JSON.stringify(n):n,m.auctions[i.auctionId].bids[t.bidId]["userID-".concat(e)]=n})));break;case c.qY.BID_RESPONSE:if((0,o.logInfo)(p+"BID_RESPONSE:",JSON.stringify(i)),void 0!==i.auctionId&&i.auctionId.length)if(void 0===m.auctions[i.auctionId])m.auctions[i.auctionId]={bids:{}};else if(Object.keys(m.auctions[i.auctionId].bids).length){let t=m.auctions[i.auctionId].bids[i.requestId];t.isBid=i.getStatusCode()===c.XQ.GOOD,t.cpm=i.cpm,t.currency=i.currency,t.netRevenue=i.netRevenue,t.dealId=void 0!==i.dealId?i.dealId:"",t.mediaType=i.mediaType,"native"===t.mediaType&&(t.nativeTitle=void 0!==i.native.title?i.native.title:"",t.nativeSponsoredBy=void 0!==i.native.sponsoredBy?i.native.sponsoredBy:""),t.timeToRespond=i.timeToRespond,t.requestTimestamp=i.requestTimestamp,t.responseTimestamp=i.responseTimestamp,t.bidForSize=i.size;for(const[e,n]of Object.entries(i.adserverTargeting))["body","icon","image","linkurl","host","path"].every((t=>!(0,l.mK)(e,t)))&&(t["adserverTargeting-"+e]=n);t.renderStatus="bid-response-received"}break;case c.qY.NO_BID:if((0,o.logInfo)(p+"NO_BID:",JSON.stringify(i)),void 0!==i.auctionId&&i.auctionId.length)if(void 0===m.auctions[i.auctionId])m.auctions[i.auctionId]={bids:{}};else if(Object.keys(m.auctions[i.auctionId].bids).length){m.auctions[i.auctionId].bids[i.bidId].renderStatus="no-bid"}break;case c.qY.BID_WON:if((0,o.logInfo)(p+"BID_WON:",JSON.stringify(i)),void 0!==f.enableSession&&f.enableSession&&O(),void 0!==i.auctionId&&i.auctionId.length)if(void 0===m.auctions[i.auctionId])m.auctions[i.auctionId]={bids:{}};else if(Object.keys(m.auctions[i.auctionId].bids).length){const t=m.auctions[i.auctionId].bids[i.requestId];t.won=!0,t.renderStatus="bid-won",D({bids:[t]})}break;case c.qY.BID_TIMEOUT:(0,o.logInfo)(p+"BID_TIMEOUT:",JSON.stringify(i)),i.length&&i.forEach((t=>{if(void 0!==t&&void 0!==t.auctionId&&t.auctionId.length)if(void 0===m.auctions[i.auctionId])m.auctions[i.auctionId]={bids:{}};else if(Object.keys(m.auctions[i.auctionId].bids).length){const e=m.auctions[t.auctionId].bids[t.bidId];e.timeout=!0,e.renderStatus="bid-timedout"}}));break;case c.qY.AUCTION_END:if((0,o.logInfo)(p+"AUCTION_END:",JSON.stringify(i)),void 0!==f.enableSession&&f.enableSession&&O(),void 0!==i.auctionId&&i.auctionId.length){D({bids:Object.values(m.auctions[i.auctionId].bids)})}}}});T.buildUtmTagData=function(t){let e={},i=!1;return void 0!==t.enableUTMCollection&&t.enableUTMCollection&&(y.forEach((function(t){let n=function(t){let e={};return window.location.href.replace(v.hash,"").replace(/[?&]+([^=&]+)=?([^&]*)?/gi,(function(t,i,n){e[i]=void 0!==n?n:""})),e[t]?e[t]:""}(t);""!==n&&(i=!0),e[t]=n})),y.forEach((function(t){i?(b.setDataInLocalStorage(p.concat(t),e[t]),b.setDataInLocalStorage(p.concat("utm_timeout"),Date.now())):function(){let t=b.getDataFromLocalStorage(p.concat("utm_timeout"));return Date.now()-t>36e5}()||(e[t]=b.getDataFromLocalStorage(p.concat(t))?b.getDataFromLocalStorage(p.concat(t)):"",b.setDataInLocalStorage(p.concat("utm_timeout"),Date.now()))}))),e},T.originEnableAnalytics=T.enableAnalytics,T.enableAnalytics=function(t){!t||!t.options||void 0!==t.options.pubId&&void 0!==t.options.pubKey?(f=Object.assign({},t.options,this.buildUtmTagData(t.options)),T.originEnableAnalytics(t)):(0,o.logError)("Need pubId and pubKey to log auction results. Please contact a YuktaMedia representative if you do not know your pubId and pubKey.")},d.Ay.registerAnalyticsAdapter({adapter:T,code:g});(0,n.E)("yuktamediaAnalyticsAdapter")}},t=>{t.O(0,[2630,60802,51085],(()=>{return e=74352,t(t.s=e);var e}));t.O()}]);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {
|
|
2
|
+
canAccessWindowTop,
|
|
3
|
+
generateUUID,
|
|
4
|
+
getWindowSelf,
|
|
5
|
+
getWindowTop,
|
|
6
|
+
isSafeFrameWindow
|
|
7
|
+
} from '../../src/utils.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Returns the best Window object to use with ADAGIO.
|
|
11
|
+
* @returns {Window} window.top or window.self object
|
|
12
|
+
*/
|
|
13
|
+
export function getBestWindowForAdagio() {
|
|
14
|
+
return (canAccessWindowTop()) ? getWindowTop() : getWindowSelf();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Returns the window.ADAGIO global object used to store Adagio data.
|
|
19
|
+
* This object is created in window.top if possible, otherwise in window.self.
|
|
20
|
+
*/
|
|
21
|
+
export const _ADAGIO = (function() {
|
|
22
|
+
const w = getBestWindowForAdagio();
|
|
23
|
+
|
|
24
|
+
w.ADAGIO = w.ADAGIO || {};
|
|
25
|
+
w.ADAGIO.pageviewId = w.ADAGIO.pageviewId || generateUUID();
|
|
26
|
+
w.ADAGIO.adUnits = w.ADAGIO.adUnits || {};
|
|
27
|
+
w.ADAGIO.pbjsAdUnits = w.ADAGIO.pbjsAdUnits || [];
|
|
28
|
+
w.ADAGIO.queue = w.ADAGIO.queue || [];
|
|
29
|
+
w.ADAGIO.versions = w.ADAGIO.versions || {};
|
|
30
|
+
w.ADAGIO.versions.pbjs = '$prebid.version$';
|
|
31
|
+
w.ADAGIO.windows = w.ADAGIO.windows || [];
|
|
32
|
+
w.ADAGIO.isSafeFrameWindow = isSafeFrameWindow();
|
|
33
|
+
|
|
34
|
+
return w.ADAGIO;
|
|
35
|
+
})();
|
|
@@ -22,6 +22,12 @@ const autoplayVideoUrl =
|
|
|
22
22
|
'data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAADxtZGF0AAAAMGWIhAAV//73ye/Apuvb3rW/k89I/Cy3PsIqP39atohOSV14BYa1heKCYgALQC5K4QAAAwZtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAD6AABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACMHRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAD6AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAoAAAAFoAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAA+gAAAAAAAEAAAAAAahtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAAEAAAABAAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAFTbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAABE3N0YmwAAACvc3RzZAAAAAAAAAABAAAAn2F2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAoABaAEgAAABIAAAAAAAAAAEVTGF2YzYwLjMxLjEwMiBsaWJ4MjY0AAAAAAAAAAAAAAAY//8AAAA1YXZjQwFkAAr/4QAYZ2QACqzZQo35IQAAAwABAAADAAIPEiWWAQAGaOvjyyLA/fj4AAAAABRidHJ0AAAAAAAAAaAAAAGgAAAAGHN0dHMAAAAAAAAAAQAAAAEAAEAAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAABRzdHN6AAAAAAAAADQAAAABAAAAFHN0Y28AAAAAAAAAAQAAADAAAABidWR0YQAAAFptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAAAAAAAAAAAAAAAC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjYwLjE2LjEwMA==';
|
|
23
23
|
|
|
24
24
|
function startDetection() {
|
|
25
|
+
const version = navigator.userAgent.match(/iPhone OS (\d+)_(\d+)/)
|
|
26
|
+
if (version !== null && parseInt(version[1]) < 17 && !navigator.userAgent.includes('Safari')) {
|
|
27
|
+
// skip autodetection on iOS 16 WebView
|
|
28
|
+
return
|
|
29
|
+
}
|
|
30
|
+
|
|
25
31
|
// we create an HTMLVideoElement muted and not displayed in which we try to play a one frame video
|
|
26
32
|
const videoElement = document.createElement('video');
|
|
27
33
|
videoElement.src = autoplayVideoUrl;
|
|
@@ -32,7 +38,8 @@ function startDetection() {
|
|
|
32
38
|
.play()
|
|
33
39
|
.then(() => {
|
|
34
40
|
autoplayEnabled = true;
|
|
35
|
-
|
|
41
|
+
// if the video is played on a WebView with playsinline = false, this stops the video, to prevent it from being displayed fullscreen
|
|
42
|
+
videoElement.src = '';
|
|
36
43
|
})
|
|
37
44
|
.catch(() => {
|
|
38
45
|
autoplayEnabled = false;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import {timedAuctionHook} from '../../src/utils/perfMetrics.js';
|
|
2
|
+
import {logError, logInfo, logWarn} from '../../src/utils.js';
|
|
3
|
+
|
|
4
|
+
export function consentManagementHook(name, getConsent, loadConsentData) {
|
|
5
|
+
function loadIfMissing(cb) {
|
|
6
|
+
if (getConsent()) {
|
|
7
|
+
logInfo('User consent information already known. Pulling internally stored information...');
|
|
8
|
+
// eslint-disable-next-line standard/no-callback-literal
|
|
9
|
+
cb(false);
|
|
10
|
+
} else {
|
|
11
|
+
loadConsentData(cb);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return timedAuctionHook(name, function requestBidsHook(fn, reqBidsConfigObj) {
|
|
16
|
+
loadIfMissing(function (shouldCancelAuction, errMsg, ...extraArgs) {
|
|
17
|
+
if (errMsg) {
|
|
18
|
+
let log = logWarn;
|
|
19
|
+
if (shouldCancelAuction) {
|
|
20
|
+
log = logError;
|
|
21
|
+
errMsg = `${errMsg} Canceling auction as per consentManagement config.`;
|
|
22
|
+
}
|
|
23
|
+
log(errMsg, ...extraArgs);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (shouldCancelAuction) {
|
|
27
|
+
fn.stopTiming();
|
|
28
|
+
if (typeof reqBidsConfigObj.bidsBackHandler === 'function') {
|
|
29
|
+
reqBidsConfigObj.bidsBackHandler();
|
|
30
|
+
} else {
|
|
31
|
+
logError('Error executing bidsBackHandler');
|
|
32
|
+
}
|
|
33
|
+
} else {
|
|
34
|
+
fn.call(this, reqBidsConfigObj);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
}
|
|
@@ -117,7 +117,7 @@ export function ortbConverter({
|
|
|
117
117
|
throw new Error('ortbRequest passed to `fromORTB` must be the same object returned by `toORTB`')
|
|
118
118
|
}
|
|
119
119
|
function augmentContext(ctx, extraParams = {}) {
|
|
120
|
-
return Object.assign(ctx, {ortbRequest: request}, extraParams
|
|
120
|
+
return Object.assign(ctx, {ortbRequest: request}, extraParams);
|
|
121
121
|
}
|
|
122
122
|
const impsById = Object.fromEntries((request.imp || []).map(imp => [imp.id, imp]));
|
|
123
123
|
const bidResponses = (response.seatbid || []).flatMap(seatbid =>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const adUrls = {
|
|
2
|
+
US_EAST: 'https://n1.smartyads.com/?c=o&m=prebid&secret_key=prebid_js',
|
|
3
|
+
EU: 'https://n2.smartyads.com/?c=o&m=prebid&secret_key=prebid_js',
|
|
4
|
+
SGP: 'https://n6.smartyads.com/?c=o&m=prebid&secret_key=prebid_js'
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export function getAdUrlByRegion(bid) {
|
|
8
|
+
let adUrl;
|
|
9
|
+
|
|
10
|
+
if (bid.params.region && adUrls[bid.params.region]) {
|
|
11
|
+
adUrl = adUrls[bid.params.region];
|
|
12
|
+
} else {
|
|
13
|
+
try {
|
|
14
|
+
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
15
|
+
const region = timezone.split('/')[0];
|
|
16
|
+
|
|
17
|
+
switch (region) {
|
|
18
|
+
case 'Europe':
|
|
19
|
+
adUrl = adUrls['EU'];
|
|
20
|
+
break;
|
|
21
|
+
case 'Asia':
|
|
22
|
+
adUrl = adUrls['SGP'];
|
|
23
|
+
break;
|
|
24
|
+
default: adUrl = adUrls['US_EAST'];
|
|
25
|
+
}
|
|
26
|
+
} catch (err) {
|
|
27
|
+
adUrl = adUrls['US_EAST'];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return adUrl;
|
|
32
|
+
};
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { BANNER, NATIVE, VIDEO } from '../../src/mediaTypes.js';
|
|
2
|
+
import { deepAccess } from '../../src/utils.js';
|
|
3
|
+
import { config } from '../../src/config.js';
|
|
4
|
+
|
|
5
|
+
const PROTOCOL_PATTERN = /^[a-z0-9.+-]+:/i;
|
|
6
|
+
|
|
7
|
+
const isBidResponseValid = (bid) => {
|
|
8
|
+
if (!bid.requestId || !bid.cpm || !bid.creativeId || !bid.ttl || !bid.currency) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
switch (bid.mediaType) {
|
|
13
|
+
case BANNER:
|
|
14
|
+
return Boolean(bid.width && bid.height && bid.ad);
|
|
15
|
+
case VIDEO:
|
|
16
|
+
return Boolean(bid.vastUrl || bid.vastXml);
|
|
17
|
+
case NATIVE:
|
|
18
|
+
return Boolean(bid.native && bid.native.impressionTrackers && bid.native.impressionTrackers.length);
|
|
19
|
+
default:
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const getBidFloor = (bid) => {
|
|
25
|
+
try {
|
|
26
|
+
const bidFloor = bid.getFloor({
|
|
27
|
+
currency: 'USD',
|
|
28
|
+
mediaType: '*',
|
|
29
|
+
size: '*',
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
return bidFloor.floor;
|
|
33
|
+
} catch (err) {
|
|
34
|
+
return 0;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const createBasePlacement = (bid) => {
|
|
39
|
+
const { bidId, mediaTypes, transactionId, userIdAsEids } = bid;
|
|
40
|
+
const schain = bid.schain || {};
|
|
41
|
+
const bidfloor = getBidFloor(bid);
|
|
42
|
+
|
|
43
|
+
const placement = {
|
|
44
|
+
bidId,
|
|
45
|
+
schain,
|
|
46
|
+
bidfloor
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
if (mediaTypes && mediaTypes[BANNER]) {
|
|
50
|
+
placement.adFormat = BANNER;
|
|
51
|
+
placement.sizes = mediaTypes[BANNER].sizes;
|
|
52
|
+
} else if (mediaTypes && mediaTypes[VIDEO]) {
|
|
53
|
+
placement.adFormat = VIDEO;
|
|
54
|
+
placement.playerSize = mediaTypes[VIDEO].playerSize;
|
|
55
|
+
placement.minduration = mediaTypes[VIDEO].minduration;
|
|
56
|
+
placement.maxduration = mediaTypes[VIDEO].maxduration;
|
|
57
|
+
placement.mimes = mediaTypes[VIDEO].mimes;
|
|
58
|
+
placement.protocols = mediaTypes[VIDEO].protocols;
|
|
59
|
+
placement.startdelay = mediaTypes[VIDEO].startdelay;
|
|
60
|
+
placement.placement = mediaTypes[VIDEO].placement;
|
|
61
|
+
placement.plcmt = mediaTypes[VIDEO].plcmt;
|
|
62
|
+
placement.skip = mediaTypes[VIDEO].skip;
|
|
63
|
+
placement.skipafter = mediaTypes[VIDEO].skipafter;
|
|
64
|
+
placement.minbitrate = mediaTypes[VIDEO].minbitrate;
|
|
65
|
+
placement.maxbitrate = mediaTypes[VIDEO].maxbitrate;
|
|
66
|
+
placement.delivery = mediaTypes[VIDEO].delivery;
|
|
67
|
+
placement.playbackmethod = mediaTypes[VIDEO].playbackmethod;
|
|
68
|
+
placement.api = mediaTypes[VIDEO].api;
|
|
69
|
+
placement.linearity = mediaTypes[VIDEO].linearity;
|
|
70
|
+
} else if (mediaTypes && mediaTypes[NATIVE]) {
|
|
71
|
+
placement.native = mediaTypes[NATIVE];
|
|
72
|
+
placement.adFormat = NATIVE;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (transactionId) {
|
|
76
|
+
placement.ext = placement.ext || {};
|
|
77
|
+
placement.ext.tid = transactionId;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (userIdAsEids && userIdAsEids.length) {
|
|
81
|
+
placement.eids = userIdAsEids;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return placement;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const defaultPlacementType = (bid, bidderRequest, placement) => {
|
|
88
|
+
const { placementId, endpointId } = bid.params;
|
|
89
|
+
|
|
90
|
+
if (placementId) {
|
|
91
|
+
placement.placementId = placementId;
|
|
92
|
+
placement.type = 'publisher';
|
|
93
|
+
} else if (endpointId) {
|
|
94
|
+
placement.endpointId = endpointId;
|
|
95
|
+
placement.type = 'network';
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const checkIfObjectHasKey = (keys, obj, mode = 'some') => {
|
|
100
|
+
for (let i = 0; i < keys.length; i++) {
|
|
101
|
+
const key = keys[i];
|
|
102
|
+
const val = obj[key];
|
|
103
|
+
|
|
104
|
+
if (mode === 'some' && val) return true;
|
|
105
|
+
if (!val) return false;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return mode === 'every';
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export const isBidRequestValid = (keys = ['placementId', 'endpointId'], mode) => (bid = {}) => {
|
|
112
|
+
const { params, bidId, mediaTypes } = bid;
|
|
113
|
+
let valid = Boolean(bidId && params && checkIfObjectHasKey(keys, params, mode));
|
|
114
|
+
|
|
115
|
+
if (mediaTypes && mediaTypes[BANNER]) {
|
|
116
|
+
valid = valid && Boolean(mediaTypes[BANNER] && mediaTypes[BANNER].sizes);
|
|
117
|
+
} else if (mediaTypes && mediaTypes[VIDEO]) {
|
|
118
|
+
valid = valid && Boolean(mediaTypes[VIDEO] && mediaTypes[VIDEO].playerSize);
|
|
119
|
+
} else if (mediaTypes && mediaTypes[NATIVE]) {
|
|
120
|
+
valid = valid && Boolean(mediaTypes[NATIVE]);
|
|
121
|
+
} else {
|
|
122
|
+
valid = false;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return valid;
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* @param {{ adUrl, validBidRequests, bidderRequest, placementProcessingFunction }} config
|
|
130
|
+
* @returns {function}
|
|
131
|
+
*/
|
|
132
|
+
export const buildRequestsBase = (config) => {
|
|
133
|
+
const { adUrl, validBidRequests, bidderRequest } = config;
|
|
134
|
+
const placementProcessingFunction = config.placementProcessingFunction || buildPlacementProcessingFunction();
|
|
135
|
+
const device = deepAccess(bidderRequest, 'ortb2.device');
|
|
136
|
+
const page = deepAccess(bidderRequest, 'refererInfo.page', '');
|
|
137
|
+
|
|
138
|
+
const proto = PROTOCOL_PATTERN.exec(page);
|
|
139
|
+
const protocol = proto?.[0];
|
|
140
|
+
|
|
141
|
+
const placements = [];
|
|
142
|
+
const request = {
|
|
143
|
+
deviceWidth: device?.w || 0,
|
|
144
|
+
deviceHeight: device?.h || 0,
|
|
145
|
+
language: device?.language?.split('-')[0] || '',
|
|
146
|
+
secure: protocol === 'https:' ? 1 : 0,
|
|
147
|
+
host: deepAccess(bidderRequest, 'refererInfo.domain', ''),
|
|
148
|
+
page,
|
|
149
|
+
placements,
|
|
150
|
+
coppa: deepAccess(bidderRequest, 'ortb2.regs.coppa') ? 1 : 0,
|
|
151
|
+
tmax: bidderRequest.timeout
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
if (bidderRequest.uspConsent) {
|
|
155
|
+
request.ccpa = bidderRequest.uspConsent;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (bidderRequest.gdprConsent) {
|
|
159
|
+
request.gdpr = {
|
|
160
|
+
consentString: bidderRequest.gdprConsent.consentString
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (bidderRequest.gppConsent) {
|
|
165
|
+
request.gpp = bidderRequest.gppConsent.gppString;
|
|
166
|
+
request.gpp_sid = bidderRequest.gppConsent.applicableSections;
|
|
167
|
+
} else if (bidderRequest.ortb2?.regs?.gpp) {
|
|
168
|
+
request.gpp = bidderRequest.ortb2.regs.gpp;
|
|
169
|
+
request.gpp_sid = bidderRequest.ortb2.regs.gpp_sid;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
const len = validBidRequests.length;
|
|
173
|
+
for (let i = 0; i < len; i++) {
|
|
174
|
+
const bid = validBidRequests[i];
|
|
175
|
+
placements.push(placementProcessingFunction(bid, bidderRequest));
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return {
|
|
179
|
+
method: 'POST',
|
|
180
|
+
url: adUrl,
|
|
181
|
+
data: request
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
export const buildRequests = (adUrl) => (validBidRequests = [], bidderRequest = {}) => {
|
|
186
|
+
const placementProcessingFunction = buildPlacementProcessingFunction();
|
|
187
|
+
|
|
188
|
+
return buildRequestsBase({ adUrl, validBidRequests, bidderRequest, placementProcessingFunction });
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
export const interpretResponse = (serverResponse) => {
|
|
192
|
+
let response = [];
|
|
193
|
+
for (let i = 0; i < serverResponse.body.length; i++) {
|
|
194
|
+
let resItem = serverResponse.body[i];
|
|
195
|
+
if (isBidResponseValid(resItem)) {
|
|
196
|
+
const advertiserDomains = resItem.adomain && resItem.adomain.length ? resItem.adomain : [];
|
|
197
|
+
resItem.meta = { ...resItem.meta, advertiserDomains };
|
|
198
|
+
|
|
199
|
+
response.push(resItem);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
return response;
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
export const getUserSyncs = (syncUrl) => (syncOptions, serverResponses, gdprConsent, uspConsent, gppConsent) => {
|
|
207
|
+
const type = syncOptions.iframeEnabled ? 'iframe' : 'image';
|
|
208
|
+
let url = syncUrl + `/${type}?pbjs=1`;
|
|
209
|
+
|
|
210
|
+
if (gdprConsent && gdprConsent.consentString) {
|
|
211
|
+
if (typeof gdprConsent.gdprApplies === 'boolean') {
|
|
212
|
+
url += `&gdpr=${Number(gdprConsent.gdprApplies)}&gdpr_consent=${gdprConsent.consentString}`;
|
|
213
|
+
} else {
|
|
214
|
+
url += `&gdpr=0&gdpr_consent=${gdprConsent.consentString}`;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
if (uspConsent && uspConsent.consentString) {
|
|
219
|
+
url += `&ccpa_consent=${uspConsent.consentString}`;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
if (gppConsent?.gppString && gppConsent?.applicableSections?.length) {
|
|
223
|
+
url += '&gpp=' + gppConsent.gppString;
|
|
224
|
+
url += '&gpp_sid=' + gppConsent.applicableSections.join(',');
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
const coppa = config.getConfig('coppa') ? 1 : 0;
|
|
228
|
+
url += `&coppa=${coppa}`;
|
|
229
|
+
|
|
230
|
+
return [{
|
|
231
|
+
type,
|
|
232
|
+
url
|
|
233
|
+
}];
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
*
|
|
238
|
+
* @param {{ addPlacementType?: function, addCustomFieldsToPlacement?: function }} [config]
|
|
239
|
+
* @returns {function(object, object): object}
|
|
240
|
+
*/
|
|
241
|
+
export const buildPlacementProcessingFunction = (config) => (bid, bidderRequest) => {
|
|
242
|
+
const addPlacementType = config?.addPlacementType ?? defaultPlacementType;
|
|
243
|
+
|
|
244
|
+
const placement = createBasePlacement(bid);
|
|
245
|
+
|
|
246
|
+
addPlacementType(bid, bidderRequest, placement);
|
|
247
|
+
|
|
248
|
+
if (config?.addCustomFieldsToPlacement) {
|
|
249
|
+
config.addCustomFieldsToPlacement(bid, bidderRequest, placement);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
return placement;
|
|
253
|
+
};
|