prebid.js 8.4.0 → 8.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.
Files changed (332) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/a1MediaRtdProvider.js +1 -0
  4. package/dist/adagioBidAdapter.js +1 -1
  5. package/dist/adbookpspBidAdapter.js +1 -1
  6. package/dist/adfBidAdapter.js +1 -1
  7. package/dist/adgenerationBidAdapter.js +1 -1
  8. package/dist/adkernelAdnBidAdapter.js +1 -1
  9. package/dist/adkernelBidAdapter.js +1 -1
  10. package/dist/admixerIdSystem.js +1 -1
  11. package/dist/adnuntiusBidAdapter.js +1 -1
  12. package/dist/adqueryBidAdapter.js +1 -1
  13. package/dist/adqueryIdSystem.js +1 -1
  14. package/dist/adrelevantisBidAdapter.js +1 -1
  15. package/dist/adsinteractiveBidAdapter.js +1 -1
  16. package/dist/adtelligentIdSystem.js +1 -1
  17. package/dist/adtrgtmeBidAdapter.js +1 -1
  18. package/dist/adxcgBidAdapter.js +1 -1
  19. package/dist/adyoulikeBidAdapter.js +1 -1
  20. package/dist/ajaBidAdapter.js +1 -1
  21. package/dist/amxBidAdapter.js +1 -1
  22. package/dist/amxIdSystem.js +1 -1
  23. package/dist/appierAnalyticsAdapter.js +1 -1
  24. package/dist/appnexusBidAdapter.js +1 -1
  25. package/dist/asoBidAdapter.js +1 -1
  26. package/dist/axonixBidAdapter.js +1 -1
  27. package/dist/beachfrontBidAdapter.js +1 -1
  28. package/dist/bidglassBidAdapter.js +1 -1
  29. package/dist/big-richmediaBidAdapter.js +1 -1
  30. package/dist/bridBidAdapter.js +1 -1
  31. package/dist/bridgewellBidAdapter.js +1 -1
  32. package/dist/brightMountainMediaBidAdapter.js +1 -1
  33. package/dist/britepoolIdSystem.js +1 -1
  34. package/dist/carodaBidAdapter.js +1 -1
  35. package/dist/chtnwBidAdapter.js +1 -1
  36. package/dist/concertBidAdapter.js +1 -1
  37. package/dist/connectIdSystem.js +1 -1
  38. package/dist/connectadBidAdapter.js +1 -1
  39. package/dist/consentManagementGpp.js +1 -1
  40. package/dist/consumableBidAdapter.js +1 -1
  41. package/dist/conversantAnalyticsAdapter.js +1 -1
  42. package/dist/conversantBidAdapter.js +1 -1
  43. package/dist/craftBidAdapter.js +1 -1
  44. package/dist/criteoBidAdapter.js +1 -1
  45. package/dist/criteoIdSystem.js +1 -1
  46. package/dist/cwireBidAdapter.js +1 -1
  47. package/dist/czechAdIdSystem.js +1 -1
  48. package/dist/dacIdSystem.js +1 -1
  49. package/dist/deepintentDpesIdSystem.js +1 -1
  50. package/dist/dependencies.json +6 -0
  51. package/dist/dmdIdSystem.js +1 -1
  52. package/dist/dspxBidAdapter.js +1 -1
  53. package/dist/eplanningBidAdapter.js +1 -1
  54. package/dist/euidIdSystem.js +1 -1
  55. package/dist/fabrickIdSystem.js +1 -1
  56. package/dist/feedadBidAdapter.js +1 -1
  57. package/dist/finativeBidAdapter.js +1 -1
  58. package/dist/freewheel-sspBidAdapter.js +1 -1
  59. package/dist/ftrackIdSystem.js +1 -1
  60. package/dist/geolocationRtdProvider.js +1 -0
  61. package/dist/gmosspBidAdapter.js +1 -1
  62. package/dist/goldbachBidAdapter.js +1 -1
  63. package/dist/gravitoIdSystem.js +1 -1
  64. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  65. package/dist/greenbidsRtdProvider.js +1 -1
  66. package/dist/gridBidAdapter.js +1 -1
  67. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  68. package/dist/growthCodeIdSystem.js +1 -1
  69. package/dist/gumgumBidAdapter.js +1 -1
  70. package/dist/h12mediaBidAdapter.js +1 -1
  71. package/dist/hadronIdSystem.js +1 -1
  72. package/dist/hypelabBidAdapter.js +1 -1
  73. package/dist/id5IdSystem.js +1 -1
  74. package/dist/identityLinkIdSystem.js +1 -1
  75. package/dist/idxIdSystem.js +1 -1
  76. package/dist/imdsBidAdapter.js +1 -1
  77. package/dist/improvedigitalBidAdapter.js +1 -1
  78. package/dist/imuIdSystem.js +1 -1
  79. package/dist/insticatorBidAdapter.js +1 -1
  80. package/dist/intentIqIdSystem.js +1 -1
  81. package/dist/invibesBidAdapter.js +1 -1
  82. package/dist/ixBidAdapter.js +1 -1
  83. package/dist/justIdSystem.js +1 -1
  84. package/dist/justpremiumBidAdapter.js +1 -1
  85. package/dist/kargoBidAdapter.js +1 -1
  86. package/dist/kinessoIdSystem.js +1 -1
  87. package/dist/konduitAnalyticsAdapter.js +1 -1
  88. package/dist/kueezBidAdapter.js +1 -1
  89. package/dist/kueezRtbBidAdapter.js +1 -1
  90. package/dist/kulturemediaBidAdapter.js +1 -1
  91. package/dist/lassoBidAdapter.js +1 -1
  92. package/dist/lifestreetBidAdapter.js +1 -1
  93. package/dist/liveIntentIdSystem.js +1 -1
  94. package/dist/logicadBidAdapter.js +1 -1
  95. package/dist/loglyliftBidAdapter.js +1 -1
  96. package/dist/lotamePanoramaIdSystem.js +1 -1
  97. package/dist/magniteAnalyticsAdapter.js +1 -1
  98. package/dist/malltvAnalyticsAdapter.js +1 -1
  99. package/dist/marsmediaBidAdapter.js +1 -1
  100. package/dist/mediafuseBidAdapter.js +1 -1
  101. package/dist/mediasquareBidAdapter.js +1 -1
  102. package/dist/merkleIdSystem.js +1 -1
  103. package/dist/mgidBidAdapter.js +1 -1
  104. package/dist/minutemediaBidAdapter.js +1 -1
  105. package/dist/minutemediaplusBidAdapter.js +1 -1
  106. package/dist/mspa.js +1 -1
  107. package/dist/mwOpenLinkIdSystem.js +1 -1
  108. package/dist/naveggIdSystem.js +1 -1
  109. package/dist/netIdSystem.js +1 -1
  110. package/dist/newspassidBidAdapter.js +1 -1
  111. package/dist/nexx360BidAdapter.js +1 -1
  112. package/dist/not-for-prod/prebid.js +186 -181
  113. package/dist/novatiqIdSystem.js +1 -1
  114. package/dist/oguryBidAdapter.js +1 -1
  115. package/dist/oneKeyIdSystem.js +1 -1
  116. package/dist/onetagBidAdapter.js +1 -1
  117. package/dist/ooloAnalyticsAdapter.js +1 -1
  118. package/dist/optidigitalBidAdapter.js +1 -1
  119. package/dist/outbrainBidAdapter.js +1 -1
  120. package/dist/ozoneBidAdapter.js +1 -1
  121. package/dist/pairIdSystem.js +1 -1
  122. package/dist/parrableIdSystem.js +1 -1
  123. package/dist/pixfutureBidAdapter.js +1 -1
  124. package/dist/prebid-core.js +1 -1
  125. package/dist/pubCircleBidAdapter.js +1 -0
  126. package/dist/publinkIdSystem.js +1 -1
  127. package/dist/pubmaticBidAdapter.js +1 -1
  128. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  129. package/dist/pxyzBidAdapter.js +1 -1
  130. package/dist/quantcastBidAdapter.js +1 -1
  131. package/dist/quantcastIdSystem.js +1 -1
  132. package/dist/readpeakBidAdapter.js +1 -1
  133. package/dist/relaidoBidAdapter.js +1 -1
  134. package/dist/relevadRtdProvider.js +1 -1
  135. package/dist/retailspotBidAdapter.js +1 -1
  136. package/dist/rhythmoneBidAdapter.js +1 -1
  137. package/dist/riseBidAdapter.js +1 -1
  138. package/dist/rubiconBidAdapter.js +1 -1
  139. package/dist/seedingAllianceBidAdapter.js +1 -1
  140. package/dist/seedtagBidAdapter.js +1 -1
  141. package/dist/sharedIdSystem.js +1 -1
  142. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  143. package/dist/sharethroughBidAdapter.js +1 -1
  144. package/dist/shinezBidAdapter.js +1 -1
  145. package/dist/silverpushBidAdapter.js +1 -1
  146. package/dist/smaatoBidAdapter.js +1 -1
  147. package/dist/smartadserverBidAdapter.js +1 -1
  148. package/dist/smartxBidAdapter.js +1 -1
  149. package/dist/smilewantedBidAdapter.js +1 -1
  150. package/dist/sonobiBidAdapter.js +1 -1
  151. package/dist/sovrnAnalyticsAdapter.js +1 -1
  152. package/dist/sovrnBidAdapter.js +1 -1
  153. package/dist/ssmasBidAdapter.js +1 -0
  154. package/dist/sspBCBidAdapter.js +1 -1
  155. package/dist/stvBidAdapter.js +1 -1
  156. package/dist/sublimeBidAdapter.js +1 -1
  157. package/dist/tapadIdSystem.js +1 -1
  158. package/dist/tappxBidAdapter.js +1 -1
  159. package/dist/targetVideoBidAdapter.js +1 -1
  160. package/dist/teadsBidAdapter.js +1 -1
  161. package/dist/tncIdSystem.js +1 -1
  162. package/dist/topicsFpdModule.js +1 -1
  163. package/dist/trionBidAdapter.js +1 -1
  164. package/dist/tripleliftBidAdapter.js +1 -1
  165. package/dist/ttdBidAdapter.js +1 -1
  166. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  167. package/dist/uid2IdSystem.js +1 -1
  168. package/dist/underdogmediaBidAdapter.js +1 -1
  169. package/dist/undertoneBidAdapter.js +1 -1
  170. package/dist/unifiedIdSystem.js +1 -1
  171. package/dist/userId.js +1 -1
  172. package/dist/utiqSystem.js +1 -1
  173. package/dist/verizonMediaIdSystem.js +1 -1
  174. package/dist/viantOrtbBidAdapter.js +1 -0
  175. package/dist/vidazooBidAdapter.js +1 -1
  176. package/dist/videobyteBidAdapter.js +1 -1
  177. package/dist/videojsVideoProvider.js +1 -1
  178. package/dist/visxBidAdapter.js +1 -1
  179. package/dist/vrtcalBidAdapter.js +1 -1
  180. package/dist/vuukleBidAdapter.js +1 -1
  181. package/dist/widespaceBidAdapter.js +1 -1
  182. package/dist/winrBidAdapter.js +1 -1
  183. package/dist/yahoosspBidAdapter.js +1 -1
  184. package/dist/yieldmoBidAdapter.js +1 -1
  185. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  186. package/dist/zeotapIdPlusIdSystem.js +1 -1
  187. package/integrationExamples/gpt/adUnitFloors.html +0 -1
  188. package/integrationExamples/videoModule/jwplayer/bidMarkedAsUsed.html +1 -1
  189. package/integrationExamples/videoModule/jwplayer/bidRequestScheduling.html +1 -1
  190. package/integrationExamples/videoModule/jwplayer/bidsBackHandlerOverride.html +137 -0
  191. package/integrationExamples/videoModule/jwplayer/eventListeners.html +1 -1
  192. package/integrationExamples/videoModule/jwplayer/eventsUI.html +1 -1
  193. package/integrationExamples/videoModule/jwplayer/gamAdServerMediation.html +1 -1
  194. package/integrationExamples/videoModule/jwplayer/mediaMetadata.html +1 -1
  195. package/integrationExamples/videoModule/jwplayer/playlist.html +1 -1
  196. package/integrationExamples/videoModule/videojs/bidsBackHandlerOverride.html +164 -0
  197. package/libraries/mspa/activityControls.js +51 -32
  198. package/modules/.submodules.json +1 -0
  199. package/modules/33acrossIdSystem.js +9 -0
  200. package/modules/a1MediaRtdProvider.js +92 -0
  201. package/modules/a1MediaRtdProvider.md +46 -0
  202. package/modules/adfBidAdapter.js +4 -1
  203. package/modules/adgenerationBidAdapter.js +3 -3
  204. package/modules/adkernelAdnBidAdapter.js +1 -1
  205. package/modules/adkernelBidAdapter.js +10 -3
  206. package/modules/admixerIdSystem.js +6 -0
  207. package/modules/adnuntiusBidAdapter.js +5 -13
  208. package/modules/adqueryIdSystem.js +6 -0
  209. package/modules/adsinteractiveBidAdapter.js +2 -2
  210. package/modules/adtelligentIdSystem.js +6 -0
  211. package/modules/adyoulikeBidAdapter.js +6 -3
  212. package/modules/amxIdSystem.js +6 -0
  213. package/modules/appnexusBidAdapter.js +1 -1
  214. package/modules/beachfrontBidAdapter.js +32 -6
  215. package/modules/britepoolIdSystem.js +6 -0
  216. package/modules/connectIdSystem.js +6 -0
  217. package/modules/consentManagementGpp.js +10 -1
  218. package/modules/consumableBidAdapter.js +9 -1
  219. package/modules/criteoBidAdapter.js +18 -0
  220. package/modules/criteoIdSystem.js +6 -0
  221. package/modules/cwireBidAdapter.js +19 -0
  222. package/modules/czechAdIdSystem.js +6 -0
  223. package/modules/dacIdSystem.js +6 -0
  224. package/modules/deepintentDpesIdSystem.js +7 -2
  225. package/modules/dmdIdSystem.js +6 -0
  226. package/modules/euidIdSystem.js +9 -0
  227. package/modules/fabrickIdSystem.js +6 -0
  228. package/modules/ftrackIdSystem.js +16 -0
  229. package/modules/geolocationRtdProvider.js +65 -0
  230. package/modules/gravitoIdSystem.js +6 -0
  231. package/modules/greenbidsRtdProvider.js +1 -1
  232. package/modules/growthCodeAnalyticsAdapter.js +7 -2
  233. package/modules/growthCodeIdSystem.js +20 -1
  234. package/modules/hadronIdSystem.js +6 -0
  235. package/modules/id5IdSystem.js +34 -8
  236. package/modules/identityLinkIdSystem.js +6 -0
  237. package/modules/idxIdSystem.js +6 -0
  238. package/modules/imdsBidAdapter.js +38 -14
  239. package/modules/imuIdSystem.js +10 -0
  240. package/modules/intentIqIdSystem.js +6 -0
  241. package/modules/invibesBidAdapter.js +5 -5
  242. package/modules/ixBidAdapter.js +16 -0
  243. package/modules/justIdSystem.js +6 -0
  244. package/modules/kinessoIdSystem.js +7 -2
  245. package/modules/liveIntentIdSystem.js +53 -0
  246. package/modules/lotamePanoramaIdSystem.js +6 -0
  247. package/modules/merkleIdSystem.js +24 -0
  248. package/modules/mwOpenLinkIdSystem.js +6 -0
  249. package/modules/naveggIdSystem.js +6 -0
  250. package/modules/netIdSystem.js +6 -0
  251. package/modules/newspassid.md +76 -0
  252. package/modules/newspassidBidAdapter.js +44 -18
  253. package/modules/novatiqIdSystem.js +12 -0
  254. package/modules/oneKeyIdSystem.js +26 -0
  255. package/modules/ozoneBidAdapter.js +65 -18
  256. package/modules/ozoneBidAdapter.md +3 -1
  257. package/modules/pairIdSystem.js +6 -0
  258. package/modules/parrableIdSystem.js +38 -2
  259. package/modules/pubCircleBidAdapter.js +231 -0
  260. package/modules/pubCircleBidAdapter.md +79 -0
  261. package/modules/publinkIdSystem.js +7 -1
  262. package/modules/quantcastIdSystem.js +6 -0
  263. package/modules/relevadRtdProvider.js +6 -7
  264. package/modules/rubiconBidAdapter.js +9 -0
  265. package/modules/sharedIdSystem.js +6 -0
  266. package/modules/silverpushBidAdapter.js +2 -2
  267. package/modules/ssmasBidAdapter.js +126 -0
  268. package/modules/ssmasBidAdapter.md +35 -0
  269. package/modules/sspBCBidAdapter.js +36 -13
  270. package/modules/tapadIdSystem.js +6 -0
  271. package/modules/tappxBidAdapter.js +10 -1
  272. package/modules/tappxBidAdapter.md +17 -0
  273. package/modules/tncIdSystem.js +6 -0
  274. package/modules/topicsFpdModule.js +21 -48
  275. package/modules/tripleliftBidAdapter.js +5 -0
  276. package/modules/uid2IdSystem.js +14 -0
  277. package/modules/unifiedIdSystem.js +11 -0
  278. package/modules/userId/eids.js +6 -445
  279. package/modules/userId/index.js +36 -24
  280. package/modules/utiqSystem.js +9 -0
  281. package/modules/verizonMediaIdSystem.js +6 -0
  282. package/modules/viantOrtbBidAdapter.js +113 -0
  283. package/modules/viantOrtbBidAdapter.md +54 -0
  284. package/modules/vidazooBidAdapter.js +9 -2
  285. package/modules/videojsVideoProvider.js +9 -2
  286. package/modules/vrtcalBidAdapter.js +10 -6
  287. package/modules/zeotapIdPlusIdSystem.js +6 -0
  288. package/package.json +1 -1
  289. package/src/adapters/bidderFactory.js +15 -6
  290. package/src/adloader.js +2 -1
  291. package/test/spec/libraries/mspa/activityControls_spec.js +145 -212
  292. package/test/spec/modules/a1MediaRtdProvider_spec.js +105 -0
  293. package/test/spec/modules/adfBidAdapter_spec.js +47 -0
  294. package/test/spec/modules/adgenerationBidAdapter_spec.js +6 -6
  295. package/test/spec/modules/adkernelAdnBidAdapter_spec.js +1 -2
  296. package/test/spec/modules/adkernelBidAdapter_spec.js +7 -2
  297. package/test/spec/modules/adnuntiusBidAdapter_spec.js +116 -64
  298. package/test/spec/modules/adyoulikeBidAdapter_spec.js +13 -24
  299. package/test/spec/modules/appnexusBidAdapter_spec.js +12 -1
  300. package/test/spec/modules/beachfrontBidAdapter_spec.js +35 -2
  301. package/test/spec/modules/consentManagementGpp_spec.js +16 -0
  302. package/test/spec/modules/consumableBidAdapter_spec.js +15 -0
  303. package/test/spec/modules/criteoBidAdapter_spec.js +31 -3
  304. package/test/spec/modules/cwireBidAdapter_spec.js +47 -0
  305. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +5 -5
  306. package/test/spec/modules/geolocationRtdProvider_spec.js +119 -0
  307. package/test/spec/modules/greenbidsRtdProvider_spec.js +1 -1
  308. package/test/spec/modules/id5IdSystem_spec.js +18 -0
  309. package/test/spec/modules/imdsBidAdapter_spec.js +98 -17
  310. package/test/spec/modules/invibesBidAdapter_spec.js +123 -32
  311. package/test/spec/modules/ixBidAdapter_spec.js +23 -5
  312. package/test/spec/modules/medianetBidAdapter_spec.js +117 -0
  313. package/test/spec/modules/newspassidBidAdapter_spec.js +6 -0
  314. package/test/spec/modules/outbrainBidAdapter_spec.js +3 -5
  315. package/test/spec/modules/ozoneBidAdapter_spec.js +27 -1
  316. package/test/spec/modules/prebidServerBidAdapter_spec.js +2 -20
  317. package/test/spec/modules/priceFloors_spec.js +14 -0
  318. package/test/spec/modules/pubCircleBidAdapter_spec.js +399 -0
  319. package/test/spec/modules/pubmaticBidAdapter_spec.js +6 -373
  320. package/test/spec/modules/rubiconBidAdapter_spec.js +220 -9
  321. package/test/spec/modules/smaatoBidAdapter_spec.js +4 -6
  322. package/test/spec/modules/ssmasBidAdapter_spec.js +244 -0
  323. package/test/spec/modules/sspBCBidAdapter_spec.js +18 -19
  324. package/test/spec/modules/topicsFpdModule_spec.js +343 -365
  325. package/test/spec/modules/tripleliftBidAdapter_spec.js +40 -0
  326. package/test/spec/modules/userId_spec.js +116 -7
  327. package/test/spec/modules/viantOrtbBidAdapter_spec.js +432 -0
  328. package/test/spec/modules/vrtcalBidAdapter_spec.js +12 -4
  329. package/test/spec/modules/xeBidAdapter_spec.js +366 -368
  330. package/test/spec/modules/yahoosspBidAdapter_spec.js +5 -18
  331. package/test/spec/unit/core/bidderFactory_spec.js +61 -14
  332. package/integrationExamples/gpt/pbjs_video_adUnit.html +0 -109
