prebid.js 9.4.0 → 9.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.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/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/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 +43 -7
- 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 +201 -193
- 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/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/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/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/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/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/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/adagioBidAdapter.js +1 -1
- 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/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 +3 -1
- 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/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/mediafuseBidAdapter.js +1 -1
- package/modules/mediagoBidAdapter.js +7 -176
- package/modules/medianetBidAdapter.js +101 -40
- package/modules/mgidBidAdapter.js +3 -1
- package/modules/mobianRtdProvider.js +16 -2
- package/modules/nextMillenniumBidAdapter.js +1 -27
- package/modules/nobidBidAdapter.js +1 -1
- 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/pubmaticBidAdapter.js +12 -0
- package/modules/pubxaiAnalyticsAdapter.js +306 -164
- package/modules/relevatehealthBidAdapter.js +2 -1
- package/modules/richaudienceBidAdapter.js +1 -1
- package/modules/rtdModule/index.js +5 -3
- package/modules/sirdataRtdProvider.js +2 -0
- package/modules/sizeMapping.js +2 -5
- package/modules/smaatoBidAdapter.js +18 -1
- package/modules/smilewantedBidAdapter.js +26 -22
- package/modules/snigelBidAdapter.js +1 -1
- package/modules/sonobiBidAdapter.js +5 -10
- 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/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/adRendering.js +7 -3
- 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/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/banner_sync.html +97 -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/e2e/banner/basic_banner_ad.spec.js +20 -14
- package/test/spec/fpd/gdpr_spec.js +1 -1
- package/test/spec/libraries/userAgentUtils_spec.js +109 -0
- 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/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/intentIqAnalyticsAdapter_spec.js +172 -0
- package/test/spec/modules/jwplayerRtdProvider_spec.js +61 -0
- 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/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/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/utils_spec.js +19 -0
- /package/src/utils/{gpdr.js → gdpr.js} +0 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
### Overview
|
|
2
|
+
|
|
3
|
+
Symitri DAP Real time data Provider automatically invokes the DAP APIs and submit audience segments and the SAID to the bid-stream.
|
|
4
|
+
|
|
5
|
+
### Integration
|
|
6
|
+
|
|
7
|
+
1) Build the symitriDapRTD module into the Prebid.js package with:
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
gulp build --modules=symitriDapRtdProvider,...
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
2) Use `setConfig` to instruct Prebid.js to initilaize the symitriDapRtdProvider module, as specified below.
|
|
14
|
+
|
|
15
|
+
### Configuration
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
pbjs.setConfig({
|
|
19
|
+
realTimeData: {
|
|
20
|
+
auctionDelay: 2000,
|
|
21
|
+
dataProviders: [
|
|
22
|
+
{
|
|
23
|
+
name: "dap",
|
|
24
|
+
waitForIt: true,
|
|
25
|
+
params: {
|
|
26
|
+
apiHostname: '<see your Symitri account rep>',
|
|
27
|
+
apiVersion: "x1",
|
|
28
|
+
domain: 'your-domain.com',
|
|
29
|
+
identityType: 'email' | 'mobile' | ... | 'dap-signature:1.3.0',
|
|
30
|
+
segtax: 504,
|
|
31
|
+
dapEntropyUrl: 'https://sym-dist.symitri.net/dapentropy.js',
|
|
32
|
+
dapEntropyTimeout: 1500 // Maximum time for dapentropy to run
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Please reach out to your Symitri account representative(Prebid@symitri.com) to get provisioned on the DAP platform.
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### Testing
|
|
44
|
+
To view an example of available segments returned by dap:
|
|
45
|
+
```
|
|
46
|
+
‘gulp serve --modules=rtdModule,symitriDapRtdProvider,appnexusBidAdapter,sovrnBidAdapter’
|
|
47
|
+
```
|
|
48
|
+
and then point your browser at:
|
|
49
|
+
"http://localhost:9999/integrationExamples/gpt/symitridap_segments_example.html"
|
|
@@ -1,24 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {getBidRequest} from '../src/utils.js';
|
|
1
|
+
import {_each, getDefinedParams, parseGPTSingleSizeArrayToRtbSize} from '../src/utils.js';
|
|
3
2
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
4
3
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
4
|
+
import {formatRequest, getRtbBid, getSiteObj, videoBid, bannerBid, createVideoTag} from '../libraries/targetVideoUtils/bidderUtils.js';
|
|
5
|
+
import {SOURCE, GVLID, BIDDER_CODE, VIDEO_PARAMS, BANNER_ENDPOINT_URL, VIDEO_ENDPOINT_URL, MARGIN, TIME_TO_LIVE} from '../libraries/targetVideoUtils/constants.js';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
|
|
8
9
|
* @typedef {import('../src/adapters/bidderFactory.js').Bid} Bid
|
|
9
10
|
*/
|
|
10
11
|
|
|
11
|
-
const SOURCE = 'pbjs';
|
|
12
|
-
const BIDDER_CODE = 'targetVideo';
|
|
13
|
-
const ENDPOINT_URL = 'https://ib.adnxs.com/ut/v3/prebid';
|
|
14
|
-
const MARGIN = 1.35;
|
|
15
|
-
const GVLID = 786;
|
|
16
|
-
|
|
17
12
|
export const spec = {
|
|
18
13
|
|
|
19
14
|
code: BIDDER_CODE,
|
|
20
15
|
gvlid: GVLID,
|
|
21
|
-
supportedMediaTypes: [BANNER],
|
|
16
|
+
supportedMediaTypes: [BANNER, VIDEO],
|
|
22
17
|
|
|
23
18
|
/**
|
|
24
19
|
* Determines whether or not the given bid request is valid.
|
|
@@ -37,35 +32,114 @@ export const spec = {
|
|
|
37
32
|
* @return ServerRequest Info describing the request to the server.
|
|
38
33
|
*/
|
|
39
34
|
buildRequests: function(bidRequests, bidderRequest) {
|
|
40
|
-
const
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
sdk: {
|
|
45
|
-
source: SOURCE,
|
|
46
|
-
version: '$prebid.version$'
|
|
47
|
-
},
|
|
48
|
-
schain: schain
|
|
35
|
+
const requests = [];
|
|
36
|
+
const sdk = {
|
|
37
|
+
source: SOURCE,
|
|
38
|
+
version: '$prebid.version$'
|
|
49
39
|
};
|
|
50
40
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
41
|
+
for (let {params, bidId, sizes, mediaTypes} of bidRequests) {
|
|
42
|
+
for (const mediaType in mediaTypes) {
|
|
43
|
+
switch (mediaType) {
|
|
44
|
+
case VIDEO: {
|
|
45
|
+
const video = mediaTypes[VIDEO];
|
|
46
|
+
const placementId = params.placementId;
|
|
47
|
+
const site = getSiteObj();
|
|
48
|
+
|
|
49
|
+
if (sizes && !Array.isArray(sizes[0])) sizes = [sizes];
|
|
50
|
+
|
|
51
|
+
const payload = {
|
|
52
|
+
sdk,
|
|
53
|
+
id: bidderRequest.bidderRequestId,
|
|
54
|
+
site,
|
|
55
|
+
imp: []
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const imp = {
|
|
59
|
+
ext: {
|
|
60
|
+
prebid: {
|
|
61
|
+
storedrequest: { id: placementId }
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
video: getDefinedParams(video, VIDEO_PARAMS)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (video.playerSize) {
|
|
68
|
+
imp.video = Object.assign(
|
|
69
|
+
imp.video, parseGPTSingleSizeArrayToRtbSize(video.playerSize[0]) || {}
|
|
70
|
+
);
|
|
71
|
+
} else if (video.w && video.h) {
|
|
72
|
+
imp.video.w = video.w;
|
|
73
|
+
imp.video.h = video.h;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
payload.imp.push(imp);
|
|
77
|
+
|
|
78
|
+
const gdprConsent = bidderRequest && bidderRequest.gdprConsent;
|
|
79
|
+
const uspConsent = bidderRequest && bidderRequest.uspConsent;
|
|
80
|
+
|
|
81
|
+
if (gdprConsent || uspConsent) {
|
|
82
|
+
payload.regs = { ext: {} };
|
|
83
|
+
|
|
84
|
+
if (uspConsent) {
|
|
85
|
+
payload.regs.ext.us_privacy = uspConsent;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
if (gdprConsent) {
|
|
89
|
+
if (typeof gdprConsent.gdprApplies !== 'undefined') {
|
|
90
|
+
payload.regs.ext.gdpr = gdprConsent.gdprApplies ? 1 : 0;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
if (typeof gdprConsent.consentString !== 'undefined') {
|
|
94
|
+
payload.user = {
|
|
95
|
+
ext: { consent: gdprConsent.consentString }
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
if (bidRequests[0].schain) {
|
|
102
|
+
payload.schain = bidRequests[0].schain;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
requests.push(formatRequest({ payload, url: VIDEO_ENDPOINT_URL, bidId }));
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
case BANNER: {
|
|
110
|
+
const tags = bidRequests.map(createVideoTag);
|
|
111
|
+
const schain = bidRequests[0].schain;
|
|
112
|
+
|
|
113
|
+
const payload = {
|
|
114
|
+
tags,
|
|
115
|
+
sdk,
|
|
116
|
+
schain,
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
if (bidderRequest && bidderRequest.gdprConsent) {
|
|
120
|
+
payload.gdpr_consent = {
|
|
121
|
+
consent_string: bidderRequest.gdprConsent.consentString,
|
|
122
|
+
consent_required: bidderRequest.gdprConsent.gdprApplies
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
if (bidderRequest.gdprConsent.addtlConsent && bidderRequest.gdprConsent.addtlConsent.indexOf('~') !== -1) {
|
|
126
|
+
let ac = bidderRequest.gdprConsent.addtlConsent;
|
|
127
|
+
let acStr = ac.substring(ac.indexOf('~') + 1);
|
|
128
|
+
payload.gdpr_consent.addtl_consent = acStr.split('.').map(id => parseInt(id, 10));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (bidderRequest && bidderRequest.uspConsent) {
|
|
133
|
+
payload.us_privacy = bidderRequest.uspConsent
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return formatRequest({ payload, url: BANNER_ENDPOINT_URL, bidderRequest });
|
|
137
|
+
}
|
|
138
|
+
}
|
|
61
139
|
}
|
|
62
140
|
}
|
|
63
141
|
|
|
64
|
-
|
|
65
|
-
payload.us_privacy = bidderRequest.uspConsent
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return formatRequest(payload, bidderRequest);
|
|
142
|
+
return requests;
|
|
69
143
|
},
|
|
70
144
|
|
|
71
145
|
/**
|
|
@@ -74,139 +148,33 @@ export const spec = {
|
|
|
74
148
|
* @param {*} serverResponse A successful response from the server.
|
|
75
149
|
* @return {Bid[]} An array of bids which were nested inside the server.
|
|
76
150
|
*/
|
|
77
|
-
interpretResponse: function(serverResponse, { bidderRequest }) {
|
|
151
|
+
interpretResponse: function(serverResponse, { bidderRequest, ...bidRequest }) {
|
|
78
152
|
serverResponse = serverResponse.body;
|
|
153
|
+
const currency = serverResponse.cur;
|
|
79
154
|
const bids = [];
|
|
80
155
|
|
|
81
156
|
if (serverResponse.tags) {
|
|
82
157
|
serverResponse.tags.forEach(serverBid => {
|
|
83
158
|
const rtbBid = getRtbBid(serverBid);
|
|
84
159
|
if (rtbBid && rtbBid.cpm !== 0 && rtbBid.ad_type == VIDEO) {
|
|
85
|
-
bids.push(
|
|
160
|
+
bids.push(bannerBid(serverBid, rtbBid, bidderRequest, MARGIN));
|
|
86
161
|
}
|
|
87
162
|
});
|
|
88
163
|
}
|
|
89
164
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
function getSizes(request) {
|
|
96
|
-
let sizes = request.sizes;
|
|
97
|
-
if (!sizes && request.mediaTypes && request.mediaTypes.banner && request.mediaTypes.banner.sizes) {
|
|
98
|
-
sizes = request.mediaTypes.banner.sizes;
|
|
99
|
-
}
|
|
100
|
-
if (Array.isArray(sizes) && !Array.isArray(sizes[0])) {
|
|
101
|
-
sizes = [sizes[0], sizes[1]];
|
|
102
|
-
}
|
|
103
|
-
if (!Array.isArray(sizes) || !Array.isArray(sizes[0])) {
|
|
104
|
-
sizes = [[0, 0]];
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
return sizes;
|
|
108
|
-
}
|
|
165
|
+
if (serverResponse.seatbid) {
|
|
166
|
+
_each(serverResponse.seatbid, (resp) => {
|
|
167
|
+
_each(resp.bid, (bid) => {
|
|
168
|
+
const requestId = bidRequest.bidId;
|
|
169
|
+
const params = bidRequest.params;
|
|
109
170
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
};
|
|
114
|
-
const request = {
|
|
115
|
-
method: 'POST',
|
|
116
|
-
url: ENDPOINT_URL,
|
|
117
|
-
data: JSON.stringify(payload),
|
|
118
|
-
bidderRequest,
|
|
119
|
-
options
|
|
120
|
-
};
|
|
121
|
-
|
|
122
|
-
return request;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Create video auction.
|
|
127
|
-
*
|
|
128
|
-
* @param {*} serverResponse A successful response from the server.
|
|
129
|
-
* @return {Bid[]} An array of bids which were nested inside the server.
|
|
130
|
-
*/
|
|
131
|
-
function createVideoTag(bid) {
|
|
132
|
-
const tag = {};
|
|
133
|
-
tag.id = parseInt(bid.params.placementId, 10);
|
|
134
|
-
tag.gpid = 'targetVideo';
|
|
135
|
-
tag.sizes = getSizes(bid);
|
|
136
|
-
tag.primary_size = tag.sizes[0];
|
|
137
|
-
tag.ad_types = [VIDEO];
|
|
138
|
-
tag.uuid = bid.bidId;
|
|
139
|
-
tag.allow_smaller_sizes = false;
|
|
140
|
-
tag.use_pmt_rule = false;
|
|
141
|
-
tag.prebid = true;
|
|
142
|
-
tag.disable_psa = true;
|
|
143
|
-
tag.hb_source = 1;
|
|
144
|
-
tag.require_asset_url = true;
|
|
145
|
-
tag.video = {
|
|
146
|
-
playback_method: 2,
|
|
147
|
-
skippable: true
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
return tag;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Unpack the Server's Bid into a Prebid-compatible one.
|
|
155
|
-
* @param serverBid
|
|
156
|
-
* @param rtbBid
|
|
157
|
-
* @param bidderRequest
|
|
158
|
-
* @return Bid
|
|
159
|
-
*/
|
|
160
|
-
function newBid(serverBid, rtbBid, bidderRequest) {
|
|
161
|
-
const bidRequest = getBidRequest(serverBid.uuid, [bidderRequest]);
|
|
162
|
-
const sizes = getSizes(bidRequest);
|
|
163
|
-
const bid = {
|
|
164
|
-
requestId: serverBid.uuid,
|
|
165
|
-
cpm: rtbBid.cpm / MARGIN,
|
|
166
|
-
creativeId: rtbBid.creative_id,
|
|
167
|
-
dealId: rtbBid.deal_id,
|
|
168
|
-
currency: 'USD',
|
|
169
|
-
netRevenue: true,
|
|
170
|
-
width: sizes[0][0],
|
|
171
|
-
height: sizes[0][1],
|
|
172
|
-
ttl: 300,
|
|
173
|
-
adUnitCode: bidRequest.adUnitCode,
|
|
174
|
-
appnexus: {
|
|
175
|
-
buyerMemberId: rtbBid.buyer_member_id,
|
|
176
|
-
dealPriority: rtbBid.deal_priority,
|
|
177
|
-
dealCode: rtbBid.deal_code
|
|
171
|
+
bids.push(videoBid(bid, requestId, currency, params, TIME_TO_LIVE));
|
|
172
|
+
});
|
|
173
|
+
});
|
|
178
174
|
}
|
|
179
|
-
};
|
|
180
|
-
|
|
181
|
-
if (rtbBid.rtb.video) {
|
|
182
|
-
Object.assign(bid, {
|
|
183
|
-
vastImpUrl: rtbBid.notify_url,
|
|
184
|
-
ad: getBannerHtml(rtbBid.notify_url + '&redir=' + encodeURIComponent(rtbBid.rtb.video.asset_url)),
|
|
185
|
-
ttl: 3600
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
return bid;
|
|
190
|
-
}
|
|
191
175
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
function getBannerHtml(vastUrl) {
|
|
197
|
-
return `<!DOCTYPE html>
|
|
198
|
-
<html lang="en">
|
|
199
|
-
<head>
|
|
200
|
-
<meta charset="UTF-8">
|
|
201
|
-
<title></title>
|
|
202
|
-
<style>html, body {width: 100%; height: 100%; margin: 0;}</style>
|
|
203
|
-
</head>
|
|
204
|
-
<body>
|
|
205
|
-
<div id="targetVideoPlayer"></div>
|
|
206
|
-
<script src="https://player.target-video.com/custom/targetvideo-banner.js"></script>
|
|
207
|
-
<script>initPlayer("${vastUrl}");</script>
|
|
208
|
-
</body>
|
|
209
|
-
</html>`;
|
|
176
|
+
return bids;
|
|
177
|
+
}
|
|
210
178
|
}
|
|
211
179
|
|
|
212
180
|
registerBidder(spec);
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
```
|
|
4
4
|
Module Name: Target Video Bid Adapter
|
|
5
5
|
Module Type: Bidder Adapter
|
|
6
|
-
|
|
6
|
+
Maintainers: grajzer@gmail.com, danijel.ristic@target-video.com
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
# Description
|
|
10
10
|
|
|
11
11
|
Connects to Appnexus exchange for bids.
|
|
12
12
|
|
|
13
|
-
TargetVideo bid adapter supports Banner.
|
|
13
|
+
TargetVideo bid adapter supports Banner and Video.
|
|
14
14
|
|
|
15
15
|
# Test Parameters
|
|
16
|
-
```
|
|
16
|
+
```js
|
|
17
17
|
var adUnits = [
|
|
18
18
|
// Banner adUnit
|
|
19
19
|
{
|
|
@@ -29,6 +29,23 @@ var adUnits = [
|
|
|
29
29
|
placementId: 13232361
|
|
30
30
|
}
|
|
31
31
|
}]
|
|
32
|
+
},
|
|
33
|
+
// Video adUnit
|
|
34
|
+
{
|
|
35
|
+
mediaTypes: {
|
|
36
|
+
video: {
|
|
37
|
+
playerSize: [[640, 360]],
|
|
38
|
+
context: 'instream',
|
|
39
|
+
playbackmethod: [1, 2, 3, 4]
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
bids: [{
|
|
43
|
+
bidder: 'targetVideo',
|
|
44
|
+
params: {
|
|
45
|
+
placementId: 12345,
|
|
46
|
+
reserve: 0,
|
|
47
|
+
}
|
|
48
|
+
}]
|
|
32
49
|
}
|
|
33
50
|
];
|
|
34
51
|
```
|
package/modules/userId/eids.js
CHANGED
package/modules/utiqIdSystem.js
CHANGED
|
@@ -27,11 +27,6 @@ function getUtiqFromStorage() {
|
|
|
27
27
|
let utiqPassStorage = JSON.parse(
|
|
28
28
|
storage.getDataFromLocalStorage('utiqPass')
|
|
29
29
|
);
|
|
30
|
-
logInfo(
|
|
31
|
-
`${LOG_PREFIX}: Local storage utiqPass: ${JSON.stringify(
|
|
32
|
-
utiqPassStorage
|
|
33
|
-
)}`
|
|
34
|
-
);
|
|
35
30
|
|
|
36
31
|
if (
|
|
37
32
|
utiqPassStorage &&
|
|
@@ -40,12 +35,19 @@ function getUtiqFromStorage() {
|
|
|
40
35
|
utiqPassStorage.connectId.idGraph.length > 0
|
|
41
36
|
) {
|
|
42
37
|
utiqPass = utiqPassStorage.connectId.idGraph[0];
|
|
38
|
+
|
|
39
|
+
logInfo(
|
|
40
|
+
`${LOG_PREFIX}: Local storage utiqPass: ${JSON.stringify(
|
|
41
|
+
utiqPassStorage
|
|
42
|
+
)}`
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
logInfo(
|
|
46
|
+
`${LOG_PREFIX}: Graph of utiqPass: ${JSON.stringify(
|
|
47
|
+
utiqPass
|
|
48
|
+
)}`
|
|
49
|
+
);
|
|
43
50
|
}
|
|
44
|
-
logInfo(
|
|
45
|
-
`${LOG_PREFIX}: Graph of utiqPass: ${JSON.stringify(
|
|
46
|
-
utiqPass
|
|
47
|
-
)}`
|
|
48
|
-
);
|
|
49
51
|
|
|
50
52
|
return {
|
|
51
53
|
utiq:
|
|
@@ -13,8 +13,8 @@ let optout;
|
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Check if data passed is empty
|
|
16
|
-
* @param {*}
|
|
17
|
-
* @returns {Boolean} is
|
|
16
|
+
* @param {*} data to test against
|
|
17
|
+
* @returns {Boolean} is data empty
|
|
18
18
|
*/
|
|
19
19
|
function isEmptyData(data) {
|
|
20
20
|
let check = true;
|
|
@@ -30,10 +30,10 @@ function isEmptyData(data) {
|
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* Check if required keys exist in data object
|
|
33
|
-
* @param {Object} data object
|
|
34
|
-
* @param {Array} array of required keys
|
|
35
|
-
* @param {String} object path (for printing warning)
|
|
36
|
-
* @param {Number} index of object value in the data array (for printing warning)
|
|
33
|
+
* @param {Object} obj data object
|
|
34
|
+
* @param {Array} required array of required keys
|
|
35
|
+
* @param {String} parent object path (for printing warning)
|
|
36
|
+
* @param {Number} i index of object value in the data array (for printing warning)
|
|
37
37
|
* @returns {Boolean} is requirements fulfilled
|
|
38
38
|
*/
|
|
39
39
|
function getRequiredData(obj, required, parent, i) {
|
|
@@ -51,8 +51,8 @@ function getRequiredData(obj, required, parent, i) {
|
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* Check if data type is valid
|
|
54
|
-
* @param {*} value to test against
|
|
55
|
-
* @param {Object} object containing type definition and if should be array bool
|
|
54
|
+
* @param {*} data value to test against
|
|
55
|
+
* @param {Object} mapping object containing type definition and if should be array bool
|
|
56
56
|
* @returns {Boolean} is type fulfilled
|
|
57
57
|
*/
|
|
58
58
|
function typeValidation(data, mapping) {
|
|
@@ -77,10 +77,10 @@ function typeValidation(data, mapping) {
|
|
|
77
77
|
|
|
78
78
|
/**
|
|
79
79
|
* Validates ortb2 data arrays and filters out invalid data
|
|
80
|
-
* @param {Array} ortb2 data array
|
|
81
|
-
* @param {Object} object defining child type and if array
|
|
82
|
-
* @param {String} config path of data array
|
|
83
|
-
* @param {String} parent path for logging warnings
|
|
80
|
+
* @param {Array} arr ortb2 data array
|
|
81
|
+
* @param {Object} child object defining child type and if array
|
|
82
|
+
* @param {String} path config path of data array
|
|
83
|
+
* @param {String} parent parent path for logging warnings
|
|
84
84
|
* @returns {Array} validated/filtered data
|
|
85
85
|
*/
|
|
86
86
|
export function filterArrayData(arr, child, path, parent) {
|
|
@@ -136,9 +136,9 @@ export function filterArrayData(arr, child, path, parent) {
|
|
|
136
136
|
|
|
137
137
|
/**
|
|
138
138
|
* Validates ortb2 object and filters out invalid data
|
|
139
|
-
* @param {Object} ortb2 object
|
|
140
|
-
* @param {String} config path of data array
|
|
141
|
-
* @param {String} parent path for logging warnings
|
|
139
|
+
* @param {Object} fpd ortb2 object
|
|
140
|
+
* @param {String} path config path of data array
|
|
141
|
+
* @param {String} parent parent path for logging warnings
|
|
142
142
|
* @returns {Object} validated/filtered data
|
|
143
143
|
*/
|
|
144
144
|
export function validateFpd(fpd, path = '', parent = '') {
|
|
@@ -190,6 +190,8 @@ export function validateFpd(fpd, path = '', parent = '') {
|
|
|
190
190
|
|
|
191
191
|
/**
|
|
192
192
|
* Run validation on global and bidder config data for ortb2
|
|
193
|
+
* @param {Object} data global and bidder config data
|
|
194
|
+
* @returns {Object} validated data
|
|
193
195
|
*/
|
|
194
196
|
function runValidations(data) {
|
|
195
197
|
return {
|
|
@@ -200,6 +202,9 @@ function runValidations(data) {
|
|
|
200
202
|
|
|
201
203
|
/**
|
|
202
204
|
* Sets default values to ortb2 if exists and adds currency and ortb2 setConfig callbacks on init
|
|
205
|
+
* @param {Object} fpdConf configuration object
|
|
206
|
+
* @param {Object} data ortb2 data
|
|
207
|
+
* @returns {Object} processed data
|
|
203
208
|
*/
|
|
204
209
|
export function processFpd(fpdConf, data) {
|
|
205
210
|
// Checks for existsnece of pubcid optout cookie/storage
|
|
@@ -210,11 +215,11 @@ export function processFpd(fpdConf, data) {
|
|
|
210
215
|
return (!fpdConf.skipValidations) ? runValidations(data) : data;
|
|
211
216
|
}
|
|
212
217
|
|
|
213
|
-
/** @type {
|
|
218
|
+
/** @type {{name: string, queue: number, processFpd: function}} */
|
|
214
219
|
export const validationSubmodule = {
|
|
215
220
|
name: 'validation',
|
|
216
221
|
queue: 1,
|
|
217
222
|
processFpd
|
|
218
223
|
}
|
|
219
224
|
|
|
220
|
-
submodule('firstPartyData', validationSubmodule)
|
|
225
|
+
submodule('firstPartyData', validationSubmodule);
|
|
@@ -13,6 +13,9 @@ import { submodule } from '../src/hook.js';
|
|
|
13
13
|
import stateFactory from '../libraries/video/shared/state.js';
|
|
14
14
|
import { PLAYBACK_MODE } from '../libraries/video/constants/constants.js';
|
|
15
15
|
import { getEventHandler } from '../libraries/video/shared/eventHandler.js';
|
|
16
|
+
/**
|
|
17
|
+
* @typedef {import('../libraries/video/shared/state.js').State} State
|
|
18
|
+
*/
|
|
16
19
|
|
|
17
20
|
/*
|
|
18
21
|
Plugins of interest:
|
|
@@ -33,7 +33,7 @@ const LOG_ERROR_MESS = {
|
|
|
33
33
|
onlyVideoInstream: `Only video ${VIDEO_INSTREAM} supported`,
|
|
34
34
|
videoMissing: 'Bid request videoType property is missing - '
|
|
35
35
|
};
|
|
36
|
-
const currencyWhiteList = ['EUR', 'USD', 'GBP', 'PLN'];
|
|
36
|
+
const currencyWhiteList = ['EUR', 'USD', 'GBP', 'PLN', 'CHF', 'SEK'];
|
|
37
37
|
export const storage = getStorageManager({bidderCode: BIDDER_CODE});
|
|
38
38
|
const _bidResponseTimeLogged = [];
|
|
39
39
|
export const spec = {
|
|
@@ -13,9 +13,10 @@ import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
|
13
13
|
import {BANNER} from '../src/mediaTypes.js';
|
|
14
14
|
import {find, includes} from '../src/polyfill.js';
|
|
15
15
|
import {getStorageManager} from '../src/storageManager.js';
|
|
16
|
-
import {hasPurpose1Consent} from '../src/utils/
|
|
16
|
+
import {hasPurpose1Consent} from '../src/utils/gdpr.js';
|
|
17
17
|
import {getANKeywordParam} from '../libraries/appnexusUtils/anKeywords.js';
|
|
18
18
|
import {convertCamelToUnderscore} from '../libraries/appnexusUtils/anUtils.js';
|
|
19
|
+
import { transformSizes } from '../libraries/sizeUtils/tranformSize.js';
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
|
|
@@ -470,32 +471,6 @@ function bidToTag(bid) {
|
|
|
470
471
|
return tag;
|
|
471
472
|
}
|
|
472
473
|
|
|
473
|
-
/* Turn bid request sizes into ut-compatible format */
|
|
474
|
-
function transformSizes(requestSizes) {
|
|
475
|
-
let sizes = [];
|
|
476
|
-
let sizeObj = {};
|
|
477
|
-
|
|
478
|
-
if (
|
|
479
|
-
isArray(requestSizes) &&
|
|
480
|
-
requestSizes.length === 2 &&
|
|
481
|
-
!isArray(requestSizes[0])
|
|
482
|
-
) {
|
|
483
|
-
sizeObj.width = parseInt(requestSizes[0], 10);
|
|
484
|
-
sizeObj.height = parseInt(requestSizes[1], 10);
|
|
485
|
-
sizes.push(sizeObj);
|
|
486
|
-
} else if (typeof requestSizes === 'object') {
|
|
487
|
-
for (let i = 0; i < requestSizes.length; i++) {
|
|
488
|
-
let size = requestSizes[i];
|
|
489
|
-
sizeObj = {};
|
|
490
|
-
sizeObj.width = parseInt(size[0], 10);
|
|
491
|
-
sizeObj.height = parseInt(size[1], 10);
|
|
492
|
-
sizes.push(sizeObj);
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
return sizes;
|
|
497
|
-
}
|
|
498
|
-
|
|
499
474
|
function hasUserInfo(bid) {
|
|
500
475
|
return !!bid.params.user;
|
|
501
476
|
}
|
|
@@ -3,7 +3,7 @@ import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
|
3
3
|
import { deepAccess, isFn, isStr, isNumber, isArray, isEmpty, isPlainObject, generateUUID, logInfo, logWarn } from '../src/utils.js';
|
|
4
4
|
import { config } from '../src/config.js';
|
|
5
5
|
import { Renderer } from '../src/Renderer.js';
|
|
6
|
-
import {hasPurpose1Consent} from '../src/utils/
|
|
6
|
+
import {hasPurpose1Consent} from '../src/utils/gdpr.js';
|
|
7
7
|
|
|
8
8
|
const INTEGRATION_METHOD = 'prebid.js';
|
|
9
9
|
const BIDDER_CODE = 'yahooAds';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prebid.js",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.5.0",
|
|
4
4
|
"description": "Header Bidding Management Library",
|
|
5
5
|
"main": "src/prebid.public.js",
|
|
6
6
|
"exports": {
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"eslint": "^7.27.0",
|
|
67
67
|
"eslint-config-standard": "^10.2.1",
|
|
68
68
|
"eslint-plugin-import": "^2.20.2",
|
|
69
|
-
"eslint-plugin-jsdoc": "^
|
|
69
|
+
"eslint-plugin-jsdoc": "^48.5.0",
|
|
70
70
|
"eslint-plugin-node": "^11.1.0",
|
|
71
71
|
"eslint-plugin-prebid": "file:./plugins/eslint",
|
|
72
72
|
"eslint-plugin-promise": "^5.1.0",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"execa": "^1.0.0",
|
|
75
75
|
"faker": "^5.5.3",
|
|
76
76
|
"fs.extra": "^1.3.2",
|
|
77
|
-
"gulp": "^4.0.
|
|
77
|
+
"gulp": "^4.0.2",
|
|
78
78
|
"gulp-clean": "^0.4.0",
|
|
79
79
|
"gulp-concat": "^2.6.0",
|
|
80
80
|
"gulp-connect": "^5.7.0",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"opn": "^5.4.0",
|
|
116
116
|
"querystring": "^0.2.1",
|
|
117
117
|
"resolve-from": "^5.0.0",
|
|
118
|
-
"sinon": "^4.
|
|
118
|
+
"sinon": "^4.5.0",
|
|
119
119
|
"through2": "^4.0.2",
|
|
120
120
|
"url": "^0.11.0",
|
|
121
121
|
"url-parse": "^1.0.5",
|