prebid.js 9.4.1 → 9.6.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/.eslintrc.js +31 -5
- package/.github/workflows/jscpd.yml +2 -2
- package/.github/workflows/linter.yml +107 -0
- package/creative/crossDomain.js +6 -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/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adagioRtdProvider.js +1 -1
- package/dist/adagioUtils.js +1 -1
- package/dist/addefendBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelAdnBidAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/adkernelUtils.js +1 -0
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/admixerBidAdapter.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/advRedAnalyticsAdapter.js +1 -0
- 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/aidemBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/akamaiDapRtdProvider.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/anonymisedRtdProvider.js +1 -1
- package/dist/apacdexBidAdapter.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/azerionedgeRtdProvider.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.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/concertBidAdapter.js +1 -1
- package/dist/connatixBidAdapter.js +1 -1
- package/dist/connectIdSystem.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/contxtfulRtdProvider.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/currencyUtils.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dailymotionBidAdapter.js +1 -1
- package/dist/debugging-standalone.js +1 -1
- package/dist/dependencies.json +69 -8
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/dfpAdpod.js +1 -1
- package/dist/dfpUtils.js +1 -1
- package/dist/discoveryBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/eightPodAnalyticsAdapter.js +1 -1
- package/dist/eightPodBidAdapter.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/fintezaAnalyticsAdapter.js +1 -1
- package/dist/fpdUtils.js +1 -0
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gptPreAuction.js +1 -1
- package/dist/gptUtils.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/growthCodeAnalyticsAdapter.js +1 -1
- package/dist/growthCodeRtdProvider.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/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqAnalyticsAdapter.js +1 -0
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/jwplayerBidAdapter.js +1 -1
- package/dist/jwplayerRtdProvider.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/kimberliteBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.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/luceadBidAdapter.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/mediafuseBidAdapter.js +1 -1
- package/dist/mediagoBidAdapter.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/minutemediaBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/mobianRtdProvider.js +1 -1
- package/dist/nextMillenniumBidAdapter.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 +208 -199
- 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/optoutBidAdapter.js +1 -1
- package/dist/orbidderBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/paapi.js +1 -1
- package/dist/permutiveRtdProvider.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/playdigoBidAdapter.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/programmaticaBidAdapter.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/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/relevatehealthBidAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/ringieraxelspringerBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/riseUtils.js +1 -0
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/schainSerializer.js +1 -0
- 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/sizeMapping.js +1 -1
- package/dist/sizeUtils.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smarthubBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.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/symitriDapRtdProvider.js +1 -0
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/targetVideoUtils.js +1 -0
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/telariaBidAdapter.js +1 -1
- package/dist/teqblazeUtils.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/themoneytizerBidAdapter.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 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/unrulyBidAdapter.js +1 -1
- package/dist/userAgentUtils.js +1 -0
- package/dist/utiqIdSystem.js +1 -1
- package/dist/vidazooUtils.js +1 -1
- package/dist/videobyteBidAdapter.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/yandexIdSystem.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/integrationExamples/gpt/x-domain/creative.html +1 -1
- package/libraries/adkernelUtils/adkernelUtils.js +11 -0
- package/libraries/currencyUtils/floor.js +23 -0
- package/libraries/dfpUtils/dfpUtils.js +7 -0
- package/libraries/fpdUtils/deviceInfo.js +58 -0
- package/libraries/fpdUtils/pageInfo.js +73 -0
- package/libraries/gptUtils/gptUtils.js +23 -1
- package/libraries/riseUtils/index.js +330 -0
- package/libraries/schainSerializer/schainSerializer.js +24 -0
- package/libraries/sizeUtils/tranformSize.js +43 -0
- package/libraries/targetVideoUtils/bidderUtils.js +178 -0
- package/libraries/targetVideoUtils/constants.js +23 -0
- package/libraries/teqblazeUtils/bidderUtils.js +15 -11
- package/libraries/userAgentUtils/index.js +58 -0
- package/libraries/userAgentUtils/userAgentTypes.enums.js +22 -0
- package/modules/.submodules.json +1 -0
- package/modules/33acrossAnalyticsAdapter.js +2 -0
- package/modules/adagioAnalyticsAdapter.js +101 -84
- package/modules/adagioAnalyticsAdapter.md +4 -0
- package/modules/adagioBidAdapter.js +5 -17
- package/modules/adagioRtdProvider.js +18 -4
- package/modules/adkernelAdnBidAdapter.js +1 -12
- package/modules/adkernelBidAdapter.js +4 -13
- package/modules/adlooxAnalyticsAdapter.js +1 -0
- package/modules/admixerBidAdapter.js +10 -6
- package/modules/admixerBidAdapter.md +7 -10
- package/modules/adtrgtmeBidAdapter.js +1 -1
- package/modules/advRedAnalyticsAdapter.js +198 -0
- package/modules/advRedAnalyticsAdapter.md +30 -0
- package/modules/aidemBidAdapter.js +2 -0
- package/modules/akamaiDapRtdProvider.js +19 -798
- package/modules/anonymisedRtdProvider.js +5 -1
- package/modules/anonymisedRtdProvider.md +1 -1
- package/modules/apacdexBidAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +56 -2
- package/modules/automatadAnalyticsAdapter.js +2 -0
- package/modules/azerionedgeRtdProvider.js +13 -3
- package/modules/azerionedgeRtdProvider.md +0 -17
- package/modules/bridBidAdapter.js +47 -47
- package/modules/cleanioRtdProvider.js +1 -0
- package/modules/concertBidAdapter.js +1 -1
- package/modules/connatixBidAdapter.js +36 -8
- package/modules/connectIdSystem.js +6 -2
- package/modules/contxtfulRtdProvider.js +20 -2
- package/modules/contxtfulRtdProvider.md +1 -0
- package/modules/craftBidAdapter.js +1 -1
- package/modules/criteoBidAdapter.js +1 -1
- package/modules/cwireBidAdapter.js +5 -1
- package/modules/dailymotionBidAdapter.js +85 -65
- package/modules/debugging/debugging.js +3 -0
- package/modules/dfpAdServerVideo.js +15 -33
- package/modules/dfpAdpod.js +2 -6
- package/modules/dgkeywordRtdProvider.js +2 -0
- package/modules/discoveryBidAdapter.js +26 -210
- package/modules/dspxBidAdapter.js +176 -54
- package/modules/eightPodAnalyticsAdapter.js +28 -34
- package/modules/eightPodBidAdapter.js +113 -57
- package/modules/fintezaAnalyticsAdapter.js +9 -4
- package/modules/goldbachBidAdapter.js +1 -1
- package/modules/gptPreAuction.js +63 -4
- package/modules/growthCodeAnalyticsAdapter.js +1 -1
- package/modules/growthCodeRtdProvider.js +1 -1
- package/modules/gumgumBidAdapter.js +14 -10
- package/modules/improvedigitalBidAdapter.js +1 -1
- package/modules/insticatorBidAdapter.js +35 -31
- package/modules/intentIqAnalyticsAdapter.js +234 -0
- package/modules/intentIqAnalyticsAdapter.md +27 -0
- package/modules/intentIqIdSystem.md +0 -0
- package/modules/jwplayerBidAdapter.js +1 -1
- package/modules/jwplayerRtdProvider.js +26 -6
- package/modules/jwplayerVideoProvider.js +6 -0
- package/modules/kargoBidAdapter.js +11 -14
- package/modules/kimberliteBidAdapter.js +24 -7
- package/modules/kimberliteBidAdapter.md +30 -1
- package/modules/mediafuseBidAdapter.js +1 -1
- package/modules/mediagoBidAdapter.js +7 -176
- package/modules/medianetBidAdapter.js +101 -40
- package/modules/mgidBidAdapter.js +3 -1
- package/modules/minutemediaBidAdapter.js +21 -398
- package/modules/mobianRtdProvider.js +16 -2
- package/modules/nextMillenniumBidAdapter.js +1 -27
- package/modules/nexx360BidAdapter.js +3 -2
- package/modules/nobidBidAdapter.js +1 -1
- package/modules/openwebBidAdapter.js +18 -396
- package/modules/optoutBidAdapter.js +1 -1
- package/modules/paapi.js +48 -35
- package/modules/permutiveRtdProvider.js +72 -22
- package/modules/playdigoBidAdapter.js +4 -2
- package/modules/prebidServerBidAdapter/index.js +4 -2
- package/modules/prebidServerBidAdapter/ortbConverter.js +1 -0
- package/modules/programmaticaBidAdapter.js +1 -1
- package/modules/publirBidAdapter.js +20 -273
- package/modules/pubmaticBidAdapter.js +12 -0
- package/modules/pubxaiAnalyticsAdapter.js +306 -164
- package/modules/relevatehealthBidAdapter.js +2 -1
- package/modules/resetdigitalBidAdapter.md +54 -45
- package/modules/richaudienceBidAdapter.js +1 -1
- package/modules/riseBidAdapter.js +19 -400
- package/modules/rtdModule/index.js +5 -3
- package/modules/shinezBidAdapter.js +17 -361
- package/modules/sirdataRtdProvider.js +2 -0
- package/modules/sizeMapping.js +2 -5
- package/modules/smaatoBidAdapter.js +18 -1
- package/modules/smarthubBidAdapter.js +45 -177
- package/modules/smilewantedBidAdapter.js +26 -22
- package/modules/snigelBidAdapter.js +1 -1
- package/modules/sonobiBidAdapter.js +5 -10
- package/modules/stnBidAdapter.js +22 -398
- package/modules/symitriDapRtdProvider.js +812 -0
- package/modules/symitriDapRtdProvider.md +49 -0
- package/modules/targetVideoBidAdapter.js +120 -152
- package/modules/targetVideoBidAdapter.md +20 -3
- package/modules/telariaBidAdapter.js +2 -32
- package/modules/uid2IdSystem_shared.js +51 -39
- package/modules/userId/eids.js +3 -0
- package/modules/utiqIdSystem.js +12 -10
- package/modules/validationFpdModule/index.js +22 -17
- package/modules/videojsVideoProvider.js +3 -0
- package/modules/visxBidAdapter.js +1 -1
- package/modules/winrBidAdapter.js +2 -27
- package/modules/yahooAdsBidAdapter.js +1 -1
- package/modules/yandexIdSystem.js +1 -1
- package/package.json +4 -4
- package/plugins/eslint/index.js +73 -45
- package/src/adloader.js +1 -0
- package/src/ajax.js +15 -0
- package/src/config.js +0 -4
- package/src/debugging.js +1 -0
- package/src/prebid.js +4 -0
- package/src/secureCreatives.js +1 -1
- package/src/storageManager.js +62 -73
- package/src/targeting.js +26 -20
- package/src/utils.js +9 -0
- package/test/pages/consent_mgt_gdpr.html +1 -1
- package/test/spec/ajax_spec.js +11 -0
- package/test/spec/creative/crossDomainCreative_spec.js +26 -9
- package/test/spec/fpd/gdpr_spec.js +1 -1
- package/test/spec/libraries/userAgentUtils_spec.js +109 -0
- package/test/spec/modules/adagioAnalyticsAdapter_spec.js +231 -141
- package/test/spec/modules/adagioBidAdapter_spec.js +32 -66
- package/test/spec/modules/adagioRtdProvider_spec.js +72 -0
- package/test/spec/modules/admixerBidAdapter_spec.js +21 -17
- package/test/spec/modules/advRedAnalyticsAdapter_spec.js +114 -0
- package/test/spec/modules/adxcgBidAdapter_spec.js +1 -1
- package/test/spec/modules/appnexusBidAdapter_spec.js +36 -0
- package/test/spec/modules/azerionedgeRtdProvider_spec.js +36 -21
- package/test/spec/modules/connatixBidAdapter_spec.js +55 -2
- package/test/spec/modules/connectIdSystem_spec.js +27 -28
- package/test/spec/modules/consentManagement_spec.js +1 -1
- package/test/spec/modules/contxtfulRtdProvider_spec.js +6 -0
- package/test/spec/modules/dailymotionBidAdapter_spec.js +497 -4
- package/test/spec/modules/discoveryBidAdapter_spec.js +9 -6
- package/test/spec/modules/dspxBidAdapter_spec.js +188 -7
- package/test/spec/modules/eightPodAnalyticsAdapter_spec.js +22 -13
- package/test/spec/modules/gptPreAuction_spec.js +143 -1
- package/test/spec/modules/gumgumBidAdapter_spec.js +17 -0
- package/test/spec/modules/insticatorBidAdapter_spec.js +8 -1
- package/test/spec/modules/intentIqAnalyticsAdapter_spec.js +172 -0
- package/test/spec/modules/jwplayerRtdProvider_spec.js +61 -0
- package/test/spec/modules/kargoBidAdapter_spec.js +7 -8
- package/test/spec/modules/kimberliteBidAdapter_spec.js +137 -65
- package/test/spec/modules/mediagoBidAdapter_spec.js +34 -37
- package/test/spec/modules/medianetBidAdapter_spec.js +297 -16
- package/test/spec/modules/mgidBidAdapter_spec.js +15 -5
- package/test/spec/modules/mobianRtdProvider_spec.js +1 -3
- package/test/spec/modules/nexx360BidAdapter_spec.js +1 -1
- package/test/spec/modules/paapi_spec.js +177 -111
- package/test/spec/modules/permutiveRtdProvider_spec.js +42 -8
- package/test/spec/modules/prebidServerBidAdapter_spec.js +17 -3
- package/test/spec/modules/proxistoreBidAdapter_spec.js +1 -1
- package/test/spec/modules/pubmaticBidAdapter_spec.js +40 -0
- package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +970 -603
- package/test/spec/modules/pulsepointBidAdapter_spec.js +4 -4
- package/test/spec/modules/smaatoBidAdapter_spec.js +36 -1
- package/test/spec/modules/smarthubBidAdapter_spec.js +6 -4
- package/test/spec/modules/smilewantedBidAdapter_spec.js +57 -1
- package/test/spec/modules/symitriDapRtdProvider_spec.js +600 -0
- package/test/spec/modules/targetVideoBidAdapter_spec.js +112 -11
- package/test/spec/modules/yandexIdSystem_spec.js +6 -1
- package/test/spec/schainSerializer/schainSerializer_spec.js +138 -0
- package/test/spec/unit/core/storageManager_spec.js +68 -51
- package/test/spec/unit/pbjs_api_spec.js +11 -0
- package/test/spec/utils_spec.js +19 -0
- /package/src/utils/{gpdr.js → gdpr.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[19916],{10320:(e,t,a)=>{a.d(t,{wr:()=>p});var n=a(7873),r=a(68044),o=a(12938),i=a(16833),s=a(91069),d=a(41580),l=a(45569);function p(e,t,a){const n=e,p=t,c="async_dap_token",u="async_dap_membership",m="encrypted_dap_membership",g="dap_ss_id",f=3600,y="dap_client_entropy",E=(0,o.vM)({moduleType:l.zu,moduleName:n});let h=0;function D(e,t){var a,n;(0,s.logInfo)("DEBUG(addRealTimeData) - ENTER"),(0,s.isPlainObject)(t.ortb2)&&((0,s.logMessage)("DEBUG(addRealTimeData): merging original: ",e),(0,s.logMessage)("DEBUG(addRealTimeData): merging in: ",t.ortb2),a=e,n=t.ortb2,(0,s.isPlainObject)(a)||(a={}),(0,s.isPlainObject)(n)||(n={}),(0,s.mergeDeep)(a,n)),(0,s.logInfo)("DEBUG(addRealTimeData) - EXIT")}function b(e,t,a,n){let r=JSON.parse(E.getDataFromLocalStorage(y));new Promise(((e,t)=>{a&&a.params&&a.params.dapEntropyTimeout&&Number.isInteger(a.params.dapEntropyTimeout)&&setTimeout(t,a.params.dapEntropyTimeout,Error("DapEntropy script could not be loaded")),r&&r.expires_at>Math.round(Date.now()/1e3)?((0,s.logMessage)("Using cached entropy"),e()):"function"==typeof window.dapCalculateEntropy?window.dapCalculateEntropy(e,t):a&&a.params&&T.isValidHttpsUrl(a.params.dapEntropyUrl)?(0,d.R)(a.params.dapEntropyUrl,p,(()=>{T.dapGetEntropy(e,t)})):t(Error("Please check if dapEntropyUrl is specified and is valid under config.params"))})).catch((e=>{(0,s.logError)("Entropy could not be calculated due to: ",e.message)})).finally((()=>{_(e,t,a,n)}))}function _(e,t,a,n){(0,s.logInfo)("DEBUG(generateRealTimeData) - ENTER"),(0,s.logMessage)(" - apiHostname: "+a.params.apiHostname),(0,s.logMessage)(" - apiVersion: "+a.params.apiVersion),h=0;var r=null;if(a&&(0,s.isPlainObject)(a.params))if(504==a.params.segtax){let e=T.dapGetEncryptedMembershipFromLocalStorage();e&&(r=T.dapGetEncryptedRtdObj(e,a.params.segtax))}else{let e=T.dapGetMembershipFromLocalStorage();e&&(r=T.dapGetRtdObj(e,a.params.segtax))}r&&r.rtd&&(D(e.ortb2Fragments?.global,r.rtd),t(),(0,s.logInfo)("DEBUG(generateRealTimeData) - 1")),setTimeout(T.callDapAPIs,0,e,t,a,n)}const R={name:n,getBidRequestData:b,init:function(e,t){return!1!==T.checkConsent(t)}};(0,i.bz)("realTimeData",R);const T={callDapAPIs:function(e,t,a,n){if(a&&(0,s.isPlainObject)(a.params)){let n={api_hostname:a.params.apiHostname,api_version:a.params.apiVersion,domain:a.params.domain,segtax:a.params.segtax,identity:{type:a.params.identityType}},r=!0,o=T.dapGetTokenFromLocalStorage();const i=e.ortb2Fragments.global;(0,s.logMessage)("token is: ",o),null!==o&&(504==n.segtax?(T.dapRefreshEncryptedMembership(i,n,o,t),r=!1):(T.dapRefreshMembership(i,n,o,t),r=!1)),T.dapRefreshToken(i,n,r,t)}},dapGetEntropy:function(e,t){"function"==typeof window.dapCalculateEntropy?window.dapCalculateEntropy(e,t):t(Error("window.dapCalculateEntropy function is not defined"))},dapGetTokenFromLocalStorage:function(e){let t=Math.round(Date.now()/1e3),a=null,n=JSON.parse(E.getDataFromLocalStorage(c));return n&&t<n.expires_at&&(a=n.token),a},dapRefreshToken:function(e,t,n,r){T.dapLog("Token missing or expired, fetching a new one...");let o=Math.round(Date.now()/1e3),i={},d={...t};T.dapTokenize(d,t.identity,r,(function(r,s,d,l){i.expires_at=o+f;let p=T.dapExtractExpiryFromToken(r);"number"==typeof p&&(i.expires_at=p-10),i.token=r,E.setDataInLocalStorage(c,JSON.stringify(i)),T.dapLog("Successfully updated and stored token; expires at "+i.expires_at);let u=d.getResponseHeader(a+"-DAP-SS-ID");u&&E.setDataInLocalStorage(g,JSON.stringify(u));let m=d.getResponseHeader(a+"-DAP-100");null!=m&&(E.setDataInLocalStorage("dap_deviceId100",m),T.dapLog("Successfully stored DAP 100 Device ID: "+m)),n&&(504==t.segtax?T.dapRefreshEncryptedMembership(e,t,r,l):T.dapRefreshMembership(e,t,r,l))}),(function(e,t,a,n){(0,s.logError)("ERROR("+a+"): failed to retrieve token! "+t),n()}))},dapGetMembershipFromLocalStorage:function(){let e=Math.round(Date.now()/1e3),t=null,a=JSON.parse(E.getDataFromLocalStorage(u));return a&&e<a.expires_at&&(t={said:a.said,cohorts:a.cohorts,attributes:null}),t},dapRefreshMembership:function(e,t,a,n){let r=Math.round(Date.now()/1e3),o={},i={...t};T.dapMembership(i,a,n,(function(a,n,i,s){o.expires_at=r+f;let d=T.dapExtractExpiryFromToken(a.said);"number"==typeof d&&(o.expires_at=d-10),o.said=a.said,o.cohorts=a.cohorts,E.setDataInLocalStorage(u,JSON.stringify(o)),T.dapLog("Successfully updated and stored membership:"),T.dapLog(o);let l=T.dapGetRtdObj(o,t.segtax);T.checkAndAddRealtimeData(e,l,t.segtax),s()}),(function(a,n,r,o){(0,s.logError)("ERROR("+r+"): failed to retrieve membership! "+n),403==n&&h<1?(h++,T.dapRefreshToken(e,t,!0,o)):o()}))},dapGetEncryptedMembershipFromLocalStorage:function(){let e=Math.round(Date.now()/1e3),t=null,a=JSON.parse(E.getDataFromLocalStorage(m));return a&&e<a.expires_at&&(t={encryptedSegments:a.encryptedSegments}),t},dapRefreshEncryptedMembership:function(e,t,a,n){let r=Math.round(Date.now()/1e3),o={},i={...t};T.dapEncryptedMembership(i,a,n,(function(a,n,i,s){o.expires_at=r+f;let d=T.dapExtractExpiryFromToken(a);"number"==typeof d&&(o.expires_at=d-10),o.encryptedSegments=a,E.setDataInLocalStorage(m,JSON.stringify(o)),T.dapLog("Successfully updated and stored encrypted membership:"),T.dapLog(o);let l=T.dapGetEncryptedRtdObj(o,t.segtax);T.checkAndAddRealtimeData(e,l,t.segtax),s()}),(function(a,n,r,o){(0,s.logError)("ERROR("+r+"): failed to retrieve encrypted membership! "+n),403==n&&h<1?(h++,T.dapRefreshToken(e,t,!0,o)):o()}))},dapExtractExpiryFromToken:function(e){let t=null;if(e){const a=e.split("..");if(a&&a.length>0){let e=atob(a[0]);t=JSON.parse(e.replace(/"/g,'"')).exp}}return t},dapGetRtdObj:function(e,t){let a={name:"dap.symitri.com",ext:{segtax:t},segment:[]};if(null!=e)for(const t of e.cohorts)a.segment.push({id:t});return{rtd:{ortb2:{user:{data:[a]},site:{ext:{data:{dapSAID:e.said}}}}}}},dapGetEncryptedRtdObj:function(e,t){let a={name:"dap.symitri.com",ext:{segtax:t},segment:[]};return null!=e&&a.segment.push({id:e.encryptedSegments}),{rtd:{ortb2:{user:{data:[a]}}}}},checkAndAddRealtimeData:function(e,t,a){t.rtd&&(504==a&&T.checkIfSegmentsAlreadyExist(e,t.rtd,504)?(0,s.logMessage)("DEBUG(handleInit): rtb Object already added"):D(e,t.rtd),(0,s.logInfo)("DEBUG(checkAndAddRealtimeData) - 1"))},checkIfSegmentsAlreadyExist:function(e,t,a){let n=!1;if(e.user&&e.user.data&&e.user.data.length>0)for(let t=0;t<e.user.data.length;t++){let r=e.user.data[t];if(r.ext&&r.ext.segtax==a){n=!0,(0,s.logMessage)("DEBUG(checkIfSegmentsAlreadyExist): rtb Object already added: ",e.user.data);break}}return n},dapLog:function(e){let t="";t+="display: inline-block;",t+="color: #fff;",t+="background: #F28B20;",t+="padding: 1px 4px;",t+="border-radius: 3px",(0,s.logInfo)("%cDAP Client","display: inline-block;color: #fff;background: #F28B20;padding: 1px 4px;border-radius: 3px",e)},isValidHttpsUrl:function(e){let t;try{t=new URL(e)}catch(e){return!1}return"https:"===t.protocol},checkConsent:function(e){let t=!0;if(e&&e.gdpr&&e.gdpr.gdprApplies){const a=e.gdpr,n=a&&"boolean"==typeof a.gdprApplies&&a.gdprApplies?1:0,r=n?a.consentString:"";!n||r&&""!==r||((0,s.logError)("symitriDapRtd submodule requires consent string to call API"),t=!1)}else if(e&&e.usp){const a=e.usp;t="N"!==a[1]&&"Y"!==a[2]}return t},dapValidationHelper:function(e,t,a,n){return null==n&&(n=function(e,t,a,n){}),null==e||void 0===e?(n(null,"Invalid config object","ClientError",t),[e,!0]):((!("api_version"in e)||"string"==typeof e.api_version&&0==e.api_version.length)&&(e.api_version="x1"),"string"!=typeof e.api_version?(n(null,"Invalid api_version: must be a string like 'x1', etc.","ClientError",t),[e,!0]):"api_hostname"in e&&"string"==typeof e.api_hostname&&0!=e.api_hostname.length?a&&"string"!=typeof a?(n(null,"Invalid token: must be a non-null string","ClientError",t),[e,!0]):[e,!1]:(n(null,"Invalid api_hostname: must be a non-empty string","ClientError",t),[e,!0]))},dapTokenize:function(e,t,n){let o,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;if([e,o]=this.dapValidationHelper(e,n,null,s),o)return;if("string"!=typeof e.domain)return void s(null,"Invalid config.domain: must be a string","ClientError",n);if(e.domain.length<=0)return void s(null,"Invalid config.domain: must have non-zero length","ClientError",n);if(null==t||void 0===t)return void s(null,"Invalid identity object","ClientError",n);if(!("type"in t)||"string"!=typeof t.type||t.type.length<=0)return void s(null,"Identity must contain a valid 'type' field","ClientError",n);let d={type:t.type};void 0!==t.identity&&(d.identity=t.identity),void 0!==t.attributes&&(d.attributes=t.attributes);let l,p,c,u=JSON.parse(E.getDataFromLocalStorage(y));switch(u&&u.entropy&&(d.entropy=u.entropy),e.api_version){case"x1":case"x1-dev":l="POST",c="/data-activation/"+e.api_version+"/domain/"+e.domain+"/identity/tokenize",p=JSON.stringify(d);break;default:return void s(null,"Invalid api_version: "+e.api_version,"ClientError",n)}let m={"Content-Type":"application/json"},f=JSON.parse(E.getDataFromLocalStorage(g));f&&(m[a+"-DAP-SS-ID"]=f);let h="https://"+e.api_hostname+c,D={success:(t,r)=>{let o=null;switch(e.api_version){case"x1":case"x1-dev":o=r.getResponseHeader(a+"-DAP-Token")}i(o,r.status,r,n)},error:(e,t)=>{s(e,e.statusText,t,n)}};(0,r.RD)(h,D,p,{method:l,customHeaders:m})},dapMembership:function(e,t,a){let n,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;if([e,n]=this.dapValidationHelper(e,a,t,i),n)return;if("string"!=typeof e.domain)return void i(null,"Invalid config.domain: must be a string","ClientError",a);let s="/data-activation/"+e.api_version+"/token/"+t+"/membership",d="https://"+e.api_hostname+s,l={success:(e,t)=>{o(JSON.parse(e),t.status,t,a)},error:(e,t)=>{i(t,t.status,e,a)}};(0,r.RD)(d,l,void 0,{method:"GET",customHeaders:{}})},dapEncryptedMembership:function(e,t,n){let o,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;if([e,o]=this.dapValidationHelper(e,n,t,s),o)return;let d={success:(e,t)=>{let r=t.getResponseHeader(a+"-DAP-Token");i(r,t.status,t,n)},error:(e,t)=>{s(t,t.status,e,n)}},l="/data-activation/"+e.api_version+"/token/"+t+"/membership/encrypt",p="https://"+e.api_hostname+l;(0,r.RD)(p,d,void 0,{method:"GET",customHeaders:{"Content-Type":"application/json",Pragma:"akamai-x-get-extracted-values"}})}};return{addRealTimeData:D,getRealTimeData:b,generateRealTimeData:_,rtdSubmodule:R,storage:E,dapUtils:T,DAP_TOKEN:c,DAP_MEMBERSHIP:u,DAP_ENCRYPTED_MEMBERSHIP:m,DAP_SS_ID:g,DAP_DEFAULT_TOKEN_TTL:f,DAP_MAX_RETRY_TOKENIZE:1,DAP_CLIENT_ENTROPY:y}}const{addRealTimeData:c,getRealTimeData:u,generateRealTimeData:m,rtdSubmodule:g,storage:f,dapUtils:y,DAP_TOKEN:E,DAP_MEMBERSHIP:h,DAP_ENCRYPTED_MEMBERSHIP:D,DAP_SS_ID:b,DAP_DEFAULT_TOKEN_TTL:_,DAP_MAX_RETRY_TOKENIZE:R,DAP_CLIENT_ENTROPY:T}=p("symitriDap","symitridap","Symitri");(0,n.E)("symitriDapRtdProvider")}},e=>{e.O(0,[60802,51085],(()=>{return t=10320,e(e.s=t);var t}));e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[99097],{45011:(e,r,t)=>{var o=t(7873),i=t(57377),n=t(71371),a=t(43272),s=t(91069),d=t(63172),u=t(70433),g=t(12938),p=t(68044),l=t(89766);const c="taboola",b="USD",f="user-id",m=`taboola global:${f}`,y="https://beacon.bidder.taboola.com",h={storageManager:(0,g.vM)({bidderCode:c}),getUserId:()=>{const{getFromLocalStorage:e,getFromCookie:r,getFromTRC:t}=h;try{return e()||r()||t()}catch(e){return 0}},getFromCookie(){const{cookiesAreEnabled:e,getCookie:r}=h.storageManager;if(e()){const e=r("trc_cookie_storage");let t;if(e&&(t=h.getCookieDataByKey(e,f)),t)return t;if(t=r("t_gid"),t)return t;if(t=r("t_pt_gid"),t)return t;const o=r("tbla_id");if(o)return o}},getCookieDataByKey(e,r){if(!e)return;const[,t=""]=e.split(`${r}=`);return t},getFromLocalStorage(){const{hasLocalStorage:e,localStorageIsEnabled:r,getDataFromLocalStorage:t}=h.storageManager;if(e()&&r())return t(m)},getFromTRC:()=>window.TRC?window.TRC.user_id:0},R={getPageUrl:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e?.page||(0,s.getWindowSelf)().location.href},getReferrer:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e?.ref||(0,s.getWindowSelf)().document.referrer}},S=(0,l.A)({context:{netRevenue:!0,mediaType:n.D4,ttl:300},imp(e,r,t){let o=e(r,t);return function(e,r){const{tagId:t,position:o}=e.params;if(r.banner=function(e,r){return{...C(e.sizes),pos:r}}(e,o),r.tagid=t,"function"==typeof e.getFloor){const t=e.getFloor({currency:b,size:"*"});"object"!=typeof t||t.currency!==b||isNaN(parseFloat(t.floor))||(r.bidfloor=parseFloat(t.floor),r.bidfloorcur=b)}else{const{bidfloor:t=null,bidfloorcur:o=b}=e.params;r.bidfloor=t,r.bidfloorcur=o}(0,d.J)(r,"ext.gpid",(0,u.A)(e,"ortb2Imp.ext.gpid"))}(r,o),o},request(e,r,t,o){const i=e(r,t,o);return function(e,r,t){const{refererInfo:o,gdprConsent:i={},uspConsent:n}=e,s=function(e,r,t){let{publisherId:o}=e;const{getPageUrl:i,getReferrer:n}=R;return{id:o,name:o,domain:t?.site?.domain||r?.domain||window.location?.host,page:t?.site?.page||i(r),ref:t?.site?.ref||n(r),publisher:{id:o},content:{language:navigator.language}}}(r.params,o,e.ortb2);(0,d.J)(t,"device.ua",navigator.userAgent);const u=h.getUserId(i,n);null==t.user&&(t.user={buyeruid:0,ext:{}});u&&0!==u&&(0,d.J)(t,"user.buyeruid",u);null==t.regs?.ext&&(t.regs={ext:{}});(0,d.J)(t,"regs.coppa",0),i.gdprApplies&&((0,d.J)(t,"user.ext.consent",e.gdprConsent.consentString),(0,d.J)(t,"regs.ext.gdpr",1));n&&(0,d.J)(t,"regs.ext.us_privacy",n);e.ortb2?.regs?.gpp&&((0,d.J)(t,"regs.ext.gpp",e.ortb2.regs.gpp),(0,d.J)(t,"regs.ext.gpp_sid",e.ortb2.regs.gpp_sid));a.$W.getConfig("coppa")&&(0,d.J)(t,"regs.coppa",1);const g=e.ortb2||{bcat:[],badv:[],wlang:[]};(0,d.J)(t,"source.fd",1),t.id=e.bidderRequestId,t.site=s,t.tmax=null==e.timeout?void 0:parseInt(e.timeout),t.bcat=g.bcat||r.params.bcat||[],t.badv=g.badv||r.params.badv||[],t.wlang=g.wlang||r.params.wlang||[],(0,d.J)(t,"ext.pageType",g?.ext?.data?.pageType||g?.ext?.data?.section||r.params.pageType),(0,d.J)(t,"ext.prebid.version","9.
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[99097],{45011:(e,r,t)=>{var o=t(7873),i=t(57377),n=t(71371),a=t(43272),s=t(91069),d=t(63172),u=t(70433),g=t(12938),p=t(68044),l=t(89766);const c="taboola",b="USD",f="user-id",m=`taboola global:${f}`,y="https://beacon.bidder.taboola.com",h={storageManager:(0,g.vM)({bidderCode:c}),getUserId:()=>{const{getFromLocalStorage:e,getFromCookie:r,getFromTRC:t}=h;try{return e()||r()||t()}catch(e){return 0}},getFromCookie(){const{cookiesAreEnabled:e,getCookie:r}=h.storageManager;if(e()){const e=r("trc_cookie_storage");let t;if(e&&(t=h.getCookieDataByKey(e,f)),t)return t;if(t=r("t_gid"),t)return t;if(t=r("t_pt_gid"),t)return t;const o=r("tbla_id");if(o)return o}},getCookieDataByKey(e,r){if(!e)return;const[,t=""]=e.split(`${r}=`);return t},getFromLocalStorage(){const{hasLocalStorage:e,localStorageIsEnabled:r,getDataFromLocalStorage:t}=h.storageManager;if(e()&&r())return t(m)},getFromTRC:()=>window.TRC?window.TRC.user_id:0},R={getPageUrl:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e?.page||(0,s.getWindowSelf)().location.href},getReferrer:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e?.ref||(0,s.getWindowSelf)().document.referrer}},S=(0,l.A)({context:{netRevenue:!0,mediaType:n.D4,ttl:300},imp(e,r,t){let o=e(r,t);return function(e,r){const{tagId:t,position:o}=e.params;if(r.banner=function(e,r){return{...C(e.sizes),pos:r}}(e,o),r.tagid=t,"function"==typeof e.getFloor){const t=e.getFloor({currency:b,size:"*"});"object"!=typeof t||t.currency!==b||isNaN(parseFloat(t.floor))||(r.bidfloor=parseFloat(t.floor),r.bidfloorcur=b)}else{const{bidfloor:t=null,bidfloorcur:o=b}=e.params;r.bidfloor=t,r.bidfloorcur=o}(0,d.J)(r,"ext.gpid",(0,u.A)(e,"ortb2Imp.ext.gpid"))}(r,o),o},request(e,r,t,o){const i=e(r,t,o);return function(e,r,t){const{refererInfo:o,gdprConsent:i={},uspConsent:n}=e,s=function(e,r,t){let{publisherId:o}=e;const{getPageUrl:i,getReferrer:n}=R;return{id:o,name:o,domain:t?.site?.domain||r?.domain||window.location?.host,page:t?.site?.page||i(r),ref:t?.site?.ref||n(r),publisher:{id:o},content:{language:navigator.language}}}(r.params,o,e.ortb2);(0,d.J)(t,"device.ua",navigator.userAgent);const u=h.getUserId(i,n);null==t.user&&(t.user={buyeruid:0,ext:{}});u&&0!==u&&(0,d.J)(t,"user.buyeruid",u);null==t.regs?.ext&&(t.regs={ext:{}});(0,d.J)(t,"regs.coppa",0),i.gdprApplies&&((0,d.J)(t,"user.ext.consent",e.gdprConsent.consentString),(0,d.J)(t,"regs.ext.gdpr",1));n&&(0,d.J)(t,"regs.ext.us_privacy",n);e.ortb2?.regs?.gpp&&((0,d.J)(t,"regs.ext.gpp",e.ortb2.regs.gpp),(0,d.J)(t,"regs.ext.gpp_sid",e.ortb2.regs.gpp_sid));a.$W.getConfig("coppa")&&(0,d.J)(t,"regs.coppa",1);const g=e.ortb2||{bcat:[],badv:[],wlang:[]};(0,d.J)(t,"source.fd",1),t.id=e.bidderRequestId,t.site=s,t.tmax=null==e.timeout?void 0:parseInt(e.timeout),t.bcat=g.bcat||r.params.bcat||[],t.badv=g.badv||r.params.badv||[],t.wlang=g.wlang||r.params.wlang||[],(0,d.J)(t,"ext.pageType",g?.ext?.data?.pageType||g?.ext?.data?.section||r.params.pageType),(0,d.J)(t,"ext.prebid.version","9.6.0")}(t,o.bidRequests[0],i),i},bidResponse(e,r,t){const o=e(r,t);return o.nurl=r.nurl,o.ad=(0,s.replaceAuctionPrice)(r.adm,r.price),r.ext&&r.ext.dchain&&(0,d.J)(o,"meta.dchain",r.ext.dchain),o}}),x={supportedMediaTypes:[n.D4],gvlid:42,code:c,isBidRequestValid:e=>!!(e.sizes&&e.params&&e.params.publisherId&&e.params.tagId),buildRequests:(e,r)=>{const[t]=e,o=S.toORTB({bidderRequest:r,bidRequests:e}),{publisherId:i}=t.params;return{url:"https://display.bidder.taboola.com/OpenRTB/TaboolaHB/auction?publisher="+i,method:"POST",data:o,bids:e,options:{withCredentials:!1}}},interpretResponse:(e,r)=>{if(!r||!r.bids||!r.data)return[];if(!e||!e.body)return[];const t=[],o=[];if(e.body.seatbid&&e.body.seatbid.length&&e.body.seatbid[0].bid&&e.body.seatbid[0].bid.length)t.push(...S.fromORTB({response:e.body,request:r.data}).bids);else if(!e.body.ext||!e.body.ext.igbid||!e.body.ext.igbid.length)return[];return(0,s.isArray)(e.body.ext?.igbid)&&e.body.ext.igbid.forEach((e=>{if(!(e&&e.igbuyer&&e.igbuyer.length&&e.igbuyer[0].buyerdata))return;let r=(0,s.safeJSONParse)(e.igbuyer[0]?.buyerdata);if(!r)return;const t={};e.igbuyer.forEach((e=>{if(!e||!e.buyerdata||!e.origin)return;let r=(0,s.safeJSONParse)(e.buyerdata);r&&r.perBuyerSignals&&e.origin in r.perBuyerSignals&&(t[e.origin]=r.perBuyerSignals[e.origin])}));const i=e?.impid;o.push({impId:i,config:{seller:r?.seller,resolveToConfig:r?.resolveToConfig,sellerSignals:{},sellerTimeout:r?.sellerTimeout,perBuyerSignals:t,auctionSignals:{},decisionLogicUrl:r?.decisionLogicUrl,interestGroupBuyers:r?.interestGroupBuyers,perBuyerTimeouts:r?.perBuyerTimeouts}})})),o.length?{bids:t,paapi:o}:t},onBidWon:e=>{if(e.nurl){const r=(0,s.replaceAuctionPrice)(e.nurl,e.originalCpm);(0,p.RD)(r)}},getUserSyncs:function(e,r,t,o,i){const n=[],a=[];return t&&a.push(`gdpr=${Number(t.gdprApplies&&1)}&gdpr_consent=${encodeURIComponent(t.consentString||"")}`),o&&a.push("us_privacy="+encodeURIComponent(o)),i&&a.push("gpp="+encodeURIComponent(i.gppString||"")+"&gpp_sid="+encodeURIComponent((i.applicableSections||[]).join(","))),e.iframeEnabled&&n.push({type:"iframe",url:"https://cdn.taboola.com/scripts/prebid_iframe_sync.html"+(a.length?"?"+a.join("&"):"")}),e.pixelEnabled&&n.push({type:"image",url:"https://trc.taboola.com/sg/prebidJS/1/cm"+(a.length?"?"+a.join("&"):"")}),n},onTimeout:e=>{(0,p.RD)(y+"/timeout",null,JSON.stringify(e),{method:"POST"})},onBidderError:e=>{let{error:r,bidderRequest:t}=e;(0,p.RD)(y+"/bidError",null,JSON.stringify({error:r,bidderRequest:t}),{method:"POST"})}};function C(e){return{format:e.map((e=>({w:e[0],h:e[1]})))}}(0,i.a$)(x),(0,o.E)("taboolaBidAdapter")}},e=>{e.O(0,[60802,58498,51085],(()=>{return r=45011,e(e.s=r);var r}));e.O()}]);
|
package/dist/tappxBidAdapter.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[59852],{66712:(e,r,t)=>{var a=t(7873),n=t(91069),i=t(70433),o=t(57377),d=t(71371),s=t(43272),p=t(95789),l=t(27934);const m="tappx",u="USD",c="0.1.3",f="prebidjs",g="[TAPPX]: ",y=["instream","outstream"],b={NUMBER:"number",STRING:"string",BOOLEAN:"boolean",ARRAY:"array",OBJECT:"object"},x={minduration:b.NUMBER,maxduration:b.NUMBER,startdelay:b.NUMBER,playbackmethod:b.ARRAY,api:b.ARRAY,protocols:b.ARRAY,w:b.NUMBER,h:b.NUMBER,battr:b.ARRAY,linearity:b.NUMBER,plcmt:b.NUMBER,minbitrate:b.NUMBER,maxbitrate:b.NUMBER,skip:b.NUMBER};var h;const A={code:m,gvlid:628,supportedMediaTypes:[d.D4,d.G_],isBidRequestValid:function(e){return new RegExp("^(vz.*|zz.*)\\.*$","i").test(e.params.host)?new RegExp("^(zz.*)\\.*$","i").test(e.params.host)?v(e):v(e)&&w(e):new RegExp("^(ZZ.*)\\.*$","i").test(e.params.endpoint)?v(e):v(e)&&w(e)},buildRequests:function(e,r){let t=[];return e.forEach((e=>{t.push(function(e,r){let t=function(e){let r={},t=(0,i.A)(e,"params.endpoint"),a=(0,i.A)(e,"params.host");r.domain=a.split("/",1)[0];let n=new RegExp("^https://"),o=new RegExp("^http://"),d=new RegExp("^(vz.*|zz.*)\\.[a-z]{3}\\.tappx\\.com$","i"),s=new RegExp("^([a-z]{3}|testing)\\.[a-z]{3}\\.tappx\\.com$","i");n.test(a)?a=a.replace("https://",""):o.test(a)&&(a=a.replace("http://",""));d.test(r.domain)?(r.newEndpoint=!0,r.endpoint=r.domain.split(".",1)[0],r.url=`https://${a}`):s.test(r.domain)&&(r.newEndpoint=!1,r.endpoint=t,r.url=`https://${a}${t}`);return r}(e);const a=t.endpoint;h=t.domain;const o=(0,i.A)(e,"params.tappxkey"),d=(0,i.A)(e,"params.mktag"),p=(0,i.A)(e,"params.bidfloor"),y=(0,i.A)(e,"params.ext"),b=(0,i.A)(e,"mediaTypes.banner"),A=(0,i.A)(e,"mediaTypes.video"),v=(0,i.A)(e,"ortb2");let w,E={},z={},T={};if((0,i.A)(e,"params.app")){let r={};r.name=(0,i.A)(e,"params.app.name"),r.bundle=(0,i.A)(e,"params.app.bundle"),r.domain=(0,i.A)(e,"params.app.domain"),z.name=(0,i.A)(e,"params.app.publisher.name"),z.domain=(0,i.A)(e,"params.app.publisher.domain"),w=`${r.name}_typeAdBanVid_${R()}`,E.app=r,T[0]=(0,i.A)(e,"params.api")?(0,i.A)(e,"params.api"):[3,5]}else{let t=function(e,r){let t=r?.refererInfo?.page||r?.refererInfo?.topmostLocation;return(0,l.gR)(t,{noLeadingWww:!0})}(0,r),a=(0,i.A)(e,"params.site")||{};a.name=t,a.page=r?.refererInfo?.page||(0,i.A)(e,"params.site.page")||r?.refererInfo?.topmostLocation||window.location.href||t,a.domain=t;try{a.ref=r?.refererInfo?.ref||window.top.document.referrer||""}catch(e){a.ref=r?.refererInfo?.ref||window.document.referrer||""}a.ext={},a.ext.is_amp=r?.refererInfo?.isAmp||0,a.ext.page_da=(0,i.A)(e,"params.site.page")||"-",a.ext.page_rip=r?.refererInfo?.page||"-",a.ext.page_rit=r?.refererInfo?.topmostLocation||"-",a.ext.page_wlh=window.location.href||"-",z.name=t,z.domain=t;let n=document.getElementsByTagName("meta").title;n&&n.content&&(a.name=n.content),w=`${a.name}_typeAdBanVid_${R()}`;let o=document.getElementsByTagName("meta").keywords;o&&o.content&&(a.keywords=o.content),E.site=a}let I,B,N={};if(b){Array.isArray(b.sizes)||(0,n.logWarn)(g,"Banner sizes array not found.");let e={};I=b.sizes[0][0],B=b.sizes[0][1],e.w=I,e.h=B,b.sizes[0].indexOf(480)>=0&&b.sizes[0].indexOf(320)>=0||b.sizes[0].indexOf(768)>=0&&b.sizes[0].indexOf(1024),e.pos=0,e.api=T;let r={0:{}};r[0].w=I,r[0].h=B,e.format=r,N.banner=e}if(void 0!==A){let r={},t=(0,i.A)(e,"params.video");if(void 0!==t)for(var U in x)t.hasOwnProperty(U)&&(r[U]=O(U,t[U],x[U]));(void 0===r.w||null==r.w||r.w<=0||void 0===r.h||null==r.h||r.h<=0)&&(Array.isArray(A.playerSize)||(0,n.logWarn)(g,"Video playerSize array not found."),I=A.playerSize[0][0],B=A.playerSize[0][1],r.w=I,r.h=B),r.mimes=A.mimes;let a={};void 0!==A.rewarded&&1==A.rewarded&&(a.rewarded=A.rewarded),r.ext=a,N.video=r}if(N.id=e.bidId,N.tagid=w,N.secure=1,N.bidfloor=(0,i.A)(e,"params.bidfloor"),(0,n.isFn)(e.getFloor))try{let r=e.getFloor({currency:u,mediaType:"*",size:"*"});(0,n.isPlainObject)(r)&&!isNaN(r.floor)&&"USD"===r.currency?N.bidfloor=r.floor:(0,n.logWarn)(g,"Currency not valid. Use only USD with Tappx.")}catch(r){(0,n.logWarn)(g,r),N.bidfloor=(0,i.A)(e,"params.bidfloor")}let $={};$.endpoint=a,$.host=t.url,$.bidfloor=p,$.ext="object"==typeof y?y:void 0,N.ext={},N.ext.bidder=$;let S={};S.os=R(),S.ip="peer",S.ua=navigator.userAgent,S.ifa=e.ifa,S.h=screen.height,S.w=screen.width,S.dnt=(0,n.getDNT)()?1:0,S.language=function(){const e=navigator.language?"language":"userLanguage";return navigator[e].split("-")[0]}(),S.make=function(){let e=navigator.userAgent;return-1!=e.indexOf("Chrome")?"Google":-1!=e.indexOf("Firefox")?"Mozilla":-1!=e.indexOf("Safari")?"Apple":-1!=e.indexOf("Edge")||-1!=e.indexOf("MSIE")||-1!=e.indexOf("Trident")?"Microsoft":""}();let k={};k.country=(0,i.A)(e,"params.geo.country");let W={};W.country=v?.device?.geo,void 0!==W.country?S.geo=W:void 0!==k.country&&(S.geo=k);let M={ext:{}},C=(0,i.A)(e,"userIdAsEids");void 0!==C&&(C=C.filter((e=>null!=e&&"string"==typeof e.source&&null!==e.source&&"string"==typeof e.uids[0].id&&null!==e.uids[0].id)),M.ext.eids=C);let _={gdpr:0};null==r.gdprConsent||("boolean"==typeof r.gdprConsent.gdprApplies&&(_.gdpr=r.gdprConsent.gdprApplies),_.gdpr&&(M.ext.consent=r.gdprConsent.consentString));_.ext={},null==r.uspConsent||(_.ext.us_privacy=r.uspConsent);!0===s.$W.getConfig("coppa")&&(_.coppa=!0===s.$W.getConfig("coppa")?1:0);let P={bidder:{}};P.bidder.tappxkey=o,P.bidder.mktag=d,P.bidder.bcid=(0,i.A)(e,"params.bcid"),P.bidder.bcrid=(0,i.A)(e,"params.bcrid"),P.bidder.ext="object"==typeof y?y:{},void 0!==A&&(P.bidder.ext.pbvidtype=A.context);E.id=r.bidderRequestId,E.test=(0,i.A)(e,"params.test")?1:0,E.at=1,E.tmax=r.timeout?r.timeout:600,E.bidder=m,E.imp=[N],E.user=M,E.ext=P,E.device=S,E.regs=_;let L="v9.
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[59852],{66712:(e,r,t)=>{var a=t(7873),n=t(91069),i=t(70433),o=t(57377),d=t(71371),s=t(43272),p=t(95789),l=t(27934);const m="tappx",u="USD",c="0.1.3",f="prebidjs",g="[TAPPX]: ",y=["instream","outstream"],b={NUMBER:"number",STRING:"string",BOOLEAN:"boolean",ARRAY:"array",OBJECT:"object"},x={minduration:b.NUMBER,maxduration:b.NUMBER,startdelay:b.NUMBER,playbackmethod:b.ARRAY,api:b.ARRAY,protocols:b.ARRAY,w:b.NUMBER,h:b.NUMBER,battr:b.ARRAY,linearity:b.NUMBER,plcmt:b.NUMBER,minbitrate:b.NUMBER,maxbitrate:b.NUMBER,skip:b.NUMBER};var h;const A={code:m,gvlid:628,supportedMediaTypes:[d.D4,d.G_],isBidRequestValid:function(e){return new RegExp("^(vz.*|zz.*)\\.*$","i").test(e.params.host)?new RegExp("^(zz.*)\\.*$","i").test(e.params.host)?v(e):v(e)&&w(e):new RegExp("^(ZZ.*)\\.*$","i").test(e.params.endpoint)?v(e):v(e)&&w(e)},buildRequests:function(e,r){let t=[];return e.forEach((e=>{t.push(function(e,r){let t=function(e){let r={},t=(0,i.A)(e,"params.endpoint"),a=(0,i.A)(e,"params.host");r.domain=a.split("/",1)[0];let n=new RegExp("^https://"),o=new RegExp("^http://"),d=new RegExp("^(vz.*|zz.*)\\.[a-z]{3}\\.tappx\\.com$","i"),s=new RegExp("^([a-z]{3}|testing)\\.[a-z]{3}\\.tappx\\.com$","i");n.test(a)?a=a.replace("https://",""):o.test(a)&&(a=a.replace("http://",""));d.test(r.domain)?(r.newEndpoint=!0,r.endpoint=r.domain.split(".",1)[0],r.url=`https://${a}`):s.test(r.domain)&&(r.newEndpoint=!1,r.endpoint=t,r.url=`https://${a}${t}`);return r}(e);const a=t.endpoint;h=t.domain;const o=(0,i.A)(e,"params.tappxkey"),d=(0,i.A)(e,"params.mktag"),p=(0,i.A)(e,"params.bidfloor"),y=(0,i.A)(e,"params.ext"),b=(0,i.A)(e,"mediaTypes.banner"),A=(0,i.A)(e,"mediaTypes.video"),v=(0,i.A)(e,"ortb2");let w,E={},z={},T={};if((0,i.A)(e,"params.app")){let r={};r.name=(0,i.A)(e,"params.app.name"),r.bundle=(0,i.A)(e,"params.app.bundle"),r.domain=(0,i.A)(e,"params.app.domain"),z.name=(0,i.A)(e,"params.app.publisher.name"),z.domain=(0,i.A)(e,"params.app.publisher.domain"),w=`${r.name}_typeAdBanVid_${R()}`,E.app=r,T[0]=(0,i.A)(e,"params.api")?(0,i.A)(e,"params.api"):[3,5]}else{let t=function(e,r){let t=r?.refererInfo?.page||r?.refererInfo?.topmostLocation;return(0,l.gR)(t,{noLeadingWww:!0})}(0,r),a=(0,i.A)(e,"params.site")||{};a.name=t,a.page=r?.refererInfo?.page||(0,i.A)(e,"params.site.page")||r?.refererInfo?.topmostLocation||window.location.href||t,a.domain=t;try{a.ref=r?.refererInfo?.ref||window.top.document.referrer||""}catch(e){a.ref=r?.refererInfo?.ref||window.document.referrer||""}a.ext={},a.ext.is_amp=r?.refererInfo?.isAmp||0,a.ext.page_da=(0,i.A)(e,"params.site.page")||"-",a.ext.page_rip=r?.refererInfo?.page||"-",a.ext.page_rit=r?.refererInfo?.topmostLocation||"-",a.ext.page_wlh=window.location.href||"-",z.name=t,z.domain=t;let n=document.getElementsByTagName("meta").title;n&&n.content&&(a.name=n.content),w=`${a.name}_typeAdBanVid_${R()}`;let o=document.getElementsByTagName("meta").keywords;o&&o.content&&(a.keywords=o.content),E.site=a}let I,B,N={};if(b){Array.isArray(b.sizes)||(0,n.logWarn)(g,"Banner sizes array not found.");let e={};I=b.sizes[0][0],B=b.sizes[0][1],e.w=I,e.h=B,b.sizes[0].indexOf(480)>=0&&b.sizes[0].indexOf(320)>=0||b.sizes[0].indexOf(768)>=0&&b.sizes[0].indexOf(1024),e.pos=0,e.api=T;let r={0:{}};r[0].w=I,r[0].h=B,e.format=r,N.banner=e}if(void 0!==A){let r={},t=(0,i.A)(e,"params.video");if(void 0!==t)for(var U in x)t.hasOwnProperty(U)&&(r[U]=O(U,t[U],x[U]));(void 0===r.w||null==r.w||r.w<=0||void 0===r.h||null==r.h||r.h<=0)&&(Array.isArray(A.playerSize)||(0,n.logWarn)(g,"Video playerSize array not found."),I=A.playerSize[0][0],B=A.playerSize[0][1],r.w=I,r.h=B),r.mimes=A.mimes;let a={};void 0!==A.rewarded&&1==A.rewarded&&(a.rewarded=A.rewarded),r.ext=a,N.video=r}if(N.id=e.bidId,N.tagid=w,N.secure=1,N.bidfloor=(0,i.A)(e,"params.bidfloor"),(0,n.isFn)(e.getFloor))try{let r=e.getFloor({currency:u,mediaType:"*",size:"*"});(0,n.isPlainObject)(r)&&!isNaN(r.floor)&&"USD"===r.currency?N.bidfloor=r.floor:(0,n.logWarn)(g,"Currency not valid. Use only USD with Tappx.")}catch(r){(0,n.logWarn)(g,r),N.bidfloor=(0,i.A)(e,"params.bidfloor")}let $={};$.endpoint=a,$.host=t.url,$.bidfloor=p,$.ext="object"==typeof y?y:void 0,N.ext={},N.ext.bidder=$;let S={};S.os=R(),S.ip="peer",S.ua=navigator.userAgent,S.ifa=e.ifa,S.h=screen.height,S.w=screen.width,S.dnt=(0,n.getDNT)()?1:0,S.language=function(){const e=navigator.language?"language":"userLanguage";return navigator[e].split("-")[0]}(),S.make=function(){let e=navigator.userAgent;return-1!=e.indexOf("Chrome")?"Google":-1!=e.indexOf("Firefox")?"Mozilla":-1!=e.indexOf("Safari")?"Apple":-1!=e.indexOf("Edge")||-1!=e.indexOf("MSIE")||-1!=e.indexOf("Trident")?"Microsoft":""}();let k={};k.country=(0,i.A)(e,"params.geo.country");let W={};W.country=v?.device?.geo,void 0!==W.country?S.geo=W:void 0!==k.country&&(S.geo=k);let M={ext:{}},C=(0,i.A)(e,"userIdAsEids");void 0!==C&&(C=C.filter((e=>null!=e&&"string"==typeof e.source&&null!==e.source&&"string"==typeof e.uids[0].id&&null!==e.uids[0].id)),M.ext.eids=C);let _={gdpr:0};null==r.gdprConsent||("boolean"==typeof r.gdprConsent.gdprApplies&&(_.gdpr=r.gdprConsent.gdprApplies),_.gdpr&&(M.ext.consent=r.gdprConsent.consentString));_.ext={},null==r.uspConsent||(_.ext.us_privacy=r.uspConsent);!0===s.$W.getConfig("coppa")&&(_.coppa=!0===s.$W.getConfig("coppa")?1:0);let P={bidder:{}};P.bidder.tappxkey=o,P.bidder.mktag=d,P.bidder.bcid=(0,i.A)(e,"params.bcid"),P.bidder.bcrid=(0,i.A)(e,"params.bcrid"),P.bidder.ext="object"==typeof y?y:{},void 0!==A&&(P.bidder.ext.pbvidtype=A.context);E.id=r.bidderRequestId,E.test=(0,i.A)(e,"params.test")?1:0,E.at=1,E.tmax=r.timeout?r.timeout:600,E.bidder=m,E.imp=[N],E.user=M,E.ext=P,E.device=S,E.regs=_;let L="v9.6.0";return{method:"POST",url:`${t.url}?type_cnn=${f}&v=${c}&pbjsv=${L}`,data:JSON.stringify(E),bids:e}}(e,r))})),t},interpretResponse:function(e,r){const t=e.body;if(!e.body)return(0,n.logWarn)(g,"Empty response body HTTP 204, no bids"),[];const a=[];return t.seatbid.forEach((e=>{e.bid.forEach((e=>{a.push(function(e,r){let t={requestId:r.bids?.bidId,cpm:e.price,currency:e.cur?e.cur:u,width:e.w,height:e.h,ttl:360,creativeId:e.crid,netRevenue:!0};void 0!==e.dealId&&(t.dealId=e.dealId);void 0!==e.lurl&&(t.lurl=e.lurl);void 0!==e.nurl&&(t.nurl=e.nurl);void 0!==e.burl&&(t.burl=e.burl);if(void 0!==r.bids?.mediaTypes&&void 0!==r.bids?.mediaTypes.video){if(t.vastXml=e.adm,t.vastUrl=e.lurl,t.ad=e.adm,t.mediaType=d.G_,t.width=e.w,t.height=e.h,"outstream"===r.bids?.mediaTypes.video.context){if(!e.ext.purl)return(0,n.logWarn)(g,"Error getting player outstream from tappx"),!1;t.renderer=function(e,r,t){const a=p.A4.install({id:r.id,url:t,loaded:!1});try{a.setRender(E)}catch(e){(0,n.logWarn)(g,"Prebid Error calling setRender on renderer")}return a}(0,r,e.ext.purl)}}else t.ad=e.adm,t.mediaType=d.D4;void 0===t.adomain&&null===t.adomain||(t.meta={advertiserDomains:r.bids?.adomain});return t}(e,r))}))})),a},getUserSyncs:(e,r,t,a)=>{let n=`https://${h}/cs/usersync.php?`;return t&&(n+="&gdpr_optin="+(t.gdprApplies?1:0),n+="&gdpr_consent="+encodeURIComponent(t.consentString||"")),a&&(n+="&us_privacy="+encodeURIComponent(a)),e.iframeEnabled?(n+="&type=iframe",[{type:"iframe",url:n}]):(n+="&type=img",[{type:"image",url:n}])}};function v(e){if(null==e.params)return(0,n.logWarn)(g,"Please review the mandatory Tappx parameters."),!1;if(!e.params.tappxkey)return(0,n.logWarn)(g,"Please review the mandatory Tappxkey parameter."),!1;if(!e.params.host)return(0,n.logWarn)(g,"Please review the mandatory Host parameter."),!1;let r=!0;return new RegExp("^(vz.*|zz.*)\\.*$","i").test(e.params.host)&&(r=!1),!(r&&!e.params.endpoint)||((0,n.logWarn)(g,"Please review the mandatory endpoint Tappx parameters."),!1)}function w(e){const r=(0,i.A)(e,"mediaTypes.video");return void 0===r||-1!==y.indexOf(r.context)||((0,n.logWarn)(g,"Please review the mandatory Tappx parameters for Video. Video context not supported."),!1)}function R(){let e=navigator.userAgent;return e.match(/Android/)?"Android":e.match(/(iPhone|iPod|iPad)/)?"iOS":-1!=e.indexOf("Mac OS X")?"macOS":-1!=e.indexOf("Windows")?"Windows":-1!=e.indexOf("Linux")?"Linux":"Unknown"}function E(e,r){let t={};t=void 0!==e.params[0].video?e.params[0].video:{},t.content=e.vastXml,e.renderer.push((()=>{window.tappxOutstream.renderAd({sizes:[e.width,e.height],targetId:e.adUnitCode,adResponse:e.adResponse,rendererOptions:t})}))}function O(e,r,t){var a,i="Ignoring param key: "+e+", expects "+t+", found "+typeof r;switch(t){case b.BOOLEAN:a=n.isBoolean;break;case b.NUMBER:a=n.isNumber;break;case b.STRING:a=n.isStr;break;case b.ARRAY:a=n.isArray}if(a(r))return r;(0,n.logWarn)(g,i)}(0,o.a$)(A),(0,a.E)("tappxBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return r=66712,e(e.s=r);var r}));e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[8991],{63473:(e,
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[8991],{63473:(e,s,n)=>{var t=n(7873),r=n(91069),d=n(71371),i=n(57377),p=n(77096),a=n(15558);const o={code:a.nf,gvlid:a.VQ,supportedMediaTypes:[d.D4,d.G_],isBidRequestValid:function(e){return!!(e&&e.params&&e.params.placementId)},buildRequests:function(e,s){const n=[],t={source:a.u2,version:"9.6.0"};for(let{params:i,bidId:o,sizes:c,mediaTypes:u}of e)for(const g in u)switch(g){case d.G_:{const g=u[d.G_],l=i.placementId,h=(0,p.jN)();c&&!Array.isArray(c[0])&&(c=[c]);const b={sdk:t,id:s.bidderRequestId,site:h,imp:[]},f={ext:{prebid:{storedrequest:{id:l}}},video:(0,r.getDefinedParams)(g,a.rA)};g.playerSize?f.video=Object.assign(f.video,(0,r.parseGPTSingleSizeArrayToRtbSize)(g.playerSize[0])||{}):g.w&&g.h&&(f.video.w=g.w,f.video.h=g.h),b.imp.push(f);const C=s&&s.gdprConsent,_=s&&s.uspConsent;(C||_)&&(b.regs={ext:{}},_&&(b.regs.ext.us_privacy=_),C&&(void 0!==C.gdprApplies&&(b.regs.ext.gdpr=C.gdprApplies?1:0),void 0!==C.consentString&&(b.user={ext:{consent:C.consentString}}))),e[0].schain&&(b.schain=e[0].schain),n.push((0,p.zw)({payload:b,url:a.UE,bidId:o}));break}case d.D4:{const n={tags:e.map(p.Gw),sdk:t,schain:e[0].schain};if(s&&s.gdprConsent&&(n.gdpr_consent={consent_string:s.gdprConsent.consentString,consent_required:s.gdprConsent.gdprApplies},s.gdprConsent.addtlConsent&&-1!==s.gdprConsent.addtlConsent.indexOf("~"))){let e=s.gdprConsent.addtlConsent,t=e.substring(e.indexOf("~")+1);n.gdpr_consent.addtl_consent=t.split(".").map((e=>parseInt(e,10)))}return s&&s.uspConsent&&(n.us_privacy=s.uspConsent),(0,p.zw)({payload:n,url:a.jG,bidderRequest:s})}}return n},interpretResponse:function(e,s){let{bidderRequest:n,...t}=s;const i=(e=e.body).cur,o=[];return e.tags&&e.tags.forEach((e=>{const s=(0,p.w5)(e);s&&0!==s.cpm&&s.ad_type==d.G_&&o.push((0,p.eN)(e,s,n,a.jS))})),e.seatbid&&(0,r._each)(e.seatbid,(e=>{(0,r._each)(e.bid,(e=>{const s=t.bidId,n=t.params;o.push((0,p.r2)(e,s,i,n,a.fG))}))})),o}};(0,i.a$)(o),(0,t.E)("targetVideoBidAdapter")}},e=>{e.O(0,[78556,60802,51085],(()=>{return s=63473,e(e.s=s);var s}));e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[78556],{77096:(e,t,r)=>{r.d(t,{Gw:()=>o,eN:()=>u,jN:()=>y,r2:()=>p,s_:()=>c,w5:()=>m,zw:()=>l});var a=r(71371),i=r(27934),d=r(91069),n=r(70433);function s(e){let t=e.sizes;return!t&&e.mediaTypes&&e.mediaTypes.banner&&e.mediaTypes.banner.sizes&&(t=e.mediaTypes.banner.sizes),Array.isArray(t)&&!Array.isArray(t[0])&&(t=[t[0],t[1]]),Array.isArray(t)&&Array.isArray(t[0])||(t=[[0,0]]),t}function l(e){let{payload:t,url:r,bidderRequest:a,bidId:i}=e;const d={method:"POST",data:JSON.stringify(t),url:r,options:{withCredentials:!0}};return a&&(d.bidderRequest=a),i&&(d.bidId=i),d}function o(e){const t={};return t.id=parseInt(e.params.placementId,10),t.gpid="targetVideo",t.sizes=s(e),t.primary_size=t.sizes[0],t.ad_types=[a.G_],t.uuid=e.bidId,t.allow_smaller_sizes=!1,t.use_pmt_rule=!1,t.prebid=!0,t.disable_psa=!0,t.hb_source=1,t.require_asset_url=!0,t.video={playback_method:2,skippable:!0},t}function u(e,t,r,a){const i=(0,d.getBidRequest)(e.uuid,[r]),n=s(i),l={requestId:e.uuid,cpm:t.cpm/a,creativeId:t.creative_id,dealId:t.deal_id,currency:"USD",netRevenue:!0,width:n[0][0],height:n[0][1],ttl:300,adUnitCode:i.adUnitCode,appnexus:{buyerMemberId:t.buyer_member_id,dealPriority:t.deal_priority,dealCode:t.deal_code}};var o;return t.rtb.video&&Object.assign(l,{vastImpUrl:t.notify_url,ad:(o=t.notify_url+"&redir="+encodeURIComponent(t.rtb.video.asset_url),`<!DOCTYPE html>\n <html lang="en">\n <head>\n <meta charset="UTF-8">\n <title></title>\n <style>html, body {width: 100%; height: 100%; margin: 0;}</style>\n </head>\n <body>\n <div id="targetVideoPlayer"></div>\n <script src="https://player.target-video.com/custom/targetvideo-banner.js"><\/script>\n <script>initPlayer("${o}");<\/script>\n </body>\n </html>`),ttl:3600}),l}function p(e,t,r,i,d){const{ad:n,adUrl:s,vastUrl:l,vastXml:o}=c(e),u={requestId:t,params:i,currency:r,cpm:e.price,width:e.w,height:e.h,creativeId:e.adid||e.crid,netRevenue:!1,ttl:d,meta:{advertiserDomains:e.adomain||[]}};return l||o?(u.mediaType=a.G_,l&&(u.vastUrl=l),o&&(u.vastXml=o)):(u.ad=n,u.adUrl=s),u}function m(e){return e&&e.ads&&e.ads.length&&e.ads.find((e=>e.rtb))}function c(e){let t,r,i,s;if((0,n.A)(e,"ext.prebid.type")===a.G_)"http"===e.adm.substr(0,4)?s=e.adm:i=e.adm;else e.adm&&e.nurl?(t=e.adm,t+=(0,d.createTrackPixelHtml)(decodeURIComponent(e.nurl))):e.adm?t=e.adm:e.nurl&&(r=e.nurl);return{ad:t,adUrl:r,vastXml:i,vastUrl:s}}function y(){const e=i.EN&&(0,i.EN)()||{};return{page:e.page,ref:e.ref,domain:e.domain}}},15558:(e,t,r)=>{r.d(t,{UE:()=>o,VQ:()=>i,fG:()=>s,jG:()=>l,jS:()=>d,nf:()=>n,rA:()=>u,u2:()=>a});const a="pbjs",i=786,d=1.35,n="targetVideo",s=300,l="https://ib.adnxs.com/ut/v3/prebid",o="https://pbs.prebrid.tv/openrtb2/auction",u=["api","linearity","maxduration","mimes","minduration","plcmt","playbackmethod","protocols","startdelay"]}}]);
|
package/dist/teadsBidAdapter.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[28746],{27454:(e,t,r)=>{var n=r(7873),i=r(91069),o=r(70433),a=r(57377),s=r(12938),d=r(72285);const c="teads",p=12,u=11,l=0,g=22,m=(0,s.vM)({bidderCode:c}),y={code:c,gvlid:132,supportedMediaTypes:["video","banner"],isBidRequestValid:function(e){let t=!1;if(void 0!==e.params){let r=w((0,i.getValue)(e.params,"placementId")),n=w((0,i.getValue)(e.params,"pageId"));t=r&&n}return t||(0,i.logError)("Teads placementId and pageId parameters are required. Bid aborted."),t},buildRequests:function(e,t){const r=e.map(b),n=window.top,i={referrer:f(t),pageReferrer:document.referrer,pageTitle:v().slice(0,300),pageDescription:h().slice(0,300),networkBandwidth:(a=window.navigator,a&&a.connection&&a.connection.downlink>=0?a.connection.downlink.toString():""),timeToFirstByte:S(window),data:r,deviceWidth:screen.width,deviceHeight:screen.height,devicePixelRatio:n.devicePixelRatio,screenOrientation:screen.orientation?.type,historyLength:n.history?.length,viewportHeight:n.visualViewport?.height,viewportWidth:n.visualViewport?.width,hardwareConcurrency:n.navigator?.hardwareConcurrency,deviceMemory:n.navigator?.deviceMemory,hb_version:"9.
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[28746],{27454:(e,t,r)=>{var n=r(7873),i=r(91069),o=r(70433),a=r(57377),s=r(12938),d=r(72285);const c="teads",p=12,u=11,l=0,g=22,m=(0,s.vM)({bidderCode:c}),y={code:c,gvlid:132,supportedMediaTypes:["video","banner"],isBidRequestValid:function(e){let t=!1;if(void 0!==e.params){let r=w((0,i.getValue)(e.params,"placementId")),n=w((0,i.getValue)(e.params,"pageId"));t=r&&n}return t||(0,i.logError)("Teads placementId and pageId parameters are required. Bid aborted."),t},buildRequests:function(e,t){const r=e.map(b),n=window.top,i={referrer:f(t),pageReferrer:document.referrer,pageTitle:v().slice(0,300),pageDescription:h().slice(0,300),networkBandwidth:(a=window.navigator,a&&a.connection&&a.connection.downlink>=0?a.connection.downlink.toString():""),timeToFirstByte:S(window),data:r,deviceWidth:screen.width,deviceHeight:screen.height,devicePixelRatio:n.devicePixelRatio,screenOrientation:screen.orientation?.type,historyLength:n.history?.length,viewportHeight:n.visualViewport?.height,viewportWidth:n.visualViewport?.width,hardwareConcurrency:n.navigator?.hardwareConcurrency,deviceMemory:n.navigator?.deviceMemory,hb_version:"9.6.0",...I(e),...A(e)};var a;const s=e[0];s.schain&&(i.schain=s.schain);let d=t.gppConsent;if(t&&d){let e="string"==typeof d.gppString,t=Array.isArray(d.applicableSections)&&d.applicableSections.every((e=>"number"==typeof e));i.gpp={consentString:e?d.gppString:"",applicableSectionIds:t?d.applicableSections:[]}}let c=t.gdprConsent;if(t&&c){let e="boolean"==typeof c.gdprApplies,t="string"==typeof c.consentString,r=e?function(e,t){let r=p;e?t&&!t.isServiceSpecific&&(r=u):r=l;return r}(c.gdprApplies,c.vendorData):g;i.gdpr_iab={consent:t?c.consentString:"",status:r,apiVersion:c.apiVersion}}t&&t.uspConsent&&(i.us_privacy=t.uspConsent);const m=(0,o.A)(s,"ortb2.device.sua");m&&(i.userAgentClientHints=m);const y=(0,o.A)(t,"ortb2.regs.ext.dsa");y&&(i.dsa=y);return{method:"POST",url:"https://a.teads.tv/hb/bid-request",data:JSON.stringify(i)}},interpretResponse:function(e,t){if(!(e=e.body).responses)return[];const r=(0,d.T)();return e.responses.filter((e=>!e.needAutoplay||r)).map((e=>{const t={cpm:e.cpm,width:e.width,height:e.height,currency:e.currency,netRevenue:!0,ttl:e.ttl,meta:{advertiserDomains:e&&e.adomain?e.adomain:[]},ad:e.ad,requestId:e.bidId,creativeId:e.creativeId,placementId:e.placementId};return e.dealId&&(t.dealId=e.dealId),e?.ext?.dsa&&(t.meta.dsa=e.ext.dsa),t}))}};function I(e){const t={unifiedId2:"uid2.id",liveRampId:"idl_env",lotamePanoramaId:"lotamePanoramaId",id5Id:"id5id.uid",criteoId:"criteoId",yahooConnectId:"connectId",quantcastId:"quantcastId",epsilonPublisherLinkId:"publinkId",publisherFirstPartyViewerId:"pubcid",merkleId:"merkleId.id",kinessoId:"kpuid"};let r={};for(const n in t){const i=t[n],a=(0,o.A)(e,`0.userId.${i}`);a&&(r[n]=a)}return r}function f(e){let t="";return e&&e.refererInfo&&e.refererInfo.page&&(t=e.refererInfo.page),t}function v(){try{const e=window.top.document.querySelector('meta[property="og:title"]');return window.top.document.title||e&&e.content||""}catch(e){const t=document.querySelector('meta[property="og:title"]');return document.title||t&&t.content||""}}function h(){let e;try{e=window.top.document.querySelector('meta[name="description"]')||window.top.document.querySelector('meta[property="og:description"]')}catch(t){e=document.querySelector('meta[name="description"]')||document.querySelector('meta[property="og:description"]')}return e&&e.content||""}function S(e){const t=e.performance||e.webkitPerformance||e.msPerformance||e.mozPerformance,r=t&&"function"==typeof t.getEntriesByType&&"[object Function]"===Object.prototype.toString.call(t.getEntriesByType)&&t.getEntriesByType("navigation")[0]&&t.getEntriesByType("navigation")[0].responseStart&&t.getEntriesByType("navigation")[0].requestStart&&t.getEntriesByType("navigation")[0].responseStart>0&&t.getEntriesByType("navigation")[0].requestStart>0&&Math.round(t.getEntriesByType("navigation")[0].responseStart-t.getEntriesByType("navigation")[0].requestStart);if(r)return r.toString();const n=t&&t.timing.responseStart&&t.timing.requestStart&&t.timing.responseStart>0&&t.timing.requestStart>0&&t.timing.responseStart-t.timing.requestStart;return n?n.toString():""}function b(e){const t={};let r=(0,i.getValue)(e.params,"placementId"),n=(0,i.getValue)(e.params,"pageId");const a=(0,o.A)(e,"ortb2Imp.ext.gpid"),s=(0,o.A)(e,"mediaTypes.video.plcmt");return t.sizes=function(e){return(0,i.parseSizesInput)(function(e){let t=(0,o.A)(e,"mediaTypes.video.playerSize"),r=(0,o.A)(e,"mediaTypes.video.sizes"),n=(0,o.A)(e,"mediaTypes.banner.sizes");if((0,i.isArray)(n)||(0,i.isArray)(t)||(0,i.isArray)(r)){return[n,r,t].reduce((function(e,t){return(0,i.isArray)(t)&&((0,i.isArray)(t[0])?t.forEach((function(t){e.push(t)})):e.push(t)),e}),[])}return e.sizes}(e))}(e),t.bidId=(0,i.getBidIdParameter)("bidId",e),t.bidderRequestId=(0,i.getBidIdParameter)("bidderRequestId",e),t.placementId=parseInt(r,10),t.pageId=parseInt(n,10),t.adUnitCode=(0,i.getBidIdParameter)("adUnitCode",e),t.transactionId=e.ortb2Imp?.ext?.tid||"",a&&(t.gpid=a),s&&(t.videoPlcmt=s),t}function w(e){return parseInt(e)>0}function A(e){const t=(0,o.A)(e,"0.userId.teadsId");if(t)return{firstPartyCookieTeadsId:t};if(m.cookiesAreEnabled(null)){const e=m.getCookie("_tfpvi",null);if(e)return{firstPartyCookieTeadsId:e}}return{}}(0,a.a$)(y),(0,n.E)("teadsBidAdapter")}},e=>{e.O(0,[42809,60802,51085],(()=>{return t=27454,e(e.s=t);var t}));e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[52023],{18433:(e,r,t)=>{var n=t(7873),i=t(91069),o=t(70433),s=t(57377),a=t(71371);const
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[52023],{18433:(e,r,t)=>{var n=t(7873),i=t(91069),o=t(70433),s=t(57377),a=t(71371),d=t(37668);const p="tremorhub.com",l=`ads.${p}/ad/tag`,c=`events.${p}/diag`,u={code:"telaria",gvlid:202,aliases:[{code:"tremor",gvlid:202},{code:"tremorvideo",gvlid:202}],supportedMediaTypes:[a.G_],isBidRequestValid:function(e){return!!(e&&e.params&&e.params.adCode&&e.params.supplyCode)},buildRequests:function(e,r){let t=[];return e.forEach((e=>{let n=function(e,r){let t,n,s=(0,o.A)(e,"mediaTypes.video.playerSize");s||(0,i.logWarn)("Although player size isn't required it is highly recommended");s&&(!(0,i.isArray)(s)||2!==s.length||isNaN(s[0])||isNaN(s[1])?"object"==typeof s&&(t=s[0][0],n=s[0][1]):(t=s[0],n=s[1]));let a=(0,o.A)(e,"params.supplyCode"),d=(0,o.A)(e,"params.adCode");if(a&&d){let i=`https://${a}.${l}?adCode=${d}`;t&&(i+=`&playerWidth=${t}`),n&&(i+=`&playerHeight=${n}`);const o=Object.assign({srcPageUrl:m()},e.params);return delete o.adCode,i+=`${h(o,e.schain)}`,i+=`&transactionId=${e.ortb2Imp?.ext?.tid}`,r&&(r.gdprConsent&&("boolean"==typeof r.gdprConsent.gdprApplies&&(i+="&gdpr="+(r.gdprConsent.gdprApplies?1:0)),r.gdprConsent.consentString&&(i+=`&gdpr_consent=${r.gdprConsent.consentString}`)),r.refererInfo&&r.refererInfo.page&&(i+=`&referrer=${encodeURIComponent(r.refererInfo.page)}`)),i+"&hb=1&fmt=json"}}(e,r);n&&t.push({method:"GET",url:n,bidId:e.bidId,vastUrl:n.split("&fmt=json")[0]})})),t},interpretResponse:function(e,r){let t,n,o,s=[];try{t=e.body,r.url.split("&").forEach((e=>{let r=e.toLowerCase();r.indexOf("player")>-1&&(r.indexOf("width")>-1?n=e.split("=")[1]:r.indexOf("height")>-1&&(o=e.split("=")[1]))}))}catch(e){(0,i.logError)(e),n=0,o=0}if(!t||t.error){let e=`in response for ${r.bidderCode} adapter`;t&&t.error&&(e+=`: ${t.error}`),(0,i.logError)(e)}else(0,i.isEmpty)(t.seatbid)||t.seatbid[0].bid.forEach((e=>{e&&s.push(function(e,r,t,n){const i={requestId:e.bidId,cpm:r.price,creativeId:r.crid||"-1",vastXml:r.adm,vastUrl:e.vastUrl,mediaType:"video",width:t,height:n,currency:"USD",netRevenue:!0,ttl:300,ad:r.adm,meta:{}};r.adomain&&r.adomain.length>0&&(i.meta.advertiserDomains=r.adomain);return i}(r,e,n,o))}));return s},getUserSyncs:function(e,r){const t=[];return e.pixelEnabled&&r.length&&((0,o.A)(r,"0.body.ext.telaria.userSync")||[]).forEach((e=>t.push({type:"image",url:e}))),t},onTimeout:function(e){let r=f(e);r&&(0,i.triggerPixel)(r)}};function m(){return encodeURIComponent(document.location.href)}function h(e,r){let t="";if(!(0,i.isEmpty)(e)){for(let r in e)"schain"!==r&&e.hasOwnProperty(r)&&!(0,i.isEmpty)(e[r])&&(t+=`&${r}=${e[r]}`);t+=(0,d.$h)((0,i.isEmpty)(r)?e.schain:r)}return t}const f=function(e){let r=(0,o.A)(e,"0.params.0");if(!(0,i.isEmpty)(r)){let e=`https://${c}`;return r=Object.assign({srcPageUrl:m()},r),e+=`${h(r)}`,e+="&hb=1&evt=TO",e}};(0,s.a$)(u),(0,n.E)("telariaBidAdapter")}},e=>{e.O(0,[12183,60802,51085],(()=>{return r=18433,e(e.s=r);var r}));e.O()}]);
|
package/dist/teqblazeUtils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[49136],{75674:(e,t,n)=>{n.d(t,{$d:()=>d,pq:()=>
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[49136],{75674:(e,t,n)=>{n.d(t,{$d:()=>d,pq:()=>h,rz:()=>c,uM:()=>g,xO:()=>m,yS:()=>l,yY:()=>u});var r=n(71371),i=n(70433),a=n(43272);const o=/^[a-z0-9.+-]+:/i,s=e=>{if(!(e.requestId&&e.cpm&&e.creativeId&&e.ttl&&e.currency))return!1;switch(e.mediaType){case r.D4:return Boolean(e.width&&e.height&&e.ad);case r.G_:return Boolean(e.vastUrl||e.vastXml);case r.s6:return Boolean(e.native&&e.native.impressionTrackers&&e.native.impressionTrackers.length);default:return!1}},p=(e,t,n)=>{const{placementId:r,endpointId:i}=e.params;r?(n.placementId=r,n.type="publisher"):i&&(n.endpointId=i,n.type="network")},d=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["placementId","endpointId"],t=arguments.length>1?arguments[1]:void 0;return function(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{params:i,bidId:a,mediaTypes:o}=n;let s=Boolean(a&&i&&function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"some";for(let r=0;r<e.length;r++){const i=t[e[r]];if("some"===n&&i)return!0;if(!i)return!1}return"every"===n}(e,i,t));return s=o&&o[r.D4]?s&&Boolean(o[r.D4]&&o[r.D4].sizes):o&&o[r.G_]?s&&Boolean(o[r.G_]&&o[r.G_].playerSize):!(!o||!o[r.s6])&&(s&&Boolean(o[r.s6])),s}},l=e=>{const{adUrl:t,validBidRequests:n,bidderRequest:r}=e,a=e.placementProcessingFunction||h(),s=(0,i.A)(r,"ortb2.device"),p=(0,i.A)(r,"refererInfo.page",""),d=o.exec(p),l=d?.[0],c=[],g={deviceWidth:s?.w||0,deviceHeight:s?.h||0,language:s?.language?.split("-")[0]||"",secure:"https:"===l?1:0,host:(0,i.A)(r,"refererInfo.domain",""),page:p,placements:c,coppa:(0,i.A)(r,"ortb2.regs.coppa")?1:0,tmax:r.timeout};r.uspConsent&&(g.ccpa=r.uspConsent),r.gdprConsent&&(g.gdpr={consentString:r.gdprConsent.consentString}),r.gppConsent?(g.gpp=r.gppConsent.gppString,g.gpp_sid=r.gppConsent.applicableSections):r.ortb2?.regs?.gpp&&(g.gpp=r.ortb2.regs.gpp,g.gpp_sid=r.ortb2.regs.gpp_sid);const m=n.length;for(let e=0;e<m;e++){const t=n[e];c.push(a(t,r))}return{method:"POST",url:t,data:g}},c=e=>function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=h();return l({adUrl:e,validBidRequests:t,bidderRequest:n,placementProcessingFunction:r})};function g(){let{addtlBidValidation:e=(e=>!0)}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t){let n=[];for(let r=0;r<t.body.length;r++){let i=t.body[r];if(s(i)&&e(i)){const e=i.adomain&&i.adomain.length?i.adomain:[];i.meta={...i.meta,advertiserDomains:e},n.push(i)}}return n}}const m=g(),u=e=>(t,n,r,i,o)=>{const s=t.iframeEnabled?"iframe":"image";let p=e+`/${s}?pbjs=1`;r&&r.consentString&&("boolean"==typeof r.gdprApplies?p+=`&gdpr=${Number(r.gdprApplies)}&gdpr_consent=${r.consentString}`:p+=`&gdpr=0&gdpr_consent=${r.consentString}`),i&&i.consentString&&(p+=`&ccpa_consent=${i.consentString}`),o?.gppString&&o?.applicableSections?.length&&(p+="&gpp="+o.gppString,p+="&gpp_sid="+o.applicableSections.join(","));return p+=`&coppa=${a.$W.getConfig("coppa")?1:0}`,[{type:s,url:p}]},h=e=>(t,n)=>{const i=e?.addPlacementType??p,a=(e=>{const{bidId:t,mediaTypes:n,transactionId:i,userIdAsEids:a}=e,o=e.schain||{},s=(e=>{try{return e.getFloor({currency:"USD",mediaType:"*",size:"*"}).floor}catch(e){return 0}})(e),p={bidId:t,schain:o,bidfloor:s};return n&&n[r.D4]?(p.adFormat=r.D4,p.sizes=n[r.D4].sizes):n&&n[r.G_]?(p.adFormat=r.G_,p.playerSize=n[r.G_].playerSize,p.minduration=n[r.G_].minduration,p.maxduration=n[r.G_].maxduration,p.mimes=n[r.G_].mimes,p.protocols=n[r.G_].protocols,p.startdelay=n[r.G_].startdelay,p.placement=n[r.G_].placement,p.plcmt=n[r.G_].plcmt,p.skip=n[r.G_].skip,p.skipafter=n[r.G_].skipafter,p.minbitrate=n[r.G_].minbitrate,p.maxbitrate=n[r.G_].maxbitrate,p.delivery=n[r.G_].delivery,p.playbackmethod=n[r.G_].playbackmethod,p.api=n[r.G_].api,p.linearity=n[r.G_].linearity):n&&n[r.s6]&&(p.native=n[r.s6],p.adFormat=r.s6),i&&(p.ext=p.ext||{},p.ext.tid=i),a&&a.length&&(p.eids=a),p})(t);return i(t,n,a),e?.addCustomFieldsToPlacement&&e.addCustomFieldsToPlacement(t,n,a),a}}}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[18853],{18227:(e,t,i)=>{var n=i(7873),s=i(91069),a=i(68044),d=i(88910),r=i(11445),o=i(78969);let c,u,p={bids:[]};var m=Object.assign((0,d.Ay)({emptyUrl:"",analyticsType:"endpoint"}),{track(e){let{eventType:t,args:i}=e;void 0!==i&&(t===o.qY.BID_TIMEOUT?i.forEach((e=>{I(e,"timeout")})):t===o.qY.AUCTION_INIT?(p.auctionInit=i,u=i.timestamp):t===o.qY.BID_REQUESTED?function(e){let t=[];void 0!==e.bids&&e.bids.length&&e.bids.forEach((function(i){t.push({bidderCode:i.bidder,bidId:i.bidId,adUnitCode:i.adUnitCode,requestId:i.bidderRequestId,auctionId:i.auctionId,transactionId:i.transactionId,sizes:(0,s.parseSizesInput)(i.mediaTypes.banner.sizes).toString(),renderStatus:1,requestTimestamp:e.auctionStart})}));return t}(i).forEach((e=>{p.bids.push(e)})):t===o.qY.BID_RESPONSE?I(i,"response"):t===o.qY.BID_WON&&b({bidWon:I(i,"win")},"won")),t===o.qY.AUCTION_END&&b(p,"auctionEnd")}});function I(e,t){if("win"===t)return{bidderCode:e.bidder,bidId:e.requestId,adUnitCode:e.adUnitCode,auctionId:e.auctionId,creativeId:e.creativeId,transactionId:e.transactionId,currency:e.currency,cpm:e.cpm,netRevenue:e.netRevenue,renderedSize:e.size,mediaType:e.mediaType,statusMessage:e.statusMessage,status:e.status,renderStatus:4,timeToRespond:e.timeToRespond,requestTimestamp:e.requestTimestamp,responseTimestamp:e.responseTimestamp};{let i=p.bids.filter((t=>t.bidId===e.bidId||t.bidId===e.requestId))[0];Object.assign(i,{bidderCode:e.bidder,bidId:"timeout"===t?e.bidId:e.requestId,adUnitCode:e.adUnitCode,auctionId:e.auctionId,creativeId:e.creativeId,transactionId:e.transactionId,currency:e.currency,cpm:e.cpm,netRevenue:e.netRevenue,mediaType:e.mediaType,statusMessage:e.statusMessage,status:e.status,renderStatus:"timeout"===t?3:2,timeToRespond:e.timeToRespond,requestTimestamp:e.requestTimestamp,responseTimestamp:e.responseTimestamp})}}function b(e,t){let i=(0,s.getWindowLocation)();void 0!==e&&void 0!==e.auctionInit&&Object.assign(e.auctionInit,{host:i.host,path:i.pathname,search:i.search}),e.initOptions=c;let n=(0,s.buildUrl)({protocol:"https",hostname:c&&c.hostName||"us-central1-quikr-ebay.cloudfunctions.net",pathname:c&&c.pathName||"/prebid-analytics",search:{auctionTimestamp:u,terceptAnalyticsVersion:"v1.0.0",prebidVersion:"v9.
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[18853],{18227:(e,t,i)=>{var n=i(7873),s=i(91069),a=i(68044),d=i(88910),r=i(11445),o=i(78969);let c,u,p={bids:[]};var m=Object.assign((0,d.Ay)({emptyUrl:"",analyticsType:"endpoint"}),{track(e){let{eventType:t,args:i}=e;void 0!==i&&(t===o.qY.BID_TIMEOUT?i.forEach((e=>{I(e,"timeout")})):t===o.qY.AUCTION_INIT?(p.auctionInit=i,u=i.timestamp):t===o.qY.BID_REQUESTED?function(e){let t=[];void 0!==e.bids&&e.bids.length&&e.bids.forEach((function(i){t.push({bidderCode:i.bidder,bidId:i.bidId,adUnitCode:i.adUnitCode,requestId:i.bidderRequestId,auctionId:i.auctionId,transactionId:i.transactionId,sizes:(0,s.parseSizesInput)(i.mediaTypes.banner.sizes).toString(),renderStatus:1,requestTimestamp:e.auctionStart})}));return t}(i).forEach((e=>{p.bids.push(e)})):t===o.qY.BID_RESPONSE?I(i,"response"):t===o.qY.BID_WON&&b({bidWon:I(i,"win")},"won")),t===o.qY.AUCTION_END&&b(p,"auctionEnd")}});function I(e,t){if("win"===t)return{bidderCode:e.bidder,bidId:e.requestId,adUnitCode:e.adUnitCode,auctionId:e.auctionId,creativeId:e.creativeId,transactionId:e.transactionId,currency:e.currency,cpm:e.cpm,netRevenue:e.netRevenue,renderedSize:e.size,mediaType:e.mediaType,statusMessage:e.statusMessage,status:e.status,renderStatus:4,timeToRespond:e.timeToRespond,requestTimestamp:e.requestTimestamp,responseTimestamp:e.responseTimestamp};{let i=p.bids.filter((t=>t.bidId===e.bidId||t.bidId===e.requestId))[0];Object.assign(i,{bidderCode:e.bidder,bidId:"timeout"===t?e.bidId:e.requestId,adUnitCode:e.adUnitCode,auctionId:e.auctionId,creativeId:e.creativeId,transactionId:e.transactionId,currency:e.currency,cpm:e.cpm,netRevenue:e.netRevenue,mediaType:e.mediaType,statusMessage:e.statusMessage,status:e.status,renderStatus:"timeout"===t?3:2,timeToRespond:e.timeToRespond,requestTimestamp:e.requestTimestamp,responseTimestamp:e.responseTimestamp})}}function b(e,t){let i=(0,s.getWindowLocation)();void 0!==e&&void 0!==e.auctionInit&&Object.assign(e.auctionInit,{host:i.host,path:i.pathname,search:i.search}),e.initOptions=c;let n=(0,s.buildUrl)({protocol:"https",hostname:c&&c.hostName||"us-central1-quikr-ebay.cloudfunctions.net",pathname:c&&c.pathName||"/prebid-analytics",search:{auctionTimestamp:u,terceptAnalyticsVersion:"v1.0.0",prebidVersion:"v9.6.0"}});(0,a.RD)(n,void 0,JSON.stringify(e),{method:"POST",contentType:"text/plain"})}m.originEnableAnalytics=m.enableAnalytics,m.enableAnalytics=function(e){c=e.options,m.originEnableAnalytics(e)},r.Ay.registerAnalyticsAdapter({adapter:m,code:"tercept"});(0,n.E)("terceptAnalyticsAdapter")}},e=>{e.O(0,[2630,60802,51085],(()=>{return t=18227,e(e.s=t);var t}));e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[76346],{26318:(e,r,t)=>{var s=t(7873),n=t(91069),i=t(71371),d=t(57377);const o="themoneytizer",a={aliases:[o],code:o,supportedMediaTypes:[i.D4],gvlid:1265,isBidRequestValid:function(e){return!(!e||!e.params.pid)||((0,n.logWarn)("Invalid bid request - missing required bid params"),!1)},buildRequests:function(e,r){return e.map((e=>{const t={ext:e.ortb2Imp.ext,params:e.params,size:e.mediaTypes,adunit:e.adUnitCode,request_id:e.bidId,timeout:r.timeout,ortb2:r.ortb2,eids:e.userIdAsEids,id:e.auctionId,schain:e.schain,version:"9.
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[76346],{26318:(e,r,t)=>{var s=t(7873),n=t(91069),i=t(71371),d=t(57377);const o="themoneytizer",a={aliases:[o],code:o,supportedMediaTypes:[i.D4],gvlid:1265,isBidRequestValid:function(e){return!(!e||!e.params.pid)||((0,n.logWarn)("Invalid bid request - missing required bid params"),!1)},buildRequests:function(e,r){return e.map((e=>{const t={ext:e.ortb2Imp.ext,params:e.params,size:e.mediaTypes,adunit:e.adUnitCode,request_id:e.bidId,timeout:r.timeout,ortb2:r.ortb2,eids:e.userIdAsEids,id:e.auctionId,schain:e.schain,version:"9.6.0",excl_sync:window.tmzrBidderExclSync},s=e.params.baseUrl||"https://ads.biddertmz.com/m/";return r&&r.refererInfo&&(t.referer=r.refererInfo.topmostLocation,t.referer_canonical=r.refererInfo.canonicalUrl),r&&r.gdprConsent&&(t.consent_string=r.gdprConsent.consentString,t.consent_required=r.gdprConsent.gdprApplies),e.params.test&&(t.test=e.params.test),t.userEids=e.userIdAsEids||[],{method:"POST",url:s,data:JSON.stringify(t)}}))},interpretResponse:function(e,r){const t=[],s=e.body;return s&&s.bid&&!s.timeout&&s.bid.ad&&t.push(s.bid),t},getUserSyncs:function(e,r){if(!e.iframeEnabled&&!e.pixelEnabled)return[];let t=[];return r.map((e=>{e.body.c_sync&&e.body.c_sync.bidder_status.map((e=>{"redirect"===e.usersync.type&&(e.usersync.type="image"),t.push(e.usersync)}))})),t},onTimeout:function(e){(0,n.logInfo)("The Moneytizer - Timeout from adapter",e)}};(0,d.a$)(a),(0,s.E)("themoneytizerBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return r=26318,e(e.s=r);var r}));e.O()}]);
|
package/dist/trionBidAdapter.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[60867],{54469:(e,n,t)=>{var r=t(7873),i=t(91069),a=t(57377),d=t(12938),s=t(76568);const o="trion",p="_trion_",c=(0,d.vM)({bidderCode:o}),u={code:o,isBidRequestValid:function(e){return!!(e&&e.params&&e.params.pubId&&e.params.sectionId)},buildRequests:function(e,n){for(var t=[],r=0;r<e.length;r++){var i=e[r],a=m(i,n);t.push({method:"GET",url:"https://in-appadvertising.com/api/bidRequest",bidRequest:i,data:a})}return t},interpretResponse:function(e,n){var t={},r=[],i=n.bidRequest,a=e?e.body:{};if(a&&a.bidId&&i){var d=a.result;if(d&&d.cpm&&d.placeBid&&d.ad){var s=parseInt(d.cpm,10)/100;t.requestId=i.bidId,t.cpm=s,t.ad=d.ad,t.width=d.width,t.height=d.height,t.ttl=d.ttl,t.creativeId=d.creativeId,t.currency=d.currency,t.netRevenue=d.netRevenue,d.adomain&&(t.meta={advertiserDomains:d.adomain}),r.push(t)}}return r},getUserSyncs:function(e,n,t,r){if(e.iframeEnabled)return function(){try{window.addEventListener&&window.addEventListener("message",f)}catch(e){}}(),[{type:"iframe",url:v(t,r)}]}};function v(e,n){var t=(g(p+"lps")||":").split(":")||[],r=t[0]||-1,i=t[1]||-1,a=l(),d="";return e&&(e.consentString&&(d+="&gc="+encodeURIComponent(e.consentString)),d+="&g="+(e.gdprApplies?1:0)),n&&(d="&up="+encodeURIComponent(n)),`https://in-appadvertising.com/api/userSync.html?p=${r}&s=${i}${d}&u=${a}`}function l(){var e="";try{if(window.top==window)e=window.location.href;else try{e=window.top.location.href}catch(n){e=document.referrer}}catch(e){}return e}function m(e,n){var t=(0,i.getBidIdParameter)("pubId",e.params),r=(0,i.getBidIdParameter)("sectionId",e.params),a=l(),d=function(e){return e.mediaTypes&&e.mediaTypes.banner&&e.mediaTypes.banner.sizes?e.mediaTypes.banner.sizes:e.sizes}(e),o=(0,i.parseSizesInput)(d).join(","),c=navigator&&navigator.webdriver?"1":"0",u=document.hidden?"1":"0",v=encodeURIComponent(document.visibilityState),m=window.TR_INT_T&&-1!=window.TR_INT_T?window.TR_INT_T:null;m||(m=g(p+"int_t")),m&&I(p+"int_t",m),I(p+"lps",t+":"+r);var f="";if(f=(0,s.v)(f,"bidId",e.bidId),f=(0,s.v)(f,"pubId",t),f=(0,s.v)(f,"sectionId",r),f=(0,s.v)(f,"vers","9.
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[60867],{54469:(e,n,t)=>{var r=t(7873),i=t(91069),a=t(57377),d=t(12938),s=t(76568);const o="trion",p="_trion_",c=(0,d.vM)({bidderCode:o}),u={code:o,isBidRequestValid:function(e){return!!(e&&e.params&&e.params.pubId&&e.params.sectionId)},buildRequests:function(e,n){for(var t=[],r=0;r<e.length;r++){var i=e[r],a=m(i,n);t.push({method:"GET",url:"https://in-appadvertising.com/api/bidRequest",bidRequest:i,data:a})}return t},interpretResponse:function(e,n){var t={},r=[],i=n.bidRequest,a=e?e.body:{};if(a&&a.bidId&&i){var d=a.result;if(d&&d.cpm&&d.placeBid&&d.ad){var s=parseInt(d.cpm,10)/100;t.requestId=i.bidId,t.cpm=s,t.ad=d.ad,t.width=d.width,t.height=d.height,t.ttl=d.ttl,t.creativeId=d.creativeId,t.currency=d.currency,t.netRevenue=d.netRevenue,d.adomain&&(t.meta={advertiserDomains:d.adomain}),r.push(t)}}return r},getUserSyncs:function(e,n,t,r){if(e.iframeEnabled)return function(){try{window.addEventListener&&window.addEventListener("message",f)}catch(e){}}(),[{type:"iframe",url:v(t,r)}]}};function v(e,n){var t=(g(p+"lps")||":").split(":")||[],r=t[0]||-1,i=t[1]||-1,a=l(),d="";return e&&(e.consentString&&(d+="&gc="+encodeURIComponent(e.consentString)),d+="&g="+(e.gdprApplies?1:0)),n&&(d="&up="+encodeURIComponent(n)),`https://in-appadvertising.com/api/userSync.html?p=${r}&s=${i}${d}&u=${a}`}function l(){var e="";try{if(window.top==window)e=window.location.href;else try{e=window.top.location.href}catch(n){e=document.referrer}}catch(e){}return e}function m(e,n){var t=(0,i.getBidIdParameter)("pubId",e.params),r=(0,i.getBidIdParameter)("sectionId",e.params),a=l(),d=function(e){return e.mediaTypes&&e.mediaTypes.banner&&e.mediaTypes.banner.sizes?e.mediaTypes.banner.sizes:e.sizes}(e),o=(0,i.parseSizesInput)(d).join(","),c=navigator&&navigator.webdriver?"1":"0",u=document.hidden?"1":"0",v=encodeURIComponent(document.visibilityState),m=window.TR_INT_T&&-1!=window.TR_INT_T?window.TR_INT_T:null;m||(m=g(p+"int_t")),m&&I(p+"int_t",m),I(p+"lps",t+":"+r);var f="";if(f=(0,s.v)(f,"bidId",e.bidId),f=(0,s.v)(f,"pubId",t),f=(0,s.v)(f,"sectionId",r),f=(0,s.v)(f,"vers","9.6.0"),a&&(f+="url="+a+"&"),o&&(f+="sizes="+o+"&"),m&&(f=(0,s.v)(f,"int_t",encodeURIComponent(m))),f=(0,s.v)(f,"tr_wd",c),f=(0,s.v)(f,"tr_hd",u),f=(0,s.v)(f,"tr_vs",v),n&&n.gdprConsent){var h=n.gdprConsent;h&&(h.consentString&&(f=(0,s.v)(f,"gdprc",encodeURIComponent(h.consentString))),f=(0,s.v)(f,"gdpr",h.gdprApplies?1:0))}return n&&n.uspConsent&&(f=(0,s.v)(f,"usp",encodeURIComponent(n.uspConsent))),f.lastIndexOf("&")===f.length-1&&(f=f.substring(0,f.length-1)),f}function g(e){var n=null;try{c.hasLocalStorage()&&(n=c.getDataFromLocalStorage(e))}catch(e){}return n}function I(e,n){try{c.hasLocalStorage()&&c.setDataInLocalStorage(e,n)}catch(e){}}function f(e){var n=e.data||"";if(n.indexOf&&n.split&&0===n.indexOf(p+"userId")){var t=n.split(p+"userId=")[1];t&&I(p+"int_t",t)}}(0,a.a$)(u),(0,r.E)("trionBidAdapter")}},e=>{e.O(0,[14577,60802,51085],(()=>{return n=54469,e(e.s=n);var n}));e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[98282],{26504:(e,t,r)=>{var n=r(7873),i=r(70433),o=r(91069),a=r(71371),s=r(57377),p=r(43272),d=r(12938),l=r(76568);const u="triplelift";let c=null,m=null;const f=(0,d.vM)({bidderCode:u}),g={gvlid:28,code:u,supportedMediaTypes:[a.D4,a.G_],isBidRequestValid:function(e){return void 0!==e.params.inventoryCode},buildRequests:function(e,t){let r="https://tlx.3lift.com/header/auction?",n=function(e,t){let r={},{schain:n}=e[0];const a=function(e){const t={},r={},n={},i=e.ortb2||{},a=function(){const e=f.getDataFromLocalStorage("opecloud_ctx");if(!e)return null;try{return JSON.parse(e)}catch(e){return(0,o.logError)("Triplelift: error parsing JSON: ",e),null}}(),s=Object.assign({},i.site),p=Object.assign({},i.user);if(a){p.data=p.data||[];try{p.data.push({name:"www.1plusx.com",ext:a})}catch(e){(0,o.logError)("Triplelift: error adding 1plusX segments: ",e)}}x(r,s),x(n,p),(0,o.isEmpty)(r)||(t.context=r);(0,o.isEmpty)(n)||(t.user=n);return t}(t);r.imp=e.map((function(e,t){let r={id:t,tagid:e.params.inventoryCode,floor:h(e)};return b(e)&&(r.video=function(e){let t={...e.params.video,...e.mediaTypes.video};try{t.w||(t.w=t.playerSize[0][0]),t.h||(t.h=t.playerSize[0][1])}catch(e){(0,o.logWarn)("Video size not defined",e)}t.playbackmethod&&Number.isInteger(t.playbackmethod)&&(t.playbackmethod=Array.from(String(t.playbackmethod),Number));return delete t.playerSize,t}(e)),e.mediaTypes.banner&&!y(e)&&(r.banner={format:_(e.sizes)}),(0,o.isEmpty)(e.ortb2Imp)||(r.fpd=function(e){const t={},r={};x(r,e.ext),(0,o.isEmpty)(r)||(t.context=r);return t}(e.ortb2Imp),(0,o.isEmpty)(e.ortb2Imp.ext)||(r.ext={...e.ortb2Imp.ext})),r}));let s=[];e[0].userIdAsEids&&(s=i.A(e[0],"userIdAsEids"),r.user={ext:{eids:s}});let p=function(e,t){let r={};(0,o.isEmpty)(e)||(r.schain={...e});(0,o.isEmpty)(t)||(r.fpd={...t});return r}(n,a);(0,o.isEmpty)(p)||(r.ext=p);t?.ortb2?.regs?.gpp&&(r.regs=Object.assign({},t.ortb2.regs));t?.ortb2&&(r.ext.ortb2=Object.assign({},t.ortb2));return r}(e,t);if(r=(0,l.v)(r,"lib","prebid"),r=(0,l.v)(r,"v","9.
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[98282],{26504:(e,t,r)=>{var n=r(7873),i=r(70433),o=r(91069),a=r(71371),s=r(57377),p=r(43272),d=r(12938),l=r(76568);const u="triplelift";let c=null,m=null;const f=(0,d.vM)({bidderCode:u}),g={gvlid:28,code:u,supportedMediaTypes:[a.D4,a.G_],isBidRequestValid:function(e){return void 0!==e.params.inventoryCode},buildRequests:function(e,t){let r="https://tlx.3lift.com/header/auction?",n=function(e,t){let r={},{schain:n}=e[0];const a=function(e){const t={},r={},n={},i=e.ortb2||{},a=function(){const e=f.getDataFromLocalStorage("opecloud_ctx");if(!e)return null;try{return JSON.parse(e)}catch(e){return(0,o.logError)("Triplelift: error parsing JSON: ",e),null}}(),s=Object.assign({},i.site),p=Object.assign({},i.user);if(a){p.data=p.data||[];try{p.data.push({name:"www.1plusx.com",ext:a})}catch(e){(0,o.logError)("Triplelift: error adding 1plusX segments: ",e)}}x(r,s),x(n,p),(0,o.isEmpty)(r)||(t.context=r);(0,o.isEmpty)(n)||(t.user=n);return t}(t);r.imp=e.map((function(e,t){let r={id:t,tagid:e.params.inventoryCode,floor:h(e)};return b(e)&&(r.video=function(e){let t={...e.params.video,...e.mediaTypes.video};try{t.w||(t.w=t.playerSize[0][0]),t.h||(t.h=t.playerSize[0][1])}catch(e){(0,o.logWarn)("Video size not defined",e)}t.playbackmethod&&Number.isInteger(t.playbackmethod)&&(t.playbackmethod=Array.from(String(t.playbackmethod),Number));return delete t.playerSize,t}(e)),e.mediaTypes.banner&&!y(e)&&(r.banner={format:_(e.sizes)}),(0,o.isEmpty)(e.ortb2Imp)||(r.fpd=function(e){const t={},r={};x(r,e.ext),(0,o.isEmpty)(r)||(t.context=r);return t}(e.ortb2Imp),(0,o.isEmpty)(e.ortb2Imp.ext)||(r.ext={...e.ortb2Imp.ext})),r}));let s=[];e[0].userIdAsEids&&(s=i.A(e[0],"userIdAsEids"),r.user={ext:{eids:s}});let p=function(e,t){let r={};(0,o.isEmpty)(e)||(r.schain={...e});(0,o.isEmpty)(t)||(r.fpd={...t});return r}(n,a);(0,o.isEmpty)(p)||(r.ext=p);t?.ortb2?.regs?.gpp&&(r.regs=Object.assign({},t.ortb2.regs));t?.ortb2&&(r.ext.ortb2=Object.assign({},t.ortb2));return r}(e,t);if(r=(0,l.v)(r,"lib","prebid"),r=(0,l.v)(r,"v","9.6.0"),t&&t.refererInfo){let e=t.refererInfo.page;r=(0,l.v)(r,"referrer",e)}return t&&t.timeout&&(r=(0,l.v)(r,"tmax",t.timeout)),t&&t.gdprConsent&&(c=void 0===t.gdprConsent.gdprApplies||t.gdprConsent.gdprApplies,r=(0,l.v)(r,"gdpr",c.toString()),void 0!==t.gdprConsent.consentString&&(m=t.gdprConsent.consentString,r=(0,l.v)(r,"cmp_cs",m))),t&&t.uspConsent&&(r=(0,l.v)(r,"us_privacy",t.uspConsent)),t?.paapi?.enabled&&(r=(0,l.v)(r,"fledge",t.paapi.enabled)),!0===p.$W.getConfig("coppa")&&(r=(0,l.v)(r,"coppa",!0)),r.lastIndexOf("&")===r.length-1&&(r=r.substring(0,r.length-1)),(0,o.logMessage)("tlCall request built: "+r),{method:"POST",url:r,data:n,bidderRequest:t}},interpretResponse:function(e,t){let{bidderRequest:r}=t,n=e.body.bids||[];const i=e.body.paapi||[];if(n=n.map((e=>function(e,t){let r={},n=t.width||1,i=t.height||1,o=t.deal_id||"",a=t.crid||"",s=e.bids[t.imp_id];0!=t.cpm&&t.ad&&(r={requestId:s.bidId,cpm:t.cpm,width:n,height:i,netRevenue:!0,ad:t.ad,creativeId:a,dealId:o,currency:"USD",ttl:300,tl_source:t.tl_source,meta:{}},b(s)&&"video"===t.media_type&&(r.vastXml=t.ad,r.mediaType="video",r.ttl=3600),t.advertiser_name&&(r.meta.advertiserName=t.advertiser_name),t.adomain&&t.adomain.length&&(r.meta.advertiserDomains=t.adomain),t.tl_source&&"hdx"==t.tl_source&&(b(s)&&"video"===t.media_type?r.meta.mediaType="video":r.meta.mediaType="banner"),t.tl_source&&"tlx"==t.tl_source&&(r.meta.mediaType="native"),a&&(r.meta.networkId=a.slice(0,a.indexOf("_"))));return r}(r,e))),i.length>0){const e=i.map((e=>({bidId:r.bids[e.imp_id].bidId,config:e.auctionConfig})));return(0,o.logMessage)("Response with FLEDGE:",{bids:n,fledgeAuctionConfigs:e}),{bids:n,paapi:e}}return n},getUserSyncs:function(e,t,r,n,i){let o=function(e){if(!e)return;if(e.iframeEnabled)return"iframe";if(e.pixelEnabled)return"image"}(e);if(!o)return;let a="https://eb2.3lift.com/sync?";return"image"===o&&(a=(0,l.v)(a,"px",1),a=(0,l.v)(a,"src","prebid")),(null!==m||c)&&(a=(0,l.v)(a,"gdpr",c),a=(0,l.v)(a,"cmp_cs",m)),n&&(a=(0,l.v)(a,"us_privacy",n)),i&&(i.gppString&&(a=(0,l.v)(a,"gpp",i.gppString)),i.applicableSections&&0!==i.applicableSections.length&&(a=(0,l.v)(a,"gpp_sid",i.applicableSections.filter((e=>Number.isInteger(e))).join(",")))),[{type:o,url:a}]}};function b(e){return v(e)&&(y(e)||function(e){return v(e)&&"outstream"===e.mediaTypes.video.context.toLowerCase()}(e))}function y(e){return v(e)&&"instream"===e.mediaTypes.video.context.toLowerCase()}function v(e){return e.mediaTypes.video&&e.mediaTypes.video.context}function h(e){let t=null;if("function"==typeof e.getFloor)try{const r=e.getFloor({currency:"USD",mediaType:b(e)?"video":"banner",size:"*"});"object"!=typeof r||"USD"!==r.currency||isNaN(parseFloat(r.floor))||(t=parseFloat(r.floor))}catch(e){(0,o.logError)("Triplelift: getFloor threw an error: ",e)}return null!==t?t:e.params.floor}function x(e,t){(0,o.isEmpty)(t)||Object.keys(t).forEach((r=>{null!=t[r]&&(e[r]=t[r])}))}function _(e){return e.filter(E).map((function(e){return{w:e[0],h:e[1]}}))}function E(e){return 2===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]}(0,s.a$)(g),(0,n.E)("tripleliftBidAdapter")}},e=>{e.O(0,[14577,60802,51085],(()=>{return t=26504,e(e.s=t);var t}));e.O()}]);
|
package/dist/ttdBidAdapter.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[94183],{63429:(e,r,t)=>{var i=t(7873),a=t(63172),s=t(91069),n=t(70433),o=t(43272),p=t(57377),d=t(71371);const u="ttd",m=1,c=2;function l(e){return{ttdprebid:{ver:"TTD-PREBID-2023.09.05",pbjs:"9.
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[94183],{63429:(e,r,t)=>{var i=t(7873),a=t(63172),s=t(91069),n=t(70433),o=t(43272),p=t(57377),d=t(71371);const u="ttd",m=1,c=2;function l(e){return{ttdprebid:{ver:"TTD-PREBID-2023.09.05",pbjs:"9.6.0",keywords:e.site?.keywords?e.site.keywords.split(",").map((e=>e.trim())):[]}}}function g(e){let r={};return e.gdprConsent&&"boolean"==typeof e.gdprConsent.gdprApplies&&a.J(r,"ext.gdpr",e.gdprConsent.gdprApplies?1:0),e.uspConsent&&a.J(r,"ext.us_privacy",e.uspConsent),!0===o.$W.getConfig("coppa")&&(r.coppa=1),e.ortb2?.regs&&s.mergeDeep(r,e.ortb2.regs),r}function b(e,r){let t={tid:r?.ortb2?.source?.tid};return e[0].schain&&a.J(t,"ext.schain",e[0].schain),t}function f(e){const r=navigator.language||navigator.browserLanguage||navigator.userLanguage||navigator.systemLanguage;let t={ua:navigator.userAgent,dnt:s.getDNT()?1:0,language:r,connectiontype:y()};return s.mergeDeep(t,e.device),t}function y(){const e=navigator.connection||navigator.webkitConnection;if(!e)return 0;switch(e.type){case"ethernet":return 1;case"wifi":return 2;case"cellular":switch(e.effectiveType){case"slow-2g":case"2g":return 4;case"3g":return 5;case"4g":return 6;default:return 3}default:return 0}}function h(e,r){let t={};e.gdprConsent&&a.J(t,"ext.consent",e.gdprConsent.consentString),s.isStr(n.A(e,"bids.0.userId.tdid"))&&(t.buyeruid=e.bids[0].userId.tdid);var i=n.A(e,"bids.0.userIdAsEids");return i&&i.length&&a.J(t,"ext.eids",i),s.mergeDeep(t,r.user),t}function v(e,r){var t=s.mergeDeep({page:n.A(e,"refererInfo.page"),ref:n.A(e,"refererInfo.ref"),publisher:{id:n.A(e,"bids.0.params.publisherId")}},r.site),i=e.refererInfo.domain;return i&&a.J(t,"publisher.domain",i),t}function I(e){let r={id:e.bidId};const t=n.A(e,"ortb2Imp.ext.gpid")||e.params.placementId;t&&(r.tagid=t);const i=n.A(e,"mediaTypes.video");let a={};n.A(e,"mediaTypes.banner")&&(a[d.D4]=function(e){const r=function(e){const r=s.parseSizesInput(e).filter((e=>e)).map((e=>e.split("x"))).map((e=>({width:parseInt(e[0]),height:parseInt(e[1])})));return r}(e.mediaTypes.banner.sizes).map((e=>({w:e.width,h:e.height}))),t=parseInt(n.A(e,"mediaTypes.banner.pos")),i=n.A(e,"params.banner.expdir");let a={};t&&(a.pos=t);i&&Array.isArray(i)&&(a.expdir=i);const o=Object.assign({w:r[0].w,h:r[0].h,format:r},a),p=n.A(e,"ortb2Imp.battr");p&&(o.battr=p);return o}(e)),i&&(a[d.G_]=function(e){{let r=n.A(e,"mediaTypes.video.minduration");const t=n.A(e,"mediaTypes.video.maxduration"),i=n.A(e,"mediaTypes.video.playerSize"),a=n.A(e,"mediaTypes.video.api"),o=n.A(e,"mediaTypes.video.mimes"),p=n.A(e,"mediaTypes.video.placement"),d=n.A(e,"mediaTypes.video.plcmt"),u=n.A(e,"mediaTypes.video.protocols"),m=n.A(e,"mediaTypes.video.playbackmethod"),c=n.A(e,"mediaTypes.video.pos"),l=n.A(e,"mediaTypes.video.startdelay"),g=n.A(e,"mediaTypes.video.skip"),b=n.A(e,"mediaTypes.video.skipmin"),f=n.A(e,"mediaTypes.video.skipafter"),y=n.A(e,"mediaTypes.video.minbitrate"),h=n.A(e,"mediaTypes.video.maxbitrate");r&&s.isInteger(r)||(r=0);let v={minduration:r,maxduration:t,api:a,mimes:o,placement:p,protocols:u};void 0!==i&&(s.isArray(i[0])?(v.w=parseInt(i[0][0]),v.h=parseInt(i[0][1])):s.isNumber(i[0])&&(v.w=parseInt(i[0]),v.h=parseInt(i[1]))),m&&(v.playbackmethod=m),d&&(v.plcmt=d),c&&(v.pos=c),l&&s.isInteger(l)&&(v.startdelay=l),!g||0!==g&&1!==g||(v.skip=g),b&&s.isInteger(b)&&(v.skipmin=b),f&&s.isInteger(f)&&(v.skipafter=f),y&&s.isInteger(y)&&(v.minbitrate=y),h&&s.isInteger(h)&&(v.maxbitrate=h);const I=n.A(e,"ortb2Imp.battr");return I&&(v.battr=I),v}}(e)),Object.assign(r,a);let o=function(e){if(e.params.bidfloor)return e.params.bidfloor;if(!s.isFn(e.getFloor))return null;let r=e.getFloor({currency:"USD",mediaType:"*",size:"*"});return s.isPlainObject(r)&&!isNaN(r.floor)&&"USD"===r.currency?r.floor:null}(e);o&&(r.bidfloor=parseFloat(o),r.bidfloorcur="USD");const p=n.A(e,"ortb2Imp.secure");return r.secure=(0,s.isNumber)(p)?p:1,s.mergeDeep(r,e.ortb2Imp),r}const A={code:u,gvlid:21,aliases:["thetradedesk"],supportedMediaTypes:[d.D4,d.G_],isBidRequestValid:function(e){if(!e||!e.params)return s.logWarn(u+": Missing bid parameters"),!1;if(!e.params.supplySourceId)return s.logWarn(u+": Missing required parameter params.supplySourceId"),!1;if(!/^[\w+]+$/.test(e.params.supplySourceId))return s.logWarn(u+": supplySourceId must only contain alphabetic characters"),!1;if(!e.params.publisherId)return s.logWarn(u+": Missing required parameter params.publisherId"),!1;if(e.params.publisherId.length>32)return s.logWarn(u+": params.publisherId must be 32 characters or less"),!1;if(e.params.bidfloor&&isNaN(parseFloat(e.params.bidfloor)))return!1;const r=n.A(e,"ortb2Imp.ext.gpid");if(!e.params.placementId&&!r)return s.logWarn(u+": one of params.placementId or gpid (via the GPT module https://docs.prebid.org/dev-docs/modules/gpt-pre-auction.html) must be passed"),!1;const t=n.A(e,"mediaTypes.banner"),i=n.A(e,"mediaTypes.video");if(!t&&!i)return s.logWarn(u+": one of mediaTypes.banner or mediaTypes.video must be passed"),!1;if(i){if(!i.maxduration||!s.isInteger(i.maxduration))return s.logWarn(u+": mediaTypes.video.maxduration must be set to the maximum video ad duration in seconds"),!1;if(!i.api||0===i.api.length)return s.logWarn(u+": mediaTypes.video.api should be an array of supported api frameworks. See the Open RTB v2.5 spec for valid values"),!1;if(!i.mimes||0===i.mimes.length)return s.logWarn(u+": mediaTypes.video.mimes should be an array of supported mime types"),!1;if(!i.protocols)return s.logWarn(u+": mediaTypes.video.protocols should be an array of supported protocols. See the Open RTB v2.5 spec for valid values"),!1}return!0},buildRequests:function(e,r){const t=r.ortb2||{};let i={id:r.bidderRequestId,imp:e.map((e=>I(e))),site:v(r,t),device:f(t),user:h(r,t),at:1,cur:["USD"],regs:g(r),source:b(e,r),ext:l(t)};return t&&t.bcat&&(i.bcat=t.bcat),t&&t.badv&&(i.badv=t.badv),t&&t.app&&(i.app=t.app),t&&t.pmp&&(i.pmp=t.pmp),{method:"POST",url:"https://direct.adsrvr.org/bid/bidder/"+r.bids[0].params.supplySourceId,data:i,options:{withCredentials:!0}}},interpretResponse:function(e,r){let t=n.A(e,"body.seatbid");const i=n.A(e,"body.cur");if(!t||0===t.length)return[];let a=[],o=n.A(r,"data.imp");return t.forEach((e=>{e.bid.forEach((e=>{let r=o.find((r=>r.id===e.impid));const t=e.price||0;let n={requestId:e.impid,cpm:t,creativeId:e.crid,dealId:e.dealid||null,currency:i||"USD",netRevenue:!0,ttl:e.ttl||360,meta:{}};e.adomain&&e.adomain.length>0&&(n.meta.advertiserDomains=e.adomain),e.ext.mediatype===m?Object.assign(n,{width:e.w,height:e.h,ad:s.replaceAuctionPrice(e.adm,t),mediaType:d.D4}):e.ext.mediatype===c&&(Object.assign(n,{width:r.video.w,height:r.video.h,mediaType:d.G_}),e.nurl?n.vastUrl=s.replaceAuctionPrice(e.nurl,t):n.vastXml=s.replaceAuctionPrice(e.adm,t)),a.push(n)}))})),a},getUserSyncs:function(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const a=[];let s=`&gdpr=${t.gdprApplies?1:0}&gdpr_consent=${encodeURIComponent(t.consentString)}`,n=`https://match.adsrvr.org/track/usersync?us_privacy=${encodeURIComponent(i)}${s}`;return e.pixelEnabled?a.push({type:"image",url:n+"&ust=image"}):e.iframeEnabled&&a.push({type:"iframe",url:n+"&ust=iframe"}),a}};(0,p.a$)(A),(0,i.E)("ttdBidAdapter")}},e=>{e.O(0,[60802,51085],(()=>{return r=63429,e(e.s=r);var r}));e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[51134],{29872:(e,i,s)=>{var t=s(7873),n=s(68044),o=s(88910),a=s(78969),d=s(11445),r=s(91069);const c="https://hbwa.aralego.com",{AUCTION_END:p,BID_WON:u,BID_TIMEOUT:h}=a.qY,l="bid",g="noBid",m="bidWon",b="timeout",A={},f=function(e){return(e.bidderCode||e.bidder).toLowerCase()},E=function(e){return e.adUnitCode.toLowerCase()},y=Object.assign((0,o.Ay)({ANALYTICS_SERVER:c,analyticsType:"endpoint"}),{cachedAuctions:{},initConfig:e=>(A.options=(0,r.deepClone)(e.options),"string"!=typeof e.options.pbuid||e.options.pbuid.length<1?((0,r.logError)('"options.pbuid" is required.'),!1):"string"!=typeof e.options.adid||e.options.adid.length<1?((0,r.logError)('"options.adid" is required.'),!1):(A.sampled=!0,"number"==typeof e.options.sampling&&(A.sampled=Math.random()<parseFloat(e.options.sampling)),A.pbuid=e.options.pbuid,A.adid=e.options.adid,A.server=c,!0)),sendEventMessage(e,i){(0,r.logInfo)(`AJAX: ${e}: `+JSON.stringify(i)),(0,n.RD)(`${A.server}/${e}`,null,JSON.stringify(i),{contentType:"application/json",withCredentials:!0})},createCommonMessage:e=>({version:"1.0.0",auctionId:e,referrer:window.location.href,sampling:A.options.sampling,prebid:"9.
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[51134],{29872:(e,i,s)=>{var t=s(7873),n=s(68044),o=s(88910),a=s(78969),d=s(11445),r=s(91069);const c="https://hbwa.aralego.com",{AUCTION_END:p,BID_WON:u,BID_TIMEOUT:h}=a.qY,l="bid",g="noBid",m="bidWon",b="timeout",A={},f=function(e){return(e.bidderCode||e.bidder).toLowerCase()},E=function(e){return e.adUnitCode.toLowerCase()},y=Object.assign((0,o.Ay)({ANALYTICS_SERVER:c,analyticsType:"endpoint"}),{cachedAuctions:{},initConfig:e=>(A.options=(0,r.deepClone)(e.options),"string"!=typeof e.options.pbuid||e.options.pbuid.length<1?((0,r.logError)('"options.pbuid" is required.'),!1):"string"!=typeof e.options.adid||e.options.adid.length<1?((0,r.logError)('"options.adid" is required.'),!1):(A.sampled=!0,"number"==typeof e.options.sampling&&(A.sampled=Math.random()<parseFloat(e.options.sampling)),A.pbuid=e.options.pbuid,A.adid=e.options.adid,A.server=c,!0)),sendEventMessage(e,i){(0,r.logInfo)(`AJAX: ${e}: `+JSON.stringify(i)),(0,n.RD)(`${A.server}/${e}`,null,JSON.stringify(i),{contentType:"application/json",withCredentials:!0})},createCommonMessage:e=>({version:"1.0.0",auctionId:e,referrer:window.location.href,sampling:A.options.sampling,prebid:"9.6.0",adid:A.adid,pbuid:A.pbuid,adUnits:{}}),serializeBidResponse(e,i){const s={prebidWon:i===m,isTimeout:i===b,status:i};return i!==l&&i!==m||Object.assign(s,{time:e.timeToRespond,cpm:e.cpm,currency:e.currency}),s},addBidResponseToMessage(e,i,s){const t=E(i);e.adUnits[t]=e.adUnits[t]||{};const n=f(i),o=this.serializeBidResponse(i,s);e.adUnits[t][n]=o},createBidMessage(e,i,s){const{auctionId:t,timestamp:n,auctionEnd:o,adUnitCodes:a,bidsReceived:d,noBids:r}=e,c=this.createCommonMessage(t);return c.auctionElapsed=o-n,a.forEach((e=>{c.adUnits[e]={}})),r.forEach((e=>this.addBidResponseToMessage(c,e,g))),d.forEach((e=>this.addBidResponseToMessage(c,e,l))),s.forEach((e=>this.addBidResponseToMessage(c,e,b))),i.forEach((e=>{const i=E(e),s=f(e);c.adUnits[i][s].prebidWon=!0})),c},createImpressionMessage(e){const i=this.createCommonMessage(e.auctionId);return this.addBidResponseToMessage(i,e,m),i},getCachedAuction(e){return this.cachedAuctions[e]=this.cachedAuctions[e]||{timeoutBids:[]},this.cachedAuctions[e]},handleAuctionEnd(e){const i=this.getCachedAuction(e.auctionId),s=(0,t.m)().getHighestCpmBids();this.sendEventMessage("bid",this.createBidMessage(e,s,i.timeoutBids))},handleBidTimeout(e){e.forEach((e=>{this.getCachedAuction(e.auctionId).timeoutBids.push(e)}))},handleBidWon(e){this.sendEventMessage("imp",this.createImpressionMessage(e))},track(e){let{eventType:i,args:s}=e;if(A.sampled)switch(i){case u:this.handleBidWon(s);break;case h:this.handleBidTimeout(s);break;case p:this.handleAuctionEnd(s)}},getAnalyticsOptions:()=>A});y.originEnableAnalytics=y.enableAnalytics,y.enableAnalytics=function(e){this.initConfig(e)&&y.originEnableAnalytics(e)},d.Ay.registerAnalyticsAdapter({adapter:y,code:"ucfunnelAnalytics"}),(0,t.E)("ucfunnelAnalyticsAdapter")}},e=>{e.O(0,[2630,60802,51085],(()=>{return i=29872,e(e.s=i);var i}));e.O()}]);
|
package/dist/uid2IdSystem.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[68907,56293],{85263:(e,t,s)=>{var r=s(7873),i=s(91069),n=s(16833),o=s(12938),a=s(45569),l=s(84259),d=s(50646);const u="uid2",c=`PrebidJS-9.4.1-UID2Module-${l.kz}`,p="UID2: ";function h(e,t){return function(){for(var s=arguments.length,r=new Array(s),i=0;i<s;i++)r[i]=arguments[i];e(t+" ",...r)}}const g=h(i.logInfo,p),y=h(i.logWarn,p),f=(0,o.vM)({moduleType:a.fW,moduleName:u}),b={name:u,decode(e){const t=function(e){if("string"==typeof e){g("Found server-only token. Refresh is unavailable for this token.");return{uid2:{id:e}}}if("optout"===e.latestToken)return g("Found optout token. Refresh is unavailable for this token."),{uid2:{optout:!0}};if(Date.now()<e.latestToken.identity_expires)return{uid2:{id:e.latestToken.advertising_token}};return null}(e);return g("UID2 decode returned",t),t},getId(e,t){if(!0===t?.gdprApplies)return void y("UID2 is not intended for use where GDPR applies. The UID2 module will not run.");const s={apiBaseUrl:e?.params?.uid2ApiBase??"https://prod.uidapi.com",paramToken:e?.params?.uid2Token,serverCookieName:e?.params?.uid2Cookie??e?.params?.uid2ServerCookie,storage:e?.params?.storage??"localStorage",clientId:c,internalStorage:"__uid2_advertising_token"};s.cstg={serverPublicKey:e?.params?.serverPublicKey,subscriptionId:e?.params?.subscriptionId,...(0,l.E0)(e?.params??{})},g("UID2 configuration loaded and mapped.",s);const r=(0,l.wq)(s,f,g,y);return g("UID2 getId returned",r),r},eids:d.x};(0,n.bz)("userId",b),(0,r.E)("uid2IdSystem")},84259:(e,t,s)=>{s.d(t,{E0:()=>h,kz:()=>o,wq:()=>p});var r=s(7873),i=s(68044),n=s(91069);const o="1.1";function a(e){return!!("object"==typeof e&&null!==e&&e.advertising_token&&e.identity_expires&&e.refresh_from&&e.refresh_token&&e.refresh_expires)}class l{constructor(e,t,s,r){this._baseUrl=e.baseUrl,this._clientVersion=t,this._logInfo=s,this._logWarn=r}createArrayBuffer(e){const t=new Uint8Array(e.length);for(let s=0;s<e.length;s++)t[s]=e.charCodeAt(s);return t}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isValidRefreshResponse(e){return this.hasStatusResponse(e)&&("optout"===e.status||"expired_token"===e.status||"success"===e.status&&e.body&&a(e.body))}ResponseToRefreshResult(e){return this.isValidRefreshResponse(e)?"success"===e.status?{status:e.status,identity:e.body}:e:"Response didn't contain a valid status"}callRefreshApi(e){const t=this._baseUrl+"/v2/token/refresh";let s,r;const n=new Promise(((e,t)=>{s=e,r=t}));return this._logInfo("Sending refresh request",e),(0,i.RD)(t,{success:t=>{try{if(e.refresh_response_key){this._logInfo("Decrypting refresh API response");const i=this.createArrayBuffer(atob(t));window.crypto.subtle.importKey("raw",this.createArrayBuffer(atob(e.refresh_response_key)),{name:"AES-GCM"},!1,["decrypt"]).then((e=>{this._logInfo("Imported decryption key"),window.crypto.subtle.decrypt({name:"AES-GCM",iv:i.slice(0,12),tagLength:128},e,i.slice(12)).then((e=>{const t=String.fromCharCode(...new Uint8Array(e));this._logInfo("Decrypted to:",t);const i=JSON.parse(t),n=this.ResponseToRefreshResult(i);"string"==typeof n?r(n):s(n)}),(e=>this._logWarn("Call to UID2 API failed",e)))}),(e=>this._logWarn("Call to UID2 API failed",e)))}else{this._logInfo("No response decryption key available, assuming unencrypted JSON");const e=JSON.parse(t),i=this.ResponseToRefreshResult(e);"string"==typeof i?r(i):s(i)}}catch(e){r(t)}},error:(e,t)=>{try{this._logInfo("Error status, assuming unencrypted JSON");const e=JSON.parse(t.responseText),i=this.ResponseToRefreshResult(e);"string"==typeof i?r(i):s(i)}catch(t){r(e)}}},e.refresh_token,{method:"POST",customHeaders:{"X-UID2-Client-Version":this._clientVersion}}),n}}class d{constructor(e,t,s,r){this._storage=e,this._preferLocalStorage=t,this._storageName=s,this._logInfo=r}readCookie(e){return this._storage.cookiesAreEnabled()?this._storage.getCookie(e):null}readLocalStorage(e){return this._storage.localStorageIsEnabled()?this._storage.getDataFromLocalStorage(e):null}readModuleCookie(){return this.parseIfContainsBraces(this.readCookie(this._storageName))}writeModuleCookie(e){this._storage.setCookie(this._storageName,JSON.stringify(e),Date.now()+864e5)}readModuleStorage(){return this.parseIfContainsBraces(this.readLocalStorage(this._storageName))}writeModuleStorage(e){this._storage.setDataInLocalStorage(this._storageName,JSON.stringify(e))}readProvidedCookie(e){return JSON.parse(this.readCookie(e))}parseIfContainsBraces(e){return e?.includes("{")?JSON.parse(e):e}storeValue(e){this._preferLocalStorage?this.writeModuleStorage(e):this.writeModuleCookie(e)}getStoredValueWithFallback(){const e=this._preferLocalStorage?"local storage":"cookie",t=(this._preferLocalStorage?this.readModuleStorage:this.readModuleCookie).bind(this),s=(this._preferLocalStorage?this.writeModuleStorage:this.writeModuleCookie).bind(this),r=(this._preferLocalStorage?this.readModuleCookie:this.readModuleStorage).bind(this),i=t();if(i){if("string"==typeof i){const t=r();if(t&&"object"==typeof t)return this._logInfo(`${e} contained a basic token, but found a refreshable token fallback. Copying the fallback value to ${e}.`),s(t),t}}else{const t=r();if(t)return this._logInfo(`${e} was empty, but found a fallback value.`),"object"==typeof t&&(this._logInfo(`Copying the fallback value to ${e}.`),s(t)),t}return i}}function u(e,t,s,r,i,n){i("UID2 base url provided: ",e);return new l({baseUrl:e},s,i,n).callRefreshApi(t).then((e=>{i("Refresh endpoint responded with:",e);const s={originalToken:t,latestToken:e.identity};let n=r.getStoredValueWithFallback();return n?.originalIdentity&&(s.originalIdentity=n.originalIdentity),r.storeValue(s),s}))}let c;{const e=9;c={isCSTGOptionsValid(e,t){if("object"!=typeof e||null===e)return t('CSTG is not being used, but is included in the Prebid.js bundle. You can reduce the bundle size by passing "--disable UID2_CSTG" to the Prebid.js build.'),!1;const s=e;if(!s.serverPublicKey&&!s.subscriptionId)return t("CSTG has been enabled but its parameters have not been set."),!1;if("string"!=typeof s.serverPublicKey)return t("CSTG opts.serverPublicKey must be a string"),!1;const r=/^(UID2|EUID)-X-[A-Z]-.+/;return r.test(s.serverPublicKey)?"string"!=typeof s.subscriptionId?(t("CSTG opts.subscriptionId must be a string"),!1):0!==s.subscriptionId.length||(t("CSTG opts.subscriptionId is empty"),!1):(t(`CSTG opts.serverPublicKey must match the regular expression ${r}`),!1)},getValidIdentity(e,s){if(e.emailHash)return t.isBase64Hash(e.emailHash)?{email_hash:e.emailHash}:void s("CSTG opts.emailHash is invalid");if(e.phoneHash)return t.isBase64Hash(e.phoneHash)?{phone_hash:e.phoneHash}:void s("CSTG opts.phoneHash is invalid");if(e.email){const r=t.normalizeEmail(e.email);return void 0===r?void s("CSTG opts.email is invalid"):{email:r}}return e.phone?t.isNormalizedPhone(e.phone)?{phone:e.phone}:void s("CSTG opts.phone is invalid"):void 0},isStoredTokenInvalid(e,t,s,r){if(t){if("optout"===t.latestToken)return!0;const r=Object.values(e)[0];if(!this.isStoredTokenFromSameIdentity(t,r))return s("CSTG supplied new identity - ignoring stored value.",t.originalIdentity,e),!0}return!1},async generateTokenAndStore(e,t,r,i,n,o){n("UID2 cstg opts provided: ",JSON.stringify(t));const a=new s({baseUrl:e,cstg:t},n,o),l=await a.generateToken(r);n("CSTG endpoint responded with:",l);const d={originalIdentity:this.encodeOriginalIdentity(r),latestToken:l.identity};return i.storeValue(d),d},isStoredTokenFromSameIdentity:(e,t)=>!!e.originalIdentity&&(0,n.cyrb53Hash)(t,e.originalIdentity.salt)===e.originalIdentity.identity,encodeOriginalIdentity(e){const t=Object.values(e)[0],s=Math.floor(Math.random()*Math.pow(2,32));return{identity:(0,n.cyrb53Hash)(t,s),salt:s}}};class t{static EMAIL_EXTENSION_SYMBOL="+";static EMAIL_DOT=".";static GMAIL_DOMAIN="gmail.com";static isBase64Hash(e){if(!e||44!==e.length)return!1;try{return btoa(atob(e))===e}catch(e){return!1}}static isNormalizedPhone(e){return/^\+[0-9]{10,15}$/.test(e)}static normalizeEmail(e){if(!e||!e.length)return;const t=e.trim().toLowerCase();if(t.indexOf(" ")>0)return;const s=this.splitEmailIntoAddressAndDomain(t);if(!s)return;const{address:r,domain:i}=s,n=this.isGmail(i),o=this.normalizeAddressPart(r,n,n);return o?`${o}@${i}`:void 0}static splitEmailIntoAddressAndDomain(e){const t=e.split("@");if(2===t.length&&!t.some((e=>""===e)))return{address:t[0],domain:t[1]}}static isGmail(e){return e===this.GMAIL_DOMAIN}static dropExtension(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.EMAIL_EXTENSION_SYMBOL;return e.split(t)[0]}static normalizeAddressPart(e,t,s){let r=e;return t&&(r=r.replaceAll(this.EMAIL_DOT,"")),s&&(r=this.dropExtension(r)),r}}class s{constructor(e,t,s){this._baseUrl=e.baseUrl,this._serverPublicKey=e.cstg.serverPublicKey,this._subscriptionId=e.cstg.subscriptionId,this._logInfo=t,this._logWarn=s}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isCstgApiSuccessResponse(e){return this.hasStatusResponse(e)&&"success"===e.status&&a(e.body)}isCstgApiOptoutResponse(e){return this.hasStatusResponse(e)&&"optout"===e.status}isCstgApiClientErrorResponse(e){return this.hasStatusResponse(e)&&"client_error"===e.status&&"string"==typeof e.message}isCstgApiForbiddenResponse(e){return this.hasStatusResponse(e)&&"invalid_http_origin"===e.status&&"string"==typeof e.message}stripPublicKeyPrefix(t){return t.substring(e)}async generateCstgRequest(e){if("email_hash"in e||"phone_hash"in e)return e;if("email"in e){return{email_hash:await o.hash(e.email)}}if("phone"in e){return{phone_hash:await o.hash(e.phone)}}}async generateToken(e){const t=await this.generateCstgRequest(e);this._logInfo("Building CSTG request for",t);const s=await r.build(this.stripPublicKeyPrefix(this._serverPublicKey)),i=new TextEncoder,n=Date.now(),{iv:a,ciphertext:l}=await s.encrypt(i.encode(JSON.stringify(t)),i.encode(JSON.stringify([n]))),d=await o.exportPublicKey(s.clientPublicKey),u={payload:o.bytesToBase64(new Uint8Array(l)),iv:o.bytesToBase64(new Uint8Array(a)),public_key:o.bytesToBase64(new Uint8Array(d)),timestamp:n,subscription_id:this._subscriptionId};return this.callCstgApi(u,s)}async callCstgApi(e,t){const s=this._baseUrl+"/v2/token/client-generate";let r,n;const a=new Promise(((e,t)=>{r=e,n=t}));return this._logInfo("Sending CSTG request",e),(0,i.RD)(s,{success:async(e,s)=>{try{const s=o.base64ToBytes(e),i=await t.decrypt(s.slice(0,12),s.slice(12)),a=(new TextDecoder).decode(i),l=JSON.parse(a);this.isCstgApiSuccessResponse(l)?r({status:"success",identity:l.body}):this.isCstgApiOptoutResponse(l)?r({status:"optout",identity:"optout"}):n(`API error: Response body was invalid for HTTP status 200: ${a}`)}catch(e){n(e)}},error:(e,t)=>{try{if(400===t.status){const e=JSON.parse(t.responseText);this.isCstgApiClientErrorResponse(e)?n(`Client error: ${e.message}`):n(`API error: Response body was invalid for HTTP status 400: ${t.responseText}`)}else if(403===t.status){const e=JSON.parse(t.responseText);this.isCstgApiForbiddenResponse(t)?n(`Forbidden: ${e.message}`):n(`API error: Response body was invalid for HTTP status 403: ${t.responseText}`)}else n(`API error: Unexpected HTTP status ${t.status}: ${e}`)}catch(t){n(e)}}},JSON.stringify(e),{method:"POST"}),a}}class r{static _namedCurve="P-256";constructor(e,t){this._clientPublicKey=e,this._sharedKey=t}static async build(e){const t=await o.generateKeyPair(r._namedCurve),s=await o.importPublicKey(e,this._namedCurve),i=await o.deriveKey(s,t.privateKey);return new r(t.publicKey,i)}async encrypt(e,t){const s=window.crypto.getRandomValues(new Uint8Array(12));return{iv:s,ciphertext:await window.crypto.subtle.encrypt({name:"AES-GCM",iv:s,additionalData:t},this._sharedKey,e)}}async decrypt(e,t){return window.crypto.subtle.decrypt({name:"AES-GCM",iv:e},this._sharedKey,t)}get clientPublicKey(){return this._clientPublicKey}}class o{static base64ToBytes(e){const t=atob(e);return Uint8Array.from(t,(e=>e.codePointAt(0)))}static bytesToBase64(e){const t=Array.from(e,(e=>String.fromCodePoint(e))).join("");return btoa(t)}static async generateKeyPair(e){const t={name:"ECDH",namedCurve:e};return window.crypto.subtle.generateKey(t,!1,["deriveKey"])}static async importPublicKey(e,t){const s={name:"ECDH",namedCurve:t};return window.crypto.subtle.importKey("spki",this.base64ToBytes(e),s,!1,[])}static exportPublicKey(e){return window.crypto.subtle.exportKey("spki",e)}static async deriveKey(e,t){return window.crypto.subtle.deriveKey({name:"ECDH",public:e},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}static async hash(e){const t=await window.crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e));return this.bytesToBase64(new Uint8Array(t))}}}function p(e,t,s,r){let i=null;const n="cookie"!==e.storage,o=new d(t,n,e.internalStorage,s);s(`Module is using ${n?"local storage":"cookies"} for internal storage.`);const a=c&&c.isCSTGOptionsValid(e.cstg,r);a?(s("Module is using client-side token generation."),i=null):e.paramToken?(i=e.paramToken,s("Read token from params",i)):e.serverCookieName&&(i=o.readProvidedCookie(e.serverCookieName),s("Read token from server-supplied cookie",i));let l=o.getStoredValueWithFallback();if(s("Loaded module-stored tokens:",l),l&&"string"==typeof l){if(!i&&!a)return s("Returning legacy cookie value."),{id:l};s("Discarding superseded legacy cookie."),l=null}if(i&&l&&l.originalToken?.advertising_token!==i.advertising_token&&(s("Server supplied new token - ignoring stored value.",l.originalToken?.advertising_token,i.advertising_token),l=null),a){const t=c.getValidIdentity(e.cstg,r);if(t&&(l&&c.isStoredTokenInvalid(t,l,s,r)&&(l=null),!l||Date.now()>l.latestToken.refresh_expires)){const i=c.generateTokenAndStore(e.apiBaseUrl,e.cstg,t,o,s,r);return s("Generate token using CSTG"),{callback:e=>{i.then((t=>{s("Token generation responded, passing the new token on.",t),e(t)}))}}}}const p=!l?.latestToken||i&&i.identity_expires>l.latestToken.identity_expires,h=p?i:l.latestToken;if(s("UID2 module selected latest token",p,h),!h||Date.now()>h.refresh_expires)return s("Newest available token is expired and not refreshable."),{id:null};if(Date.now()>h.identity_expires){const t=u(e.apiBaseUrl,h,e.clientId,o,s,r);return s("Token is expired but can be refreshed, attempting refresh."),{callback:e=>{t.then((t=>{s("Refresh reponded, passing the updated token on.",t),e(t)}))}}}Date.now()>h.refresh_from&&(s("Refreshing token in background with low priority."),u(e.apiBaseUrl,h,e.clientId,o,s,r));const g={originalToken:i??l?.originalToken,latestToken:h};return a&&(g.originalIdentity=l?.originalIdentity),o.storeValue(g),{id:g}}function h(e){const t=["emailHash","phoneHash","email","phone"];for(let s of t)if(e.hasOwnProperty(s))return{[s]:e[s]};return{}}(0,r.E)("uid2IdSystem_shared")}},e=>{e.O(0,[44950,60802,51085],(()=>{return t=85263,e(e.s=t);var t}));e.O()}]);
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[68907,56293],{85263:(e,t,s)=>{var r=s(7873),i=s(91069),n=s(16833),o=s(12938),a=s(45569),l=s(84259),d=s(50646);const u="uid2",c=`PrebidJS-9.6.0-UID2Module-${l.kz}`,p="UID2: ";function h(e,t){return function(){for(var s=arguments.length,r=new Array(s),i=0;i<s;i++)r[i]=arguments[i];e(t+" ",...r)}}const g=h(i.logInfo,p),y=h(i.logWarn,p),f=(0,o.vM)({moduleType:a.fW,moduleName:u}),b={name:u,decode(e){const t=function(e){if("string"==typeof e){g("Found server-only token. Refresh is unavailable for this token.");return{uid2:{id:e}}}if("optout"===e.latestToken)return g("Found optout token. Refresh is unavailable for this token."),{uid2:{optout:!0}};if(Date.now()<e.latestToken.identity_expires)return{uid2:{id:e.latestToken.advertising_token}};return null}(e);return g("UID2 decode returned",t),t},getId(e,t){if(!0===t?.gdprApplies)return void y("UID2 is not intended for use where GDPR applies. The UID2 module will not run.");const s={apiBaseUrl:e?.params?.uid2ApiBase??"https://prod.uidapi.com",paramToken:e?.params?.uid2Token,serverCookieName:e?.params?.uid2Cookie??e?.params?.uid2ServerCookie,storage:e?.params?.storage??"localStorage",clientId:c,internalStorage:"__uid2_advertising_token"};s.cstg={serverPublicKey:e?.params?.serverPublicKey,subscriptionId:e?.params?.subscriptionId,...(0,l.E0)(e?.params??{})},g("UID2 configuration loaded and mapped.",s);const r=(0,l.wq)(s,f,g,y);return g("UID2 getId returned",r),r},eids:d.x};(0,n.bz)("userId",b),(0,r.E)("uid2IdSystem")},84259:(e,t,s)=>{s.d(t,{E0:()=>y,kz:()=>o,wq:()=>g});var r=s(7873),i=s(68044),n=s(91069);const o="1.1";function a(e){return!!("object"==typeof e&&null!==e&&e.advertising_token&&e.identity_expires&&e.refresh_from&&e.refresh_token&&e.refresh_expires)}function l(e){return`UID2 shared library - ${e}`}function d(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),r=1;r<t;r++)s[r-1]=arguments[r];e(l(s[0]),...s.slice(1))}class u{constructor(e,t,s,r){this._baseUrl=e.baseUrl,this._clientVersion=t,this._logInfo=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return d(s,...t)},this._logWarn=r}createArrayBuffer(e){const t=new Uint8Array(e.length);for(let s=0;s<e.length;s++)t[s]=e.charCodeAt(s);return t}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isValidRefreshResponse(e){return this.hasStatusResponse(e)&&("optout"===e.status||"expired_token"===e.status||"success"===e.status&&e.body&&a(e.body))}ResponseToRefreshResult(e){return this.isValidRefreshResponse(e)?"success"===e.status?{status:e.status,identity:e.body}:e:l("Response didn't contain a valid status")}callRefreshApi(e){const t=this._baseUrl+"/v2/token/refresh";let s,r;const n=new Promise(((e,t)=>{s=e,r=t}));return this._logInfo("Sending refresh request",e),(0,i.RD)(t,{success:t=>{try{if(e.refresh_response_key){this._logInfo("Decrypting refresh API response");const i=this.createArrayBuffer(atob(t));window.crypto.subtle.importKey("raw",this.createArrayBuffer(atob(e.refresh_response_key)),{name:"AES-GCM"},!1,["decrypt"]).then((e=>{this._logInfo("Imported decryption key"),window.crypto.subtle.decrypt({name:"AES-GCM",iv:i.slice(0,12),tagLength:128},e,i.slice(12)).then((e=>{const t=String.fromCharCode(...new Uint8Array(e));this._logInfo("Decrypted to:",t);const i=JSON.parse(t),n=this.ResponseToRefreshResult(i);"string"==typeof n?r(l(n)):s(n)}),(e=>this._logWarn(l("Call to UID2 API failed"),e)))}),(e=>this._logWarn(l("Call to UID2 API failed"),e)))}else{this._logInfo("No response decryption key available, assuming unencrypted JSON");const e=JSON.parse(t),i=this.ResponseToRefreshResult(e);"string"==typeof i?r(l(i)):s(i)}}catch(e){r(l(t))}},error:(e,t)=>{try{this._logInfo("Error status, assuming unencrypted JSON");const e=JSON.parse(t.responseText),i=this.ResponseToRefreshResult(e);"string"==typeof i?r(l(i)):s(i)}catch(t){r(l(e))}}},e.refresh_token,{method:"POST",customHeaders:{"X-UID2-Client-Version":this._clientVersion}}),n}}class c{constructor(e,t,s,r){this._storage=e,this._preferLocalStorage=t,this._storageName=s,this._logInfo=function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];return d(r,...t)}}readCookie(e){return this._storage.cookiesAreEnabled()?this._storage.getCookie(e):null}readLocalStorage(e){return this._storage.localStorageIsEnabled()?this._storage.getDataFromLocalStorage(e):null}readModuleCookie(){return this.parseIfContainsBraces(this.readCookie(this._storageName))}writeModuleCookie(e){this._storage.setCookie(this._storageName,JSON.stringify(e),Date.now()+864e5)}readModuleStorage(){return this.parseIfContainsBraces(this.readLocalStorage(this._storageName))}writeModuleStorage(e){this._storage.setDataInLocalStorage(this._storageName,JSON.stringify(e))}readProvidedCookie(e){return JSON.parse(this.readCookie(e))}parseIfContainsBraces(e){return e?.includes("{")?JSON.parse(e):e}storeValue(e){this._preferLocalStorage?this.writeModuleStorage(e):this.writeModuleCookie(e)}getStoredValueWithFallback(){const e=this._preferLocalStorage?"local storage":"cookie",t=(this._preferLocalStorage?this.readModuleStorage:this.readModuleCookie).bind(this),s=(this._preferLocalStorage?this.writeModuleStorage:this.writeModuleCookie).bind(this),r=(this._preferLocalStorage?this.readModuleCookie:this.readModuleStorage).bind(this),i=t();if(i){if("string"==typeof i){const t=r();if(t&&"object"==typeof t)return this._logInfo(`${e} contained a basic token, but found a refreshable token fallback. Copying the fallback value to ${e}.`),s(t),t}}else{const t=r();if(t)return this._logInfo(`${e} was empty, but found a fallback value.`),"object"==typeof t&&(this._logInfo(`Copying the fallback value to ${e}.`),s(t)),t}return i}}function p(e,t,s,r,i,n){i("UID2 base url provided: ",e);return new u({baseUrl:e},s,i,n).callRefreshApi(t).then((e=>{i("Refresh endpoint responded with:",e);const s={originalToken:t,latestToken:e.identity};let n=r.getStoredValueWithFallback();return n?.originalIdentity&&(s.originalIdentity=n.originalIdentity),r.storeValue(s),s}))}let h;{const e=9;h={isCSTGOptionsValid(e,t){if("object"!=typeof e||null===e)return t('CSTG is not being used, but is included in the Prebid.js bundle. You can reduce the bundle size by passing "--disable UID2_CSTG" to the Prebid.js build.'),!1;const s=e;if(!s.serverPublicKey&&!s.subscriptionId)return t("CSTG has been enabled but its parameters have not been set."),!1;if("string"!=typeof s.serverPublicKey)return t("CSTG opts.serverPublicKey must be a string"),!1;const r=/^(UID2|EUID)-X-[A-Z]-.+/;return r.test(s.serverPublicKey)?"string"!=typeof s.subscriptionId?(t("CSTG opts.subscriptionId must be a string"),!1):0!==s.subscriptionId.length||(t("CSTG opts.subscriptionId is empty"),!1):(t(`CSTG opts.serverPublicKey must match the regular expression ${r}`),!1)},getValidIdentity(e,s){if(e.emailHash)return t.isBase64Hash(e.emailHash)?{email_hash:e.emailHash}:void s("CSTG opts.emailHash is invalid");if(e.phoneHash)return t.isBase64Hash(e.phoneHash)?{phone_hash:e.phoneHash}:void s("CSTG opts.phoneHash is invalid");if(e.email){const r=t.normalizeEmail(e.email);return void 0===r?void s("CSTG opts.email is invalid"):{email:r}}return e.phone?t.isNormalizedPhone(e.phone)?{phone:e.phone}:void s("CSTG opts.phone is invalid"):void 0},isStoredTokenInvalid(e,t,s,r){if(t){if("optout"===t.latestToken)return!0;const r=Object.values(e)[0];if(!this.isStoredTokenFromSameIdentity(t,r))return s("CSTG supplied new identity - ignoring stored value.",t.originalIdentity,e),!0}return!1},async generateTokenAndStore(e,t,r,i,n,o){n("UID2 cstg opts provided: ",JSON.stringify(t));const a=new s({baseUrl:e,cstg:t},n,o),l=await a.generateToken(r);n("CSTG endpoint responded with:",l);const d={originalIdentity:this.encodeOriginalIdentity(r),latestToken:l.identity};return i.storeValue(d),d},isStoredTokenFromSameIdentity:(e,t)=>!!e.originalIdentity&&(0,n.cyrb53Hash)(t,e.originalIdentity.salt)===e.originalIdentity.identity,encodeOriginalIdentity(e){const t=Object.values(e)[0],s=Math.floor(Math.random()*Math.pow(2,32));return{identity:(0,n.cyrb53Hash)(t,s),salt:s}}};class t{static EMAIL_EXTENSION_SYMBOL="+";static EMAIL_DOT=".";static GMAIL_DOMAIN="gmail.com";static isBase64Hash(e){if(!e||44!==e.length)return!1;try{return btoa(atob(e))===e}catch(e){return!1}}static isNormalizedPhone(e){return/^\+[0-9]{10,15}$/.test(e)}static normalizeEmail(e){if(!e||!e.length)return;const t=e.trim().toLowerCase();if(t.indexOf(" ")>0)return;const s=this.splitEmailIntoAddressAndDomain(t);if(!s)return;const{address:r,domain:i}=s,n=this.isGmail(i),o=this.normalizeAddressPart(r,n,n);return o?`${o}@${i}`:void 0}static splitEmailIntoAddressAndDomain(e){const t=e.split("@");if(2===t.length&&!t.some((e=>""===e)))return{address:t[0],domain:t[1]}}static isGmail(e){return e===this.GMAIL_DOMAIN}static dropExtension(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.EMAIL_EXTENSION_SYMBOL;return e.split(t)[0]}static normalizeAddressPart(e,t,s){let r=e;return t&&(r=r.replaceAll(this.EMAIL_DOT,"")),s&&(r=this.dropExtension(r)),r}}class s{constructor(e,t,s){this._baseUrl=e.baseUrl,this._serverPublicKey=e.cstg.serverPublicKey,this._subscriptionId=e.cstg.subscriptionId,this._logInfo=function(){for(var e=arguments.length,s=new Array(e),r=0;r<e;r++)s[r]=arguments[r];return d(t,...s)},this._logWarn=s}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isCstgApiSuccessResponse(e){return this.hasStatusResponse(e)&&"success"===e.status&&a(e.body)}isCstgApiOptoutResponse(e){return this.hasStatusResponse(e)&&"optout"===e.status}isCstgApiClientErrorResponse(e){return this.hasStatusResponse(e)&&"client_error"===e.status&&"string"==typeof e.message}isCstgApiForbiddenResponse(e){return this.hasStatusResponse(e)&&"invalid_http_origin"===e.status&&"string"==typeof e.message}stripPublicKeyPrefix(t){return t.substring(e)}async generateCstgRequest(e){if("email_hash"in e||"phone_hash"in e)return e;if("email"in e){return{email_hash:await o.hash(e.email)}}if("phone"in e){return{phone_hash:await o.hash(e.phone)}}}async generateToken(e){const t=await this.generateCstgRequest(e);this._logInfo("Building CSTG request for",t);const s=await r.build(this.stripPublicKeyPrefix(this._serverPublicKey)),i=new TextEncoder,n=Date.now(),{iv:a,ciphertext:l}=await s.encrypt(i.encode(JSON.stringify(t)),i.encode(JSON.stringify([n]))),d=await o.exportPublicKey(s.clientPublicKey),u={payload:o.bytesToBase64(new Uint8Array(l)),iv:o.bytesToBase64(new Uint8Array(a)),public_key:o.bytesToBase64(new Uint8Array(d)),timestamp:n,subscription_id:this._subscriptionId};return this.callCstgApi(u,s)}async callCstgApi(e,t){const s=this._baseUrl+"/v2/token/client-generate";let r,n;const a=new Promise(((e,t)=>{r=e,n=t}));return this._logInfo("Sending CSTG request",e),(0,i.RD)(s,{success:async(e,s)=>{try{const s=o.base64ToBytes(e),i=await t.decrypt(s.slice(0,12),s.slice(12)),a=(new TextDecoder).decode(i),d=JSON.parse(a);this.isCstgApiSuccessResponse(d)?r({status:"success",identity:d.body}):this.isCstgApiOptoutResponse(d)?r({status:"optout",identity:"optout"}):n(l(`API error: Response body was invalid for HTTP status 200: ${a}`))}catch(e){n(l(e))}},error:(e,t)=>{try{if(400===t.status){const e=JSON.parse(t.responseText);this.isCstgApiClientErrorResponse(e)?n(l(`Client error: ${e.message}`)):n(l(`UID2 API error: Response body was invalid for HTTP status 400: ${t.responseText}`))}else if(403===t.status){const e=JSON.parse(t.responseText);this.isCstgApiForbiddenResponse(t)?n(l(`Forbidden: ${e.message}`)):n(l(`UID2 API error: Response body was invalid for HTTP status 403: ${t.responseText}`))}else n(l(`UID2 API error: Unexpected HTTP status ${t.status}: ${e}`))}catch(t){n(l(e))}}},JSON.stringify(e),{method:"POST"}),a}}class r{static _namedCurve="P-256";constructor(e,t){this._clientPublicKey=e,this._sharedKey=t}static async build(e){const t=await o.generateKeyPair(r._namedCurve),s=await o.importPublicKey(e,this._namedCurve),i=await o.deriveKey(s,t.privateKey);return new r(t.publicKey,i)}async encrypt(e,t){const s=window.crypto.getRandomValues(new Uint8Array(12));return{iv:s,ciphertext:await window.crypto.subtle.encrypt({name:"AES-GCM",iv:s,additionalData:t},this._sharedKey,e)}}async decrypt(e,t){return window.crypto.subtle.decrypt({name:"AES-GCM",iv:e},this._sharedKey,t)}get clientPublicKey(){return this._clientPublicKey}}class o{static base64ToBytes(e){const t=atob(e);return Uint8Array.from(t,(e=>e.codePointAt(0)))}static bytesToBase64(e){const t=Array.from(e,(e=>String.fromCodePoint(e))).join("");return btoa(t)}static async generateKeyPair(e){const t={name:"ECDH",namedCurve:e};return window.crypto.subtle.generateKey(t,!1,["deriveKey"])}static async importPublicKey(e,t){const s={name:"ECDH",namedCurve:t};return window.crypto.subtle.importKey("spki",this.base64ToBytes(e),s,!1,[])}static exportPublicKey(e){return window.crypto.subtle.exportKey("spki",e)}static async deriveKey(e,t){return window.crypto.subtle.deriveKey({name:"ECDH",public:e},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}static async hash(e){const t=await window.crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e));return this.bytesToBase64(new Uint8Array(t))}}}function g(e,t,s,r){const i=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return d(s,...t)};let n=null;const o="cookie"!==e.storage,a=new c(t,o,e.internalStorage,i);i(`Module is using ${o?"local storage":"cookies"} for internal storage.`);const l=h&&h.isCSTGOptionsValid(e.cstg,r);l?(i("Module is using client-side token generation."),n=null):e.paramToken?(n=e.paramToken,i("Read token from params",n)):e.serverCookieName&&(n=a.readProvidedCookie(e.serverCookieName),i("Read token from server-supplied cookie",n));let u=a.getStoredValueWithFallback();if(i("Loaded module-stored tokens:",u),u&&"string"==typeof u){if(!n&&!l)return i("Returning legacy cookie value."),{id:u};i("Discarding superseded legacy cookie."),u=null}if(n&&u&&u.originalToken?.advertising_token!==n.advertising_token&&(i("Server supplied new token - ignoring stored value.",u.originalToken?.advertising_token,n.advertising_token),u=null),l){const t=h.getValidIdentity(e.cstg,r);if(t&&(u&&h.isStoredTokenInvalid(t,u,i,r)&&(u=null),!u||Date.now()>u.latestToken.refresh_expires)){const s=h.generateTokenAndStore(e.apiBaseUrl,e.cstg,t,a,i,r);return i("Generate token using CSTG"),{callback:e=>{s.then((t=>{i("Token generation responded, passing the new token on.",t),e(t)}))}}}}const g=!u?.latestToken||n&&n.identity_expires>u.latestToken.identity_expires,y=g?n:u.latestToken;if(i("UID2 module selected latest token",g,y),!y||Date.now()>y.refresh_expires)return i("Newest available token is expired and not refreshable."),{id:null};if(Date.now()>y.identity_expires){const t=p(e.apiBaseUrl,y,e.clientId,a,i,r);return i("Token is expired but can be refreshed, attempting refresh."),{callback:e=>{t.then((t=>{i("Refresh reponded, passing the updated token on.",t),e(t)}))}}}Date.now()>y.refresh_from&&(i("Refreshing token in background with low priority."),p(e.apiBaseUrl,y,e.clientId,a,i,r));const f={originalToken:n??u?.originalToken,latestToken:y};return l&&(f.originalIdentity=u?.originalIdentity),a.storeValue(f),{id:f}}function y(e){const t=["emailHash","phoneHash","email","phone"];for(let s of t)if(e.hasOwnProperty(s))return{[s]:e[s]};return{}}(0,r.E)("uid2IdSystem_shared")}},e=>{e.O(0,[44950,60802,51085],(()=>{return t=85263,e(e.s=t);var t}));e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[56293],{84259:(e,t,s)=>{s.d(t,{E0:()=>p,kz:()=>o,wq:()=>h});var i=s(7873),r=s(68044),n=s(91069);const o="1.1";function a(e){return!!("object"==typeof e&&null!==e&&e.advertising_token&&e.identity_expires&&e.refresh_from&&e.refresh_token&&e.refresh_expires)}class l{constructor(e,t,s,i){this._baseUrl=e.baseUrl,this._clientVersion=t,this._logInfo=s,this._logWarn=i}createArrayBuffer(e){const t=new Uint8Array(e.length);for(let s=0;s<e.length;s++)t[s]=e.charCodeAt(s);return t}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isValidRefreshResponse(e){return this.hasStatusResponse(e)&&("optout"===e.status||"expired_token"===e.status||"success"===e.status&&e.body&&a(e.body))}ResponseToRefreshResult(e){return this.isValidRefreshResponse(e)?"success"===e.status?{status:e.status,identity:e.body}:e:"Response didn't contain a valid status"}callRefreshApi(e){const t=this._baseUrl+"/v2/token/refresh";let s,i;const n=new Promise(((e,t)=>{s=e,i=t}));return this._logInfo("Sending refresh request",e),(0,r.RD)(t,{success:t=>{try{if(e.refresh_response_key){this._logInfo("Decrypting refresh API response");const r=this.createArrayBuffer(atob(t));window.crypto.subtle.importKey("raw",this.createArrayBuffer(atob(e.refresh_response_key)),{name:"AES-GCM"},!1,["decrypt"]).then((e=>{this._logInfo("Imported decryption key"),window.crypto.subtle.decrypt({name:"AES-GCM",iv:r.slice(0,12),tagLength:128},e,r.slice(12)).then((e=>{const t=String.fromCharCode(...new Uint8Array(e));this._logInfo("Decrypted to:",t);const r=JSON.parse(t),n=this.ResponseToRefreshResult(r);"string"==typeof n?i(n):s(n)}),(e=>this._logWarn("Call to UID2 API failed",e)))}),(e=>this._logWarn("Call to UID2 API failed",e)))}else{this._logInfo("No response decryption key available, assuming unencrypted JSON");const e=JSON.parse(t),r=this.ResponseToRefreshResult(e);"string"==typeof r?i(r):s(r)}}catch(e){i(t)}},error:(e,t)=>{try{this._logInfo("Error status, assuming unencrypted JSON");const e=JSON.parse(t.responseText),r=this.ResponseToRefreshResult(e);"string"==typeof r?i(r):s(r)}catch(t){i(e)}}},e.refresh_token,{method:"POST",customHeaders:{"X-UID2-Client-Version":this._clientVersion}}),n}}class c{constructor(e,t,s,i){this._storage=e,this._preferLocalStorage=t,this._storageName=s,this._logInfo=i}readCookie(e){return this._storage.cookiesAreEnabled()?this._storage.getCookie(e):null}readLocalStorage(e){return this._storage.localStorageIsEnabled()?this._storage.getDataFromLocalStorage(e):null}readModuleCookie(){return this.parseIfContainsBraces(this.readCookie(this._storageName))}writeModuleCookie(e){this._storage.setCookie(this._storageName,JSON.stringify(e),Date.now()+864e5)}readModuleStorage(){return this.parseIfContainsBraces(this.readLocalStorage(this._storageName))}writeModuleStorage(e){this._storage.setDataInLocalStorage(this._storageName,JSON.stringify(e))}readProvidedCookie(e){return JSON.parse(this.readCookie(e))}parseIfContainsBraces(e){return e?.includes("{")?JSON.parse(e):e}storeValue(e){this._preferLocalStorage?this.writeModuleStorage(e):this.writeModuleCookie(e)}getStoredValueWithFallback(){const e=this._preferLocalStorage?"local storage":"cookie",t=(this._preferLocalStorage?this.readModuleStorage:this.readModuleCookie).bind(this),s=(this._preferLocalStorage?this.writeModuleStorage:this.writeModuleCookie).bind(this),i=(this._preferLocalStorage?this.readModuleCookie:this.readModuleStorage).bind(this),r=t();if(r){if("string"==typeof r){const t=i();if(t&&"object"==typeof t)return this._logInfo(`${e} contained a basic token, but found a refreshable token fallback. Copying the fallback value to ${e}.`),s(t),t}}else{const t=i();if(t)return this._logInfo(`${e} was empty, but found a fallback value.`),"object"==typeof t&&(this._logInfo(`Copying the fallback value to ${e}.`),s(t)),t}return r}}function d(e,t,s,i,r,n){r("UID2 base url provided: ",e);return new l({baseUrl:e},s,r,n).callRefreshApi(t).then((e=>{r("Refresh endpoint responded with:",e);const s={originalToken:t,latestToken:e.identity};let n=i.getStoredValueWithFallback();return n?.originalIdentity&&(s.originalIdentity=n.originalIdentity),i.storeValue(s),s}))}let u;{const e=9;u={isCSTGOptionsValid(e,t){if("object"!=typeof e||null===e)return t('CSTG is not being used, but is included in the Prebid.js bundle. You can reduce the bundle size by passing "--disable UID2_CSTG" to the Prebid.js build.'),!1;const s=e;if(!s.serverPublicKey&&!s.subscriptionId)return t("CSTG has been enabled but its parameters have not been set."),!1;if("string"!=typeof s.serverPublicKey)return t("CSTG opts.serverPublicKey must be a string"),!1;const i=/^(UID2|EUID)-X-[A-Z]-.+/;return i.test(s.serverPublicKey)?"string"!=typeof s.subscriptionId?(t("CSTG opts.subscriptionId must be a string"),!1):0!==s.subscriptionId.length||(t("CSTG opts.subscriptionId is empty"),!1):(t(`CSTG opts.serverPublicKey must match the regular expression ${i}`),!1)},getValidIdentity(e,s){if(e.emailHash)return t.isBase64Hash(e.emailHash)?{email_hash:e.emailHash}:void s("CSTG opts.emailHash is invalid");if(e.phoneHash)return t.isBase64Hash(e.phoneHash)?{phone_hash:e.phoneHash}:void s("CSTG opts.phoneHash is invalid");if(e.email){const i=t.normalizeEmail(e.email);return void 0===i?void s("CSTG opts.email is invalid"):{email:i}}return e.phone?t.isNormalizedPhone(e.phone)?{phone:e.phone}:void s("CSTG opts.phone is invalid"):void 0},isStoredTokenInvalid(e,t,s,i){if(t){if("optout"===t.latestToken)return!0;const i=Object.values(e)[0];if(!this.isStoredTokenFromSameIdentity(t,i))return s("CSTG supplied new identity - ignoring stored value.",t.originalIdentity,e),!0}return!1},async generateTokenAndStore(e,t,i,r,n,o){n("UID2 cstg opts provided: ",JSON.stringify(t));const a=new s({baseUrl:e,cstg:t},n,o),l=await a.generateToken(i);n("CSTG endpoint responded with:",l);const c={originalIdentity:this.encodeOriginalIdentity(i),latestToken:l.identity};return r.storeValue(c),c},isStoredTokenFromSameIdentity:(e,t)=>!!e.originalIdentity&&(0,n.cyrb53Hash)(t,e.originalIdentity.salt)===e.originalIdentity.identity,encodeOriginalIdentity(e){const t=Object.values(e)[0],s=Math.floor(Math.random()*Math.pow(2,32));return{identity:(0,n.cyrb53Hash)(t,s),salt:s}}};class t{static EMAIL_EXTENSION_SYMBOL="+";static EMAIL_DOT=".";static GMAIL_DOMAIN="gmail.com";static isBase64Hash(e){if(!e||44!==e.length)return!1;try{return btoa(atob(e))===e}catch(e){return!1}}static isNormalizedPhone(e){return/^\+[0-9]{10,15}$/.test(e)}static normalizeEmail(e){if(!e||!e.length)return;const t=e.trim().toLowerCase();if(t.indexOf(" ")>0)return;const s=this.splitEmailIntoAddressAndDomain(t);if(!s)return;const{address:i,domain:r}=s,n=this.isGmail(r),o=this.normalizeAddressPart(i,n,n);return o?`${o}@${r}`:void 0}static splitEmailIntoAddressAndDomain(e){const t=e.split("@");if(2===t.length&&!t.some((e=>""===e)))return{address:t[0],domain:t[1]}}static isGmail(e){return e===this.GMAIL_DOMAIN}static dropExtension(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.EMAIL_EXTENSION_SYMBOL;return e.split(t)[0]}static normalizeAddressPart(e,t,s){let i=e;return t&&(i=i.replaceAll(this.EMAIL_DOT,"")),s&&(i=this.dropExtension(i)),i}}class s{constructor(e,t,s){this._baseUrl=e.baseUrl,this._serverPublicKey=e.cstg.serverPublicKey,this._subscriptionId=e.cstg.subscriptionId,this._logInfo=t,this._logWarn=s}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isCstgApiSuccessResponse(e){return this.hasStatusResponse(e)&&"success"===e.status&&a(e.body)}isCstgApiOptoutResponse(e){return this.hasStatusResponse(e)&&"optout"===e.status}isCstgApiClientErrorResponse(e){return this.hasStatusResponse(e)&&"client_error"===e.status&&"string"==typeof e.message}isCstgApiForbiddenResponse(e){return this.hasStatusResponse(e)&&"invalid_http_origin"===e.status&&"string"==typeof e.message}stripPublicKeyPrefix(t){return t.substring(e)}async generateCstgRequest(e){if("email_hash"in e||"phone_hash"in e)return e;if("email"in e){return{email_hash:await o.hash(e.email)}}if("phone"in e){return{phone_hash:await o.hash(e.phone)}}}async generateToken(e){const t=await this.generateCstgRequest(e);this._logInfo("Building CSTG request for",t);const s=await i.build(this.stripPublicKeyPrefix(this._serverPublicKey)),r=new TextEncoder,n=Date.now(),{iv:a,ciphertext:l}=await s.encrypt(r.encode(JSON.stringify(t)),r.encode(JSON.stringify([n]))),c=await o.exportPublicKey(s.clientPublicKey),d={payload:o.bytesToBase64(new Uint8Array(l)),iv:o.bytesToBase64(new Uint8Array(a)),public_key:o.bytesToBase64(new Uint8Array(c)),timestamp:n,subscription_id:this._subscriptionId};return this.callCstgApi(d,s)}async callCstgApi(e,t){const s=this._baseUrl+"/v2/token/client-generate";let i,n;const a=new Promise(((e,t)=>{i=e,n=t}));return this._logInfo("Sending CSTG request",e),(0,r.RD)(s,{success:async(e,s)=>{try{const s=o.base64ToBytes(e),r=await t.decrypt(s.slice(0,12),s.slice(12)),a=(new TextDecoder).decode(r),l=JSON.parse(a);this.isCstgApiSuccessResponse(l)?i({status:"success",identity:l.body}):this.isCstgApiOptoutResponse(l)?i({status:"optout",identity:"optout"}):n(`API error: Response body was invalid for HTTP status 200: ${a}`)}catch(e){n(e)}},error:(e,t)=>{try{if(400===t.status){const e=JSON.parse(t.responseText);this.isCstgApiClientErrorResponse(e)?n(`Client error: ${e.message}`):n(`API error: Response body was invalid for HTTP status 400: ${t.responseText}`)}else if(403===t.status){const e=JSON.parse(t.responseText);this.isCstgApiForbiddenResponse(t)?n(`Forbidden: ${e.message}`):n(`API error: Response body was invalid for HTTP status 403: ${t.responseText}`)}else n(`API error: Unexpected HTTP status ${t.status}: ${e}`)}catch(t){n(e)}}},JSON.stringify(e),{method:"POST"}),a}}class i{static _namedCurve="P-256";constructor(e,t){this._clientPublicKey=e,this._sharedKey=t}static async build(e){const t=await o.generateKeyPair(i._namedCurve),s=await o.importPublicKey(e,this._namedCurve),r=await o.deriveKey(s,t.privateKey);return new i(t.publicKey,r)}async encrypt(e,t){const s=window.crypto.getRandomValues(new Uint8Array(12));return{iv:s,ciphertext:await window.crypto.subtle.encrypt({name:"AES-GCM",iv:s,additionalData:t},this._sharedKey,e)}}async decrypt(e,t){return window.crypto.subtle.decrypt({name:"AES-GCM",iv:e},this._sharedKey,t)}get clientPublicKey(){return this._clientPublicKey}}class o{static base64ToBytes(e){const t=atob(e);return Uint8Array.from(t,(e=>e.codePointAt(0)))}static bytesToBase64(e){const t=Array.from(e,(e=>String.fromCodePoint(e))).join("");return btoa(t)}static async generateKeyPair(e){const t={name:"ECDH",namedCurve:e};return window.crypto.subtle.generateKey(t,!1,["deriveKey"])}static async importPublicKey(e,t){const s={name:"ECDH",namedCurve:t};return window.crypto.subtle.importKey("spki",this.base64ToBytes(e),s,!1,[])}static exportPublicKey(e){return window.crypto.subtle.exportKey("spki",e)}static async deriveKey(e,t){return window.crypto.subtle.deriveKey({name:"ECDH",public:e},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}static async hash(e){const t=await window.crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e));return this.bytesToBase64(new Uint8Array(t))}}}function h(e,t,s,i){let r=null;const n="cookie"!==e.storage,o=new c(t,n,e.internalStorage,s);s(`Module is using ${n?"local storage":"cookies"} for internal storage.`);const a=u&&u.isCSTGOptionsValid(e.cstg,i);a?(s("Module is using client-side token generation."),r=null):e.paramToken?(r=e.paramToken,s("Read token from params",r)):e.serverCookieName&&(r=o.readProvidedCookie(e.serverCookieName),s("Read token from server-supplied cookie",r));let l=o.getStoredValueWithFallback();if(s("Loaded module-stored tokens:",l),l&&"string"==typeof l){if(!r&&!a)return s("Returning legacy cookie value."),{id:l};s("Discarding superseded legacy cookie."),l=null}if(r&&l&&l.originalToken?.advertising_token!==r.advertising_token&&(s("Server supplied new token - ignoring stored value.",l.originalToken?.advertising_token,r.advertising_token),l=null),a){const t=u.getValidIdentity(e.cstg,i);if(t&&(l&&u.isStoredTokenInvalid(t,l,s,i)&&(l=null),!l||Date.now()>l.latestToken.refresh_expires)){const r=u.generateTokenAndStore(e.apiBaseUrl,e.cstg,t,o,s,i);return s("Generate token using CSTG"),{callback:e=>{r.then((t=>{s("Token generation responded, passing the new token on.",t),e(t)}))}}}}const h=!l?.latestToken||r&&r.identity_expires>l.latestToken.identity_expires,p=h?r:l.latestToken;if(s("UID2 module selected latest token",h,p),!p||Date.now()>p.refresh_expires)return s("Newest available token is expired and not refreshable."),{id:null};if(Date.now()>p.identity_expires){const t=d(e.apiBaseUrl,p,e.clientId,o,s,i);return s("Token is expired but can be refreshed, attempting refresh."),{callback:e=>{t.then((t=>{s("Refresh reponded, passing the updated token on.",t),e(t)}))}}}Date.now()>p.refresh_from&&(s("Refreshing token in background with low priority."),d(e.apiBaseUrl,p,e.clientId,o,s,i));const g={originalToken:r??l?.originalToken,latestToken:p};return a&&(g.originalIdentity=l?.originalIdentity),o.storeValue(g),{id:g}}function p(e){const t=["emailHash","phoneHash","email","phone"];for(let s of t)if(e.hasOwnProperty(s))return{[s]:e[s]};return{}}(0,i.E)("uid2IdSystem_shared")}},e=>{e.O(0,[60802,51085],(()=>{return t=84259,e(e.s=t);var t}));e.O()}]);
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[56293],{84259:(e,t,s)=>{s.d(t,{E0:()=>y,kz:()=>o,wq:()=>g});var r=s(7873),i=s(68044),n=s(91069);const o="1.1";function a(e){return!!("object"==typeof e&&null!==e&&e.advertising_token&&e.identity_expires&&e.refresh_from&&e.refresh_token&&e.refresh_expires)}function l(e){return`UID2 shared library - ${e}`}function c(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),r=1;r<t;r++)s[r-1]=arguments[r];e(l(s[0]),...s.slice(1))}class d{constructor(e,t,s,r){this._baseUrl=e.baseUrl,this._clientVersion=t,this._logInfo=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return c(s,...t)},this._logWarn=r}createArrayBuffer(e){const t=new Uint8Array(e.length);for(let s=0;s<e.length;s++)t[s]=e.charCodeAt(s);return t}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isValidRefreshResponse(e){return this.hasStatusResponse(e)&&("optout"===e.status||"expired_token"===e.status||"success"===e.status&&e.body&&a(e.body))}ResponseToRefreshResult(e){return this.isValidRefreshResponse(e)?"success"===e.status?{status:e.status,identity:e.body}:e:l("Response didn't contain a valid status")}callRefreshApi(e){const t=this._baseUrl+"/v2/token/refresh";let s,r;const n=new Promise(((e,t)=>{s=e,r=t}));return this._logInfo("Sending refresh request",e),(0,i.RD)(t,{success:t=>{try{if(e.refresh_response_key){this._logInfo("Decrypting refresh API response");const i=this.createArrayBuffer(atob(t));window.crypto.subtle.importKey("raw",this.createArrayBuffer(atob(e.refresh_response_key)),{name:"AES-GCM"},!1,["decrypt"]).then((e=>{this._logInfo("Imported decryption key"),window.crypto.subtle.decrypt({name:"AES-GCM",iv:i.slice(0,12),tagLength:128},e,i.slice(12)).then((e=>{const t=String.fromCharCode(...new Uint8Array(e));this._logInfo("Decrypted to:",t);const i=JSON.parse(t),n=this.ResponseToRefreshResult(i);"string"==typeof n?r(l(n)):s(n)}),(e=>this._logWarn(l("Call to UID2 API failed"),e)))}),(e=>this._logWarn(l("Call to UID2 API failed"),e)))}else{this._logInfo("No response decryption key available, assuming unencrypted JSON");const e=JSON.parse(t),i=this.ResponseToRefreshResult(e);"string"==typeof i?r(l(i)):s(i)}}catch(e){r(l(t))}},error:(e,t)=>{try{this._logInfo("Error status, assuming unencrypted JSON");const e=JSON.parse(t.responseText),i=this.ResponseToRefreshResult(e);"string"==typeof i?r(l(i)):s(i)}catch(t){r(l(e))}}},e.refresh_token,{method:"POST",customHeaders:{"X-UID2-Client-Version":this._clientVersion}}),n}}class u{constructor(e,t,s,r){this._storage=e,this._preferLocalStorage=t,this._storageName=s,this._logInfo=function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];return c(r,...t)}}readCookie(e){return this._storage.cookiesAreEnabled()?this._storage.getCookie(e):null}readLocalStorage(e){return this._storage.localStorageIsEnabled()?this._storage.getDataFromLocalStorage(e):null}readModuleCookie(){return this.parseIfContainsBraces(this.readCookie(this._storageName))}writeModuleCookie(e){this._storage.setCookie(this._storageName,JSON.stringify(e),Date.now()+864e5)}readModuleStorage(){return this.parseIfContainsBraces(this.readLocalStorage(this._storageName))}writeModuleStorage(e){this._storage.setDataInLocalStorage(this._storageName,JSON.stringify(e))}readProvidedCookie(e){return JSON.parse(this.readCookie(e))}parseIfContainsBraces(e){return e?.includes("{")?JSON.parse(e):e}storeValue(e){this._preferLocalStorage?this.writeModuleStorage(e):this.writeModuleCookie(e)}getStoredValueWithFallback(){const e=this._preferLocalStorage?"local storage":"cookie",t=(this._preferLocalStorage?this.readModuleStorage:this.readModuleCookie).bind(this),s=(this._preferLocalStorage?this.writeModuleStorage:this.writeModuleCookie).bind(this),r=(this._preferLocalStorage?this.readModuleCookie:this.readModuleStorage).bind(this),i=t();if(i){if("string"==typeof i){const t=r();if(t&&"object"==typeof t)return this._logInfo(`${e} contained a basic token, but found a refreshable token fallback. Copying the fallback value to ${e}.`),s(t),t}}else{const t=r();if(t)return this._logInfo(`${e} was empty, but found a fallback value.`),"object"==typeof t&&(this._logInfo(`Copying the fallback value to ${e}.`),s(t)),t}return i}}function h(e,t,s,r,i,n){i("UID2 base url provided: ",e);return new d({baseUrl:e},s,i,n).callRefreshApi(t).then((e=>{i("Refresh endpoint responded with:",e);const s={originalToken:t,latestToken:e.identity};let n=r.getStoredValueWithFallback();return n?.originalIdentity&&(s.originalIdentity=n.originalIdentity),r.storeValue(s),s}))}let p;{const e=9;p={isCSTGOptionsValid(e,t){if("object"!=typeof e||null===e)return t('CSTG is not being used, but is included in the Prebid.js bundle. You can reduce the bundle size by passing "--disable UID2_CSTG" to the Prebid.js build.'),!1;const s=e;if(!s.serverPublicKey&&!s.subscriptionId)return t("CSTG has been enabled but its parameters have not been set."),!1;if("string"!=typeof s.serverPublicKey)return t("CSTG opts.serverPublicKey must be a string"),!1;const r=/^(UID2|EUID)-X-[A-Z]-.+/;return r.test(s.serverPublicKey)?"string"!=typeof s.subscriptionId?(t("CSTG opts.subscriptionId must be a string"),!1):0!==s.subscriptionId.length||(t("CSTG opts.subscriptionId is empty"),!1):(t(`CSTG opts.serverPublicKey must match the regular expression ${r}`),!1)},getValidIdentity(e,s){if(e.emailHash)return t.isBase64Hash(e.emailHash)?{email_hash:e.emailHash}:void s("CSTG opts.emailHash is invalid");if(e.phoneHash)return t.isBase64Hash(e.phoneHash)?{phone_hash:e.phoneHash}:void s("CSTG opts.phoneHash is invalid");if(e.email){const r=t.normalizeEmail(e.email);return void 0===r?void s("CSTG opts.email is invalid"):{email:r}}return e.phone?t.isNormalizedPhone(e.phone)?{phone:e.phone}:void s("CSTG opts.phone is invalid"):void 0},isStoredTokenInvalid(e,t,s,r){if(t){if("optout"===t.latestToken)return!0;const r=Object.values(e)[0];if(!this.isStoredTokenFromSameIdentity(t,r))return s("CSTG supplied new identity - ignoring stored value.",t.originalIdentity,e),!0}return!1},async generateTokenAndStore(e,t,r,i,n,o){n("UID2 cstg opts provided: ",JSON.stringify(t));const a=new s({baseUrl:e,cstg:t},n,o),l=await a.generateToken(r);n("CSTG endpoint responded with:",l);const c={originalIdentity:this.encodeOriginalIdentity(r),latestToken:l.identity};return i.storeValue(c),c},isStoredTokenFromSameIdentity:(e,t)=>!!e.originalIdentity&&(0,n.cyrb53Hash)(t,e.originalIdentity.salt)===e.originalIdentity.identity,encodeOriginalIdentity(e){const t=Object.values(e)[0],s=Math.floor(Math.random()*Math.pow(2,32));return{identity:(0,n.cyrb53Hash)(t,s),salt:s}}};class t{static EMAIL_EXTENSION_SYMBOL="+";static EMAIL_DOT=".";static GMAIL_DOMAIN="gmail.com";static isBase64Hash(e){if(!e||44!==e.length)return!1;try{return btoa(atob(e))===e}catch(e){return!1}}static isNormalizedPhone(e){return/^\+[0-9]{10,15}$/.test(e)}static normalizeEmail(e){if(!e||!e.length)return;const t=e.trim().toLowerCase();if(t.indexOf(" ")>0)return;const s=this.splitEmailIntoAddressAndDomain(t);if(!s)return;const{address:r,domain:i}=s,n=this.isGmail(i),o=this.normalizeAddressPart(r,n,n);return o?`${o}@${i}`:void 0}static splitEmailIntoAddressAndDomain(e){const t=e.split("@");if(2===t.length&&!t.some((e=>""===e)))return{address:t[0],domain:t[1]}}static isGmail(e){return e===this.GMAIL_DOMAIN}static dropExtension(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.EMAIL_EXTENSION_SYMBOL;return e.split(t)[0]}static normalizeAddressPart(e,t,s){let r=e;return t&&(r=r.replaceAll(this.EMAIL_DOT,"")),s&&(r=this.dropExtension(r)),r}}class s{constructor(e,t,s){this._baseUrl=e.baseUrl,this._serverPublicKey=e.cstg.serverPublicKey,this._subscriptionId=e.cstg.subscriptionId,this._logInfo=function(){for(var e=arguments.length,s=new Array(e),r=0;r<e;r++)s[r]=arguments[r];return c(t,...s)},this._logWarn=s}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isCstgApiSuccessResponse(e){return this.hasStatusResponse(e)&&"success"===e.status&&a(e.body)}isCstgApiOptoutResponse(e){return this.hasStatusResponse(e)&&"optout"===e.status}isCstgApiClientErrorResponse(e){return this.hasStatusResponse(e)&&"client_error"===e.status&&"string"==typeof e.message}isCstgApiForbiddenResponse(e){return this.hasStatusResponse(e)&&"invalid_http_origin"===e.status&&"string"==typeof e.message}stripPublicKeyPrefix(t){return t.substring(e)}async generateCstgRequest(e){if("email_hash"in e||"phone_hash"in e)return e;if("email"in e){return{email_hash:await o.hash(e.email)}}if("phone"in e){return{phone_hash:await o.hash(e.phone)}}}async generateToken(e){const t=await this.generateCstgRequest(e);this._logInfo("Building CSTG request for",t);const s=await r.build(this.stripPublicKeyPrefix(this._serverPublicKey)),i=new TextEncoder,n=Date.now(),{iv:a,ciphertext:l}=await s.encrypt(i.encode(JSON.stringify(t)),i.encode(JSON.stringify([n]))),c=await o.exportPublicKey(s.clientPublicKey),d={payload:o.bytesToBase64(new Uint8Array(l)),iv:o.bytesToBase64(new Uint8Array(a)),public_key:o.bytesToBase64(new Uint8Array(c)),timestamp:n,subscription_id:this._subscriptionId};return this.callCstgApi(d,s)}async callCstgApi(e,t){const s=this._baseUrl+"/v2/token/client-generate";let r,n;const a=new Promise(((e,t)=>{r=e,n=t}));return this._logInfo("Sending CSTG request",e),(0,i.RD)(s,{success:async(e,s)=>{try{const s=o.base64ToBytes(e),i=await t.decrypt(s.slice(0,12),s.slice(12)),a=(new TextDecoder).decode(i),c=JSON.parse(a);this.isCstgApiSuccessResponse(c)?r({status:"success",identity:c.body}):this.isCstgApiOptoutResponse(c)?r({status:"optout",identity:"optout"}):n(l(`API error: Response body was invalid for HTTP status 200: ${a}`))}catch(e){n(l(e))}},error:(e,t)=>{try{if(400===t.status){const e=JSON.parse(t.responseText);this.isCstgApiClientErrorResponse(e)?n(l(`Client error: ${e.message}`)):n(l(`UID2 API error: Response body was invalid for HTTP status 400: ${t.responseText}`))}else if(403===t.status){const e=JSON.parse(t.responseText);this.isCstgApiForbiddenResponse(t)?n(l(`Forbidden: ${e.message}`)):n(l(`UID2 API error: Response body was invalid for HTTP status 403: ${t.responseText}`))}else n(l(`UID2 API error: Unexpected HTTP status ${t.status}: ${e}`))}catch(t){n(l(e))}}},JSON.stringify(e),{method:"POST"}),a}}class r{static _namedCurve="P-256";constructor(e,t){this._clientPublicKey=e,this._sharedKey=t}static async build(e){const t=await o.generateKeyPair(r._namedCurve),s=await o.importPublicKey(e,this._namedCurve),i=await o.deriveKey(s,t.privateKey);return new r(t.publicKey,i)}async encrypt(e,t){const s=window.crypto.getRandomValues(new Uint8Array(12));return{iv:s,ciphertext:await window.crypto.subtle.encrypt({name:"AES-GCM",iv:s,additionalData:t},this._sharedKey,e)}}async decrypt(e,t){return window.crypto.subtle.decrypt({name:"AES-GCM",iv:e},this._sharedKey,t)}get clientPublicKey(){return this._clientPublicKey}}class o{static base64ToBytes(e){const t=atob(e);return Uint8Array.from(t,(e=>e.codePointAt(0)))}static bytesToBase64(e){const t=Array.from(e,(e=>String.fromCodePoint(e))).join("");return btoa(t)}static async generateKeyPair(e){const t={name:"ECDH",namedCurve:e};return window.crypto.subtle.generateKey(t,!1,["deriveKey"])}static async importPublicKey(e,t){const s={name:"ECDH",namedCurve:t};return window.crypto.subtle.importKey("spki",this.base64ToBytes(e),s,!1,[])}static exportPublicKey(e){return window.crypto.subtle.exportKey("spki",e)}static async deriveKey(e,t){return window.crypto.subtle.deriveKey({name:"ECDH",public:e},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}static async hash(e){const t=await window.crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e));return this.bytesToBase64(new Uint8Array(t))}}}function g(e,t,s,r){const i=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return c(s,...t)};let n=null;const o="cookie"!==e.storage,a=new u(t,o,e.internalStorage,i);i(`Module is using ${o?"local storage":"cookies"} for internal storage.`);const l=p&&p.isCSTGOptionsValid(e.cstg,r);l?(i("Module is using client-side token generation."),n=null):e.paramToken?(n=e.paramToken,i("Read token from params",n)):e.serverCookieName&&(n=a.readProvidedCookie(e.serverCookieName),i("Read token from server-supplied cookie",n));let d=a.getStoredValueWithFallback();if(i("Loaded module-stored tokens:",d),d&&"string"==typeof d){if(!n&&!l)return i("Returning legacy cookie value."),{id:d};i("Discarding superseded legacy cookie."),d=null}if(n&&d&&d.originalToken?.advertising_token!==n.advertising_token&&(i("Server supplied new token - ignoring stored value.",d.originalToken?.advertising_token,n.advertising_token),d=null),l){const t=p.getValidIdentity(e.cstg,r);if(t&&(d&&p.isStoredTokenInvalid(t,d,i,r)&&(d=null),!d||Date.now()>d.latestToken.refresh_expires)){const s=p.generateTokenAndStore(e.apiBaseUrl,e.cstg,t,a,i,r);return i("Generate token using CSTG"),{callback:e=>{s.then((t=>{i("Token generation responded, passing the new token on.",t),e(t)}))}}}}const g=!d?.latestToken||n&&n.identity_expires>d.latestToken.identity_expires,y=g?n:d.latestToken;if(i("UID2 module selected latest token",g,y),!y||Date.now()>y.refresh_expires)return i("Newest available token is expired and not refreshable."),{id:null};if(Date.now()>y.identity_expires){const t=h(e.apiBaseUrl,y,e.clientId,a,i,r);return i("Token is expired but can be refreshed, attempting refresh."),{callback:e=>{t.then((t=>{i("Refresh reponded, passing the updated token on.",t),e(t)}))}}}Date.now()>y.refresh_from&&(i("Refreshing token in background with low priority."),h(e.apiBaseUrl,y,e.clientId,a,i,r));const f={originalToken:n??d?.originalToken,latestToken:y};return l&&(f.originalIdentity=d?.originalIdentity),a.storeValue(f),{id:f}}function y(e){const t=["emailHash","phoneHash","email","phone"];for(let s of t)if(e.hasOwnProperty(s))return{[s]:e[s]};return{}}(0,r.E)("uid2IdSystem_shared")}},e=>{e.O(0,[60802,51085],(()=>{return t=84259,e(e.s=t);var t}));e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.pbjsChunk=self.pbjsChunk||[]).push([[2443],{14049:(e,t,n)=>{var i=n(7873),r=n(91069),d=n(70433),o=n(43272),s=n(57377),a=n(51252);const p="7.30V",u="9.
|
|
1
|
+
(self.pbjsChunk=self.pbjsChunk||[]).push([[2443],{14049:(e,t,n)=>{var i=n(7873),r=n(91069),d=n(70433),o=n(43272),s=n(57377),a=n(51252);const p="7.30V",u="9.6.0",l={standard:1,sticky:2};let c=!1;(0,r.logMessage)(`Initializing UDM Adapter. PBJS Version: ${u} with adapter version: ${p} Updated 2023 01 26`);const g={NON_MEASURABLE:-1,code:"underdogmedia",bidParams:[],isBidRequestValid:function(e){if(!e.params)return(0,r.logWarn)("[Underdog Media] bid params are missing"),!1;if(!e.params.siteId)return(0,r.logWarn)("[Underdog Media] siteId is missing"),!1;if(e.params.productId&&!l[e.params.productId])return(0,r.logWarn)("[Underdog Media] invalid productId"),!1;const t=e.mediaTypes&&e.mediaTypes.banner&&e.mediaTypes.banner.sizes?e.mediaTypes.banner.sizes:e.sizes;return!(!t||t.length<1)||((0,r.logWarn)("[Underdog Media] bid sizes are missing"),!1)},buildRequests:function(e,t){var n=[],i=0;let s={dt:10,gdpr:{},pbTimeout:+o.$W.getConfig("bidderTimeout")||3001,pbjsVersion:u,placements:[],ref:(0,d.A)(t,"refererInfo.page")?t.refererInfo.page:void 0,usp:{},userIds:{"33acrossId":(0,d.A)(e[0],"userId.33acrossId.envelope")?e[0].userId["33acrossId"].envelope:void 0,pubcid:(0,d.A)(e[0],"crumbs.pubcid")?e[0].crumbs.pubcid:void 0,unifiedId:(0,d.A)(e[0],"userId.tdid")?e[0].userId.tdid:void 0},version:p};if(e.forEach((e=>{let t={},o=e.mediaTypes&&e.mediaTypes.banner&&e.mediaTypes.banner.sizes?e.mediaTypes.banner.sizes:e.sizes;n=(0,r.flatten)(n,(0,r.parseSizesInput)(o)),i=+e.params.siteId;let p=e.adUnitCode,u=function(e){return document.getElementById(e)||document.getElementById(function(e){if((0,r.isGptPubadsDefined)()){const t=googletag.pubads().getSlots(),n=(0,a.mw)(e);for(let i=0;i<t.length;i++)if(n(t[i])){const n=t[i].getSlotElementId();return(0,r.logInfo)(`[Underdogmedia Adapter] Map ad unit path to HTML element id: '${e}' -> ${n}`),n}}return(0,r.logWarn)(`[Underdogmedia Adapter] Unable to locate element for ad unit code: '${e}'`),null}(e))}(p),c=function(e){return e.reduce(((e,t)=>t.h*t.w<e.h*e.w?t:e))}(o);if(t.sizes=(0,r.parseSizesInput)(o),t.adUnitCode=p,t.productId=l[e.params.productId]||l.standard,(0,d.A)(e,"params.productId")?"standard"===e.params.productId?t.productId=1:"adhesion"===e.params.productId&&(t.productId=2):t.productId=1,t.gpid=(0,d.A)(e,"ortb2Imp.ext.gpid")?e.ortb2Imp.ext.gpid:void 0,function(e){return!function(){try{return(0,r.getWindowSelf)()!==(0,r.getWindowTop)()}catch(e){return!0}}()&&null!==e}(u)){const e={w:c[0],h:c[1]};let n=Math.round(function(e,t){let{w:n,h:i}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return"visible"===t.document.visibilityState?function(e,t){let{w:n,h:i}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=function(e){let{w:t,h:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{width:i,height:r,left:d,top:o,right:s,bottom:a}=e.getBoundingClientRect();(0===i||0===r)&&t&&n&&(i=t,r=n,s=d+t,a=o+n);return{width:i,height:r,left:d,top:o,right:s,bottom:a}}(e,{w:n,h:i}),d=function(e){const t={left:e[0].left,right:e[0].right,top:e[0].top,bottom:e[0].bottom};for(let n=1;n<e.length;++n){if(t.left=Math.max(t.left,e[n].left),t.right=Math.min(t.right,e[n].right),t.left>=t.right)return null;if(t.top=Math.max(t.top,e[n].top),t.bottom=Math.min(t.bottom,e[n].bottom),t.top>=t.bottom)return null}return t.width=t.right-t.left,t.height=t.bottom-t.top,t}([{left:0,top:0,right:t.innerWidth,bottom:t.innerHeight},r]);let o,s;if(null!==d)return o=d.width*d.height,s=r.width*r.height,o/s*100;return 0}(e,t,{w:n,h:i}):0}(u,(0,r.getWindowTop)(),e));t.viewability=n}else t.viewability=-1;s.placements.push(t)})),s.sid=i,t&&t.gdprConsent&&(void 0!==t.gdprConsent.gdprApplies&&(s.gdpr.gdprApplies=!!t.gdprConsent.gdprApplies),t.gdprConsent.vendorData&&t.gdprConsent.vendorData.vendorConsents&&void 0!==t.gdprConsent.vendorData.vendorConsents[159]&&(s.gdpr.consentGiven=!!t.gdprConsent.vendorData.vendorConsents[159]),void 0!==t.gdprConsent.consentString&&(s.gdpr.consentData=t.gdprConsent.consentString)),t.uspConsent&&(s.usp.uspConsent=t.uspConsent),!s.gdpr||!s.gdpr.gdprApplies||s.gdpr.consentGiven)return{method:"POST",url:`https://udmserve.net/udm/img.fetch?sid=${i}`,data:s,bidParams:e}},getUserSyncs:function(e,t){if(!c&&t.length>0&&t[0].body&&t[0].body.userSyncs&&t[0].body.userSyncs.length>0){c=!0;return t[0].body.userSyncs.filter((t=>{const{type:n}=t;return!(!e.iframeEnabled||"iframe"!==n)||(!(!e.pixelEnabled||"image"!==n)||void 0)}))}},interpretResponse:function(e,t){const n=[];return e.body.mids.forEach((e=>{const i=t.bidParams.find((t=>{if(e.ad_unit_code===t.adUnitCode)return!0}));if(!i)return;const r={requestId:i.bidId,cpm:parseFloat(e.cpm),width:e.width,height:e.height,ad:e.ad_code_html,creativeId:e.mid,currency:"USD",netRevenue:!1,ttl:e.ttl||300,meta:{advertiserDomains:e.advertiser_domains||[]}};r.cpm<=0||r.ad.length<=0||(r.ad+=function(e,t,n){let i=t.notification_url;const r=i.indexOf(";version=");r+1&&(i=i.substring(0,r));i+=`;version=${p}`,i+=";cb="+Math.random(),i+=";qqq="+1/e.cpm,i+=";hbt="+o.$W.getConfig("bidderTimeout"),i+=";style=adapter",i+=";vis="+encodeURIComponent(document.visibilityState),i+=";traffic_info="+encodeURIComponent(JSON.stringify(function(){for(var e,t={},n=window.location.href.slice(window.location.href.indexOf("?")+1).split("&"),i=0;i<n.length;i++)(e=n[i].split("="))[0].match(/^utm_/)&&(t[e[0]]=e[1].substr(0,150));return t}())),n.params.subId&&(i+=";subid="+encodeURIComponent(n.params.subId));return'<script async src="'+i+'"><\/script>'}(r,e,i),n.push(r))})),n}};(0,s.a$)(g),(0,i.E)("underdogmediaBidAdapter")}},e=>{e.O(0,[33005,60802,51085],(()=>{return t=14049,e(e.s=t);var t}));e.O()}]);
|