@@ -1,450 +1,10 @@
1
- import { pick, isFn, isStr, isPlainObject, deepAccess } from '../../src/utils.js';
1
+ import {deepAccess, isFn, isPlainObject, isStr} from '../../src/utils.js';
2
2
 
3
- // Each user-id sub-module is expected to mention respective config here
4
- export const USER_IDS_CONFIG = {
5
-
6
- // key-name : {config}
7
-
8
- // GrowthCode
9
- 'growthCodeId': {
10
- getValue: function(data) {
11
- return data.gc_id
12
- },
13
- source: 'growthcode.io',
14
- atype: 1,
15
- getUidExt: function(data) {
16
- const extendedData = pick(data, [
17
- 'h1',
18
- 'h2',
19
- 'h3',
20
- ]);
21
- if (Object.keys(extendedData).length) {
22
- return extendedData;
23
- }
24
- }
25
- },
26
-
27
- // utiq
28
- 'utiq': {
29
- source: 'utiq.com',
30
- atype: 1,
31
- getValue: function (data) {
32
- return data;
33
- },
34
- },
35
-
36
- // intentIqId
37
- 'intentIqId': {
38
- source: 'intentiq.com',
39
- atype: 1
40
- },
41
-
42
- // naveggId
43
- 'naveggId': {
44
- source: 'navegg.com',
45
- atype: 1
46
- },
47
-
48
- // pairId
49
- 'pairId': {
50
- source: 'google.com',
51
- atype: 571187
52
- },
53
-
54
- // justId
55
- 'justId': {
56
- source: 'justtag.com',
57
- atype: 1
58
- },
59
-
60
- // pubCommonId
61
- 'pubcid': {
62
- source: 'pubcid.org',
63
- atype: 1
64
- },
65
-
66
- // unifiedId
67
- 'tdid': {
68
- source: 'adserver.org',
69
- atype: 1,
70
- getUidExt: function() {
71
- return {
72
- rtiPartner: 'TDID'
73
- };
74
- }
75
- },
76
-
77
- // id5Id
78
- 'id5id': {
79
- getValue: function(data) {
80
- return data.uid
81
- },
82
- source: 'id5-sync.com',
83
- atype: 1,
84
- getUidExt: function(data) {
85
- if (data.ext) {
86
- return data.ext;
87
- }
88
- }
89
- },
90
-
91
- // ftrack
92
- 'ftrackId': {
93
- source: 'flashtalking.com',
94
- atype: 1,
95
- getValue: function(data) {
96
- let value = '';
97
- if (data && data.ext && data.ext.DeviceID) {
98
- value = data.ext.DeviceID;
99
- }
100
- return value;
101
- },
102
- getUidExt: function(data) {
103
- return data && data.ext;
104
- }
105
- },
106
-
107
- // parrableId
108
- 'parrableId': {
109
- source: 'parrable.com',
110
- atype: 1,
111
- getValue: function(parrableId) {
112
- if (parrableId.eid) {
113
- return parrableId.eid;
114
- }
115
- if (parrableId.ccpaOptout) {
116
- // If the EID was suppressed due to a non consenting ccpa optout then
117
- // we still wish to provide this as a reason to the adapters
118
- return '';
119
- }
120
- return null;
121
- },
122
- getUidExt: function(parrableId) {
123
- const extendedData = pick(parrableId, [
124
- 'ibaOptout',
125
- 'ccpaOptout'
126
- ]);
127
- if (Object.keys(extendedData).length) {
128
- return extendedData;
129
- }
130
- }
131
- },
132
-
133
- // identityLink
134
- 'idl_env': {
135
- source: 'liveramp.com',
136
- atype: 3
137
- },
138
-
139
- // liveIntentId
140
- 'lipb': {
141
- getValue: function(data) {
142
- return data.lipbid;
143
- },
144
- source: 'liveintent.com',
145
- atype: 3,
146
- getEidExt: function(data) {
147
- if (Array.isArray(data.segments) && data.segments.length) {
148
- return {
149
- segments: data.segments
150
- };
151
- }
152
- }
153
- },
154
-
155
- // bidswitchId
156
- 'bidswitch': {
157
- source: 'bidswitch.net',
158
- atype: 3,
159
- getValue: function(data) {
160
- return data.id;
161
- },
162
- getUidExt: function(data) {
163
- if (data.ext) {
164
- return data.ext;
165
- }
166
- }
167
- },
168
-
169
- // medianetId
170
- 'medianet': {
171
- source: 'media.net',
172
- atype: 3,
173
- getValue: function(data) {
174
- return data.id;
175
- },
176
- getUidExt: function(data) {
177
- if (data.ext) {
178
- return data.ext;
179
- }
180
- }
181
- },
182
-
183
- // magnite
184
- 'magnite': {
185
- source: 'rubiconproject.com',
186
- atype: 3,
187
- getValue: function(data) {
188
- return data.id;
189
- },
190
- getUidExt: function(data) {
191
- if (data.ext) {
192
- return data.ext;
193
- }
194
- }
195
- },
196
-
197
- // britepoolId
198
- 'britepoolid': {
199
- source: 'britepool.com',
200
- atype: 3
201
- },
202
-
203
- // dmdId
204
- 'dmdId': {
205
- source: 'hcn.health',
206
- atype: 3
207
- },
208
-
209
- // lotamePanoramaId
210
- lotamePanoramaId: {
211
- source: 'crwdcntrl.net',
212
- atype: 1,
213
- },
214
-
215
- // criteo
216
- 'criteoId': {
217
- source: 'criteo.com',
218
- atype: 1
219
- },
220
-
221
- // merkleId
222
- 'merkleId': {
223
- atype: 3,
224
- getSource: function(data) {
225
- if (data?.ext?.ssp) {
226
- return `${data.ext.ssp}.merkleinc.com`
227
- }
228
- return 'merkleinc.com'
229
- },
230
- getValue: function(data) {
231
- return data.id;
232
- },
233
- getUidExt: function(data) {
234
- if (data.keyID) {
235
- return {
236
- keyID: data.keyID
237
- }
238
- }
239
- if (data.ext) {
240
- return data.ext;
241
- }
242
- }
243
- },
244
-
245
- // NetId
246
- 'netId': {
247
- source: 'netid.de',
248
- atype: 1
249
- },
250
-
251
- // zeotapIdPlus
252
- 'IDP': {
253
- source: 'zeotap.com',
254
- atype: 1
255
- },
256
-
257
- // hadronId
258
- 'hadronId': {
259
- source: 'audigent.com',
260
- atype: 1
261
- },
262
-
263
- // quantcastId
264
- 'quantcastId': {
265
- source: 'quantcast.com',
266
- atype: 1
267
- },
268
-
269
- // IDx
270
- 'idx': {
271
- source: 'idx.lat',
272
- atype: 1
273
- },
274
-
275
- // Verizon Media ConnectID
276
- 'connectid': {
277
- source: 'verizonmedia.com',
278
- atype: 3
279
- },
280
-
281
- // Neustar Fabrick
282
- 'fabrickId': {
283
- source: 'neustar.biz',
284
- atype: 1
285
- },
286
-
287
- // MediaWallah OpenLink
288
- 'mwOpenLinkId': {
289
- source: 'mediawallahscript.com',
290
- atype: 1
291
- },
292
-
293
- 'tapadId': {
294
- source: 'tapad.com',
295
- atype: 1
296
- },
297
-
298
- // Novatiq Snowflake
299
- 'novatiq': {
300
- getValue: function(data) {
301
- if (data.snowflake.id === undefined) {
302
- return data.snowflake;
303
- }
304
-
305
- return data.snowflake.id;
306
- },
307
- source: 'novatiq.com',
308
- },
309
-
310
- 'uid2': {
311
- source: 'uidapi.com',
312
- atype: 3,
313
- getValue: function(data) {
314
- return data.id;
315
- },
316
- getUidExt: function(data) {
317
- if (data.ext) {
318
- return data.ext;
319
- }
320
- }
321
- },
322
-
323
- 'euid': {
324
- source: 'euid.eu',
325
- atype: 3,
326
- getValue: function(data) {
327
- return data.id;
328
- }
329
- },
330
-
331
- 'deepintentId': {
332
- source: 'deepintent.com',
333
- atype: 3
334
- },
335
-
336
- // Admixer Id
337
- 'admixerId': {
338
- source: 'admixer.net',
339
- atype: 3
340
- },
341
-
342
- // Adtelligent Id
343
- 'adtelligentId': {
344
- source: 'adtelligent.com',
345
- atype: 3
346
- },
347
-
348
- amxId: {
349
- source: 'amxdt.net',
350
- atype: 1,
351
- },
352
-
353
- 'publinkId': {
354
- source: 'epsilon.com',
355
- atype: 3
356
- },
357
-
358
- 'kpuid': {
359
- source: 'kpuid.com',
360
- atype: 3
361
- },
362
-
363
- 'imppid': {
364
- source: 'ppid.intimatemerger.com',
365
- atype: 1
366
- },
367
-
368
- 'imuid': {
369
- source: 'intimatemerger.com',
370
- atype: 1
371
- },
372
-
373
- // Yahoo ConnectID
374
- 'connectId': {
375
- source: 'yahoo.com',
376
- atype: 3
377
- },
378
-
379
- // Adquery ID
380
- 'qid': {
381
- source: 'adquery.io',
382
- atype: 1
383
- },
384
-
385
- // DAC ID
386
- 'dacId': {
387
- source: 'impact-ad.jp',
388
- atype: 1
389
- },
390
-
391
- // 33across ID
392
- '33acrossId': {
393
- source: '33across.com',
394
- atype: 1,
395
- getValue: function(data) {
396
- return data.envelope;
397
- }
398
- },
399
-
400
- // tncId
401
- 'tncid': {
402
- source: 'thenewco.it',
403
- atype: 3
404
- },
405
-
406
- // Gravito MP ID
407
- 'gravitompId': {
408
- source: 'gravito.net',
409
- atype: 1
410
- },
411
-
412
- // czechAdId
413
- 'czechAdId': {
414
- source: 'czechadid.cz',
415
- atype: 1
416
- },
417
-
418
- // OneKey Data
419
- 'oneKeyData': {
420
- getValue: function(data) {
421
- if (data && Array.isArray(data.identifiers) && data.identifiers[0]) {
422
- return data.identifiers[0].value;
423
- }
424
- },
425
- source: 'paf',
426
- atype: 1,
427
- getEidExt: function(data) {
428
- if (data && data.preferences) {
429
- return {preferences: data.preferences};
430
- }
431
- },
432
- getUidExt: function(data) {
433
- if (data && Array.isArray(data.identifiers) && data.identifiers[0]) {
434
- const id = data.identifiers[0];
435
- return {
436
- version: id.version,
437
- type: id.type,
438
- source: id.source
439
- };
440
- }
441
- }
442
- }
443
- };
3
+ export const EID_CONFIG = new Map();
444
4
 
445
5
  // this function will create an eid object for the given UserId sub-module
446
6
  function createEidObject(userIdData, subModuleKey) {
447
- const conf = USER_IDS_CONFIG[subModuleKey];
7
+ const conf = EID_CONFIG.get(subModuleKey);
448
8
  if (conf && userIdData) {
449
9
  let eid = {};
450
10
  eid.source = isFn(conf['getSource']) ? conf['getSource'](userIdData) : conf['source'];
@@ -510,11 +70,12 @@ export function buildEidPermissions(submodules) {
510
70
  submodules.filter(i => isPlainObject(i.idObj) && Object.keys(i.idObj).length)
511
71
  .forEach(i => {
512
72
  Object.keys(i.idObj).forEach(key => {
73
+ const eidConf = EID_CONFIG.get(key) || {};
513
74
  if (deepAccess(i, 'config.bidders') && Array.isArray(i.config.bidders) &&
514
- deepAccess(USER_IDS_CONFIG, key + '.source')) {
75
+ eidConf.source) {
515
76
  eidPermissions.push(
516
77
  {
517
- source: USER_IDS_CONFIG[key].source,
78
+ source: eidConf.source,
518
79
  bidders: i.config.bidders
519
80
  }
520
81
  );
@@ -133,7 +133,7 @@ import {getGlobal} from '../../src/prebidGlobal.js';
133
133
  import adapterManager, {gdprDataHandler, gppDataHandler} from '../../src/adapterManager.js';
134
134
  import CONSTANTS from '../../src/constants.json';
135
135
  import {module, ready as hooksReady} from '../../src/hook.js';
136
- import {buildEidPermissions, createEidsArray, USER_IDS_CONFIG} from './eids.js';
136
+ import {buildEidPermissions, createEidsArray, EID_CONFIG} from './eids.js';
137
137
  import {
138
138
  getCoreStorageManager,
139
139
  getStorageManager,
@@ -232,6 +232,7 @@ function submoduleMetrics(moduleName) {
232
232
  /** @param {Submodule[]} submodules */
233
233
  export function setSubmoduleRegistry(submodules) {
234
234
  submoduleRegistry = submodules;
235
+ updateEIDConfig(submodules);
235
236
  }
236
237
 
237
238
  function cookieSetter(submodule, storageMgr) {
@@ -465,7 +466,7 @@ function getSubmoduleId(submodules, sourceName) {
465
466
 
466
467
  const prioritisedIds = getPrioritizedCombinedSubmoduleIds(submodules);
467
468
  const eligibleIdName = Object.keys(prioritisedIds).find(idName => {
468
- const config = USER_IDS_CONFIG[idName];
469
+ const config = EID_CONFIG.get(idName);
469
470
  return config?.source === sourceName || (isFn(config?.getSource) && config.getSource() === sourceName);
470
471
  });
471
472
 
@@ -487,32 +488,33 @@ function getCombinedSubmoduleIdsForBidder(submodules, bidder) {
487
488
  return getPrioritizedCombinedSubmoduleIds(eligibleSubmodules);
488
489
  }
489
490
 
491
+ function collectByPriority(submodules, getIds, getName) {
492
+ return Object.fromEntries(Object.entries(submodules.reduce((carry, submod) => {
493
+ const ids = getIds(submod);
494
+ ids && Object.keys(ids).forEach(key => {
495
+ const maybeCurrentIdPriority = idPriority[key]?.indexOf(getName(submod));
496
+ const currentIdPriority = isNumber(maybeCurrentIdPriority) ? maybeCurrentIdPriority : -1;
497
+ const currentIdState = {priority: currentIdPriority, value: ids[key]};
498
+ if (carry[key]) {
499
+ const winnerIdState = currentIdState.priority > carry[key].priority ? currentIdState : carry[key];
500
+ carry[key] = winnerIdState;
501
+ } else {
502
+ carry[key] = currentIdState;
503
+ }
504
+ });
505
+ return carry;
506
+ }, {})).map(([k, v]) => [k, v.value]));
507
+ }
508
+
490
509
  /**
491
510
  * @param {SubmoduleContainer[]} submodules
492
511
  */
493
512
  function getPrioritizedCombinedSubmoduleIds(submodules) {
494
- const combinedIdStates = submodules
495
- .filter(i => isPlainObject(i.idObj) && Object.keys(i.idObj).length)
496
- .reduce((carry, i) => {
497
- Object.keys(i.idObj).forEach(key => {
498
- const maybeCurrentIdPriority = idPriority[key]?.indexOf(i.submodule.name);
499
- const currentIdPriority = isNumber(maybeCurrentIdPriority) ? maybeCurrentIdPriority : -1;
500
- const currentIdState = {priority: currentIdPriority, value: i.idObj[key]};
501
- if (carry[key]) {
502
- const winnerIdState = currentIdState.priority > carry[key].priority ? currentIdState : carry[key];
503
- carry[key] = winnerIdState;
504
- } else {
505
- carry[key] = currentIdState;
506
- }
507
- });
508
- return carry;
509
- }, {});
510
-
511
- const result = {};
512
- Object.keys(combinedIdStates).forEach(key => {
513
- result[key] = combinedIdStates[key].value
514
- });
515
- return result;
513
+ return collectByPriority(
514
+ submodules.filter(i => isPlainObject(i.idObj) && Object.keys(i.idObj).length),
515
+ (submod) => submod.idObj,
516
+ (submod) => submod.submodule.name
517
+ )
516
518
  }
517
519
 
518
520
  /**
@@ -997,10 +999,20 @@ function canUseStorage(submodule) {
997
999
  return false;
998
1000
  }
999
1001
 
1002
+ function updateEIDConfig(submodules) {
1003
+ EID_CONFIG.clear();
1004
+ Object.entries(collectByPriority(
1005
+ submodules,
1006
+ (mod) => mod.eids,
1007
+ (mod) => mod.name
1008
+ )).forEach(([id, conf]) => EID_CONFIG.set(id, conf));
1009
+ }
1010
+
1000
1011
  /**
1001
1012
  * update submodules by validating against existing configs and storage types
1002
1013
  */
1003
1014
  function updateSubmodules() {
1015
+ updateEIDConfig(submoduleRegistry);
1004
1016
  const configs = getValidSubmoduleConfigs(configRegistry, submoduleRegistry);
1005
1017
  if (!configs.length) {
1006
1018
  return;
@@ -124,6 +124,15 @@ export const utiqSubmodule = {
124
124
  return { callback: result };
125
125
  }
126
126
  },
127
+ eids: {
128
+ 'utiq': {
129
+ source: 'utiq.com',
130
+ atype: 1,
131
+ getValue: function (data) {
132
+ return data;
133
+ },
134
+ },
135
+ }
127
136
  };
128
137
 
129
138
  submodule('userId', utiqSubmodule);
@@ -99,6 +99,12 @@ export const verizonMediaIdSubmodule = {
99
99
  */
100
100
  getAjaxFn() {
101
101
  return ajax;
102
+ },
103
+ eids: {
104
+ 'connectid': {
105
+ source: 'verizonmedia.com',
106
+ atype: 3
107
+ },
102
108
  }
103
109
  };
104
110
 
@@ -0,0 +1,113 @@
1
+ import {registerBidder} from '../src/adapters/bidderFactory.js';
2
+ import {BANNER, NATIVE, VIDEO} from '../src/mediaTypes.js';
3
+ import * as utils from '../src/utils.js';
4
+ import {ortbConverter} from '../libraries/ortbConverter/converter.js'
5
+ import {deepAccess, getBidIdParameter, logError} from '../src/utils.js';
6
+
7
+ const BIDDER_CODE = 'viant';
8
+ const ENDPOINT = 'https://bidders-us-east-1.adelphic.net/d/rtb/v25/prebid/bidder_test'
9
+
10
+ const DEFAULT_BID_TTL = 300;
11
+ const DEFAULT_CURRENCY = 'USD';
12
+ const DEFAULT_NET_REVENUE = true;
13
+
14
+ export const spec = {
15
+ code: BIDDER_CODE,
16
+ supportedMediaTypes: [BANNER, VIDEO, NATIVE],
17
+
18
+ isBidRequestValid: function (bid) {
19
+ if (bid && typeof bid.params !== 'object') {
20
+ logError(BIDDER_CODE + ': params is not defined or is incorrect in the bidder settings.');
21
+ return false;
22
+ }
23
+ if (!getBidIdParameter('publisherId', bid.params)) {
24
+ logError(BIDDER_CODE + ': publisherId is not present in bidder params.');
25
+ return false;
26
+ }
27
+ const mediaTypesBanner = deepAccess(bid, 'mediaTypes.banner');
28
+ const mediaTypesVideo = deepAccess(bid, 'mediaTypes.video');
29
+ const mediaTypesNative = deepAccess(bid, 'mediaTypes.native');
30
+ if (!mediaTypesBanner && !mediaTypesVideo && !mediaTypesNative) {
31
+ utils.logWarn(BIDDER_CODE + ': one of mediaTypes.banner or mediaTypes.video or mediaTypes.native must be passed');
32
+ return false;
33
+ }
34
+ return true;
35
+ },
36
+
37
+ buildRequests,
38
+
39
+ interpretResponse(response, request) {
40
+ if (!response.body) {
41
+ response.body = {nbr: 0};
42
+ }
43
+ const bids = converter.fromORTB({request: request.data, response: response.body}).bids;
44
+ return bids;
45
+ },
46
+
47
+ /**
48
+ * Register bidder specific code, which will execute if a bid from this bidder won the auction
49
+ * @param {Bid} bid The bid that won the auction
50
+ */
51
+ onBidWon: function (bid) {
52
+ if (bid.burl) {
53
+ utils.triggerPixel(bid.burl);
54
+ } else if (bid.nurl) {
55
+ utils.triggerPixel(bid.nurl);
56
+ }
57
+ }
58
+ }
59
+
60
+ function buildRequests(bids, bidderRequest) {
61
+ let videoBids = bids.filter(bid => isVideoBid(bid));
62
+ let bannerBids = bids.filter(bid => isBannerBid(bid));
63
+ let nativeBids = bids.filter(bid => isNativeBid(bid));
64
+ let requests = bannerBids.length ? [createRequest(bannerBids, bidderRequest, BANNER)] : [];
65
+ videoBids.forEach(bid => {
66
+ requests.push(createRequest([bid], bidderRequest, VIDEO));
67
+ });
68
+ nativeBids.forEach(bid => {
69
+ requests.push(createRequest([bid], bidderRequest, NATIVE));
70
+ });
71
+ return requests;
72
+ }
73
+
74
+ function createRequest(bidRequests, bidderRequest, mediaType) {
75
+ const data = converter.toORTB({bidRequests, bidderRequest, context: {mediaType}});
76
+ if (bidderRequest.gdprConsent && typeof bidderRequest.gdprConsent.gdprApplies === 'boolean') {
77
+ if (!data.regs) data.regs = {};
78
+ if (!data.regs.ext) data.regs.ext = {};
79
+ data.regs.ext.gdpr = bidderRequest.gdprConsent.gdprApplies ? 1 : 0;
80
+ }
81
+ if (bidderRequest.uspConsent) {
82
+ if (!data.regs) data.regs = {};
83
+ if (!data.regs.ext) data.regs.ext = {};
84
+ data.regs.ext.us_privacy = bidderRequest.uspConsent;
85
+ }
86
+ return {
87
+ method: 'POST',
88
+ url: ENDPOINT,
89
+ data: data
90
+ }
91
+ }
92
+
93
+ function isVideoBid(bid) {
94
+ return deepAccess(bid, 'mediaTypes.video');
95
+ }
96
+
97
+ function isBannerBid(bid) {
98
+ return deepAccess(bid, 'mediaTypes.banner');
99
+ }
100
+
101
+ function isNativeBid(bid) {
102
+ return deepAccess(bid, 'mediaTypes.native');
103
+ }
104
+
105
+ const converter = ortbConverter({
106
+ context: {
107
+ netRevenue: DEFAULT_NET_REVENUE,
108
+ ttl: DEFAULT_BID_TTL,
109
+ currency: DEFAULT_CURRENCY
110
+ }
111
+ });
112
+
113
+ registerBidder(spec);