prebid.js 7.18.0 → 7.20.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 (313) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/adWMGAnalyticsAdapter.js +1 -1
  4. package/dist/adagioAnalyticsAdapter.js +1 -1
  5. package/dist/adagioBidAdapter.js +1 -1
  6. package/dist/adbookpspBidAdapter.js +1 -1
  7. package/dist/adfBidAdapter.js +1 -1
  8. package/dist/adgenerationBidAdapter.js +1 -1
  9. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  10. package/dist/adkernelBidAdapter.js +1 -1
  11. package/dist/adlooxAdServerVideo.js +1 -1
  12. package/dist/adlooxAnalyticsAdapter.js +1 -1
  13. package/dist/adlooxRtdProvider.js +1 -1
  14. package/dist/adomikAnalyticsAdapter.js +1 -1
  15. package/dist/adqueryIdSystem.js +1 -1
  16. package/dist/adrelevantisBidAdapter.js +1 -1
  17. package/dist/adtrgtmeBidAdapter.js +1 -1
  18. package/dist/adxcgAnalyticsAdapter.js +1 -1
  19. package/dist/adxcgBidAdapter.js +1 -1
  20. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  21. package/dist/ajaBidAdapter.js +1 -1
  22. package/dist/amxBidAdapter.js +1 -1
  23. package/dist/amxIdSystem.js +1 -1
  24. package/dist/aolBidAdapter.js +1 -1
  25. package/dist/appierAnalyticsAdapter.js +1 -1
  26. package/dist/appnexusBidAdapter.js +1 -1
  27. package/dist/asoBidAdapter.js +1 -1
  28. package/dist/atsAnalyticsAdapter.js +1 -1
  29. package/dist/axonixBidAdapter.js +1 -1
  30. package/dist/{andBeyondMediaBidAdapter.js → beyondmediaBidAdapter.js} +1 -1
  31. package/dist/bidViewability.js +1 -1
  32. package/dist/bidglassBidAdapter.js +1 -1
  33. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  34. package/dist/big-richmediaBidAdapter.js +1 -1
  35. package/dist/bridgewellBidAdapter.js +1 -1
  36. package/dist/brightMountainMediaBidAdapter.js +1 -1
  37. package/dist/byDataAnalyticsAdapter.js +1 -1
  38. package/dist/carodaBidAdapter.js +1 -1
  39. package/dist/categoryTranslation.js +1 -1
  40. package/dist/cleanioRtdProvider.js +1 -1
  41. package/dist/colossussspBidAdapter.js +1 -1
  42. package/dist/concertAnalyticsAdapter.js +1 -1
  43. package/dist/concertBidAdapter.js +1 -1
  44. package/dist/connectIdSystem.js +1 -1
  45. package/dist/connectadBidAdapter.js +1 -1
  46. package/dist/consentManagement.js +1 -1
  47. package/dist/consentManagementUsp.js +1 -1
  48. package/dist/consumableBidAdapter.js +1 -1
  49. package/dist/conversantAnalyticsAdapter.js +1 -0
  50. package/dist/conversantBidAdapter.js +1 -1
  51. package/dist/craftBidAdapter.js +1 -1
  52. package/dist/criteoBidAdapter.js +1 -1
  53. package/dist/currency.js +1 -1
  54. package/dist/datablocksAnalyticsAdapter.js +1 -1
  55. package/dist/dchain.js +1 -1
  56. package/dist/debugging-standalone.js +1 -1
  57. package/dist/debugging.js +1 -1
  58. package/dist/dependencies.json +9 -0
  59. package/dist/dfpAdServerVideo.js +1 -1
  60. package/dist/dgkeywordRtdProvider.js +1 -1
  61. package/dist/dianomiBidAdapter.js +1 -1
  62. package/dist/dspxBidAdapter.js +1 -1
  63. package/dist/enrichmentFpdModule.js +1 -1
  64. package/dist/eplanningAnalyticsAdapter.js +1 -1
  65. package/dist/eplanningBidAdapter.js +1 -1
  66. package/dist/finativeBidAdapter.js +1 -1
  67. package/dist/fintezaAnalyticsAdapter.js +1 -1
  68. package/dist/fpd.js +1 -0
  69. package/dist/ftrackIdSystem.js +1 -1
  70. package/dist/gdprEnforcement.js +1 -1
  71. package/dist/glimpseBidAdapter.js +1 -1
  72. package/dist/gmosspBidAdapter.js +1 -1
  73. package/dist/goldbachBidAdapter.js +1 -1
  74. package/dist/googleAnalyticsAdapter.js +1 -1
  75. package/dist/gridBidAdapter.js +1 -1
  76. package/dist/gridNMBidAdapter.js +1 -1
  77. package/dist/gumgumBidAdapter.js +1 -1
  78. package/dist/h12mediaBidAdapter.js +1 -1
  79. package/dist/hadronAnalyticsAdapter.js +1 -1
  80. package/dist/id5AnalyticsAdapter.js +1 -1
  81. package/dist/id5IdSystem.js +1 -1
  82. package/dist/improvedigitalBidAdapter.js +1 -1
  83. package/dist/inmarBidAdapter.js +1 -1
  84. package/dist/insticatorBidAdapter.js +1 -1
  85. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  86. package/dist/ixBidAdapter.js +1 -1
  87. package/dist/justpremiumBidAdapter.js +1 -1
  88. package/dist/kargoAnalyticsAdapter.js +1 -1
  89. package/dist/kinessoIdSystem.js +1 -1
  90. package/dist/konduitAnalyticsAdapter.js +1 -1
  91. package/dist/kueezBidAdapter.js +1 -1
  92. package/dist/lassoBidAdapter.js +1 -1
  93. package/dist/lifestreetBidAdapter.js +1 -1
  94. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  95. package/dist/liveIntentIdSystem.js +1 -1
  96. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  97. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  98. package/dist/logicadBidAdapter.js +1 -1
  99. package/dist/loglyliftBidAdapter.js +1 -1
  100. package/dist/lotamePanoramaIdSystem.js +1 -1
  101. package/dist/magniteAnalyticsAdapter.js +1 -0
  102. package/dist/malltvAnalyticsAdapter.js +1 -1
  103. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  104. package/dist/marsmediaBidAdapter.js +1 -1
  105. package/dist/mass.js +1 -1
  106. package/dist/mediafuseBidAdapter.js +1 -1
  107. package/dist/mediakeysBidAdapter.js +1 -1
  108. package/dist/medianetAnalyticsAdapter.js +1 -1
  109. package/dist/mediasquareBidAdapter.js +1 -1
  110. package/dist/mgidBidAdapter.js +1 -1
  111. package/dist/minutemediaBidAdapter.js +1 -1
  112. package/dist/multibid.js +1 -1
  113. package/dist/nativoBidAdapter.js +1 -1
  114. package/dist/not-for-prod/prebid.js +198 -194
  115. package/dist/oguryBidAdapter.js +1 -1
  116. package/dist/onetagBidAdapter.js +1 -1
  117. package/dist/ooloAnalyticsAdapter.js +1 -1
  118. package/dist/openxAnalyticsAdapter.js +1 -1
  119. package/dist/optimonAnalyticsAdapter.js +1 -1
  120. package/dist/outbrainBidAdapter.js +1 -1
  121. package/dist/parrableIdSystem.js +1 -1
  122. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  123. package/dist/pixfutureBidAdapter.js +1 -1
  124. package/dist/prebid-core.js +2 -2
  125. package/dist/prebidServerBidAdapter.js +1 -1
  126. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  127. package/dist/priceFloors.js +1 -1
  128. package/dist/publinkIdSystem.js +1 -1
  129. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  130. package/dist/pubmaticBidAdapter.js +1 -1
  131. package/dist/pubperfAnalyticsAdapter.js +1 -1
  132. package/dist/pubstackAnalyticsAdapter.js +1 -1
  133. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  134. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  135. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  136. package/dist/pxyzBidAdapter.js +1 -1
  137. package/dist/quantcastBidAdapter.js +1 -1
  138. package/dist/quantcastIdSystem.js +1 -1
  139. package/dist/readpeakBidAdapter.js +1 -1
  140. package/dist/realvuAnalyticsAdapter.js +1 -1
  141. package/dist/relaidoBidAdapter.js +1 -1
  142. package/dist/relevantAnalyticsAdapter.js +1 -1
  143. package/dist/rhythmoneBidAdapter.js +1 -1
  144. package/dist/riseBidAdapter.js +1 -1
  145. package/dist/rivrAnalyticsAdapter.js +1 -1
  146. package/dist/roxotAnalyticsAdapter.js +1 -1
  147. package/dist/rtdModule.js +1 -1
  148. package/dist/rubiconAnalyticsAdapter.js +1 -1
  149. package/dist/rubiconBidAdapter.js +1 -1
  150. package/dist/s2sTesting.js +1 -1
  151. package/dist/scaleableAnalyticsAdapter.js +1 -1
  152. package/dist/schain.js +1 -1
  153. package/dist/seedingAllianceBidAdapter.js +1 -1
  154. package/dist/seedtagBidAdapter.js +1 -1
  155. package/dist/sharedIdSystem.js +1 -1
  156. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  157. package/dist/sharethroughBidAdapter.js +1 -1
  158. package/dist/shinezBidAdapter.js +1 -1
  159. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  160. package/dist/smaatoBidAdapter.js +1 -1
  161. package/dist/smartadserverBidAdapter.js +1 -1
  162. package/dist/smartxBidAdapter.js +1 -1
  163. package/dist/smilewantedBidAdapter.js +1 -1
  164. package/dist/sonobiAnalyticsAdapter.js +1 -1
  165. package/dist/sonobiBidAdapter.js +1 -1
  166. package/dist/sovrnAnalyticsAdapter.js +1 -1
  167. package/dist/sovrnBidAdapter.js +1 -1
  168. package/dist/sspBCBidAdapter.js +1 -1
  169. package/dist/staqAnalyticsAdapter.js +1 -1
  170. package/dist/sublimeBidAdapter.js +1 -1
  171. package/dist/synacormediaBidAdapter.js +1 -1
  172. package/dist/taboolaBidAdapter.js +1 -1
  173. package/dist/tapadIdSystem.js +1 -1
  174. package/dist/targetVideoBidAdapter.js +1 -1
  175. package/dist/teadsBidAdapter.js +1 -1
  176. package/dist/teadsIdSystem.js +1 -0
  177. package/dist/terceptAnalyticsAdapter.js +1 -1
  178. package/dist/trionBidAdapter.js +1 -1
  179. package/dist/tripleliftBidAdapter.js +1 -1
  180. package/dist/ttdBidAdapter.js +1 -1
  181. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  182. package/dist/underdogmediaBidAdapter.js +1 -1
  183. package/dist/undertoneBidAdapter.js +1 -1
  184. package/dist/userId.js +1 -1
  185. package/dist/vidazooBidAdapter.js +1 -1
  186. package/dist/videobyteBidAdapter.js +1 -1
  187. package/dist/visxBidAdapter.js +1 -1
  188. package/dist/vrtcalBidAdapter.js +1 -1
  189. package/dist/vuukleBidAdapter.js +1 -1
  190. package/dist/weboramaRtdProvider.js +1 -1
  191. package/dist/widespaceBidAdapter.js +1 -1
  192. package/dist/winrBidAdapter.js +1 -1
  193. package/dist/yahoosspBidAdapter.js +1 -1
  194. package/dist/yandexBidAdapter.js +1 -1
  195. package/dist/yieldmoBidAdapter.js +1 -1
  196. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  197. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  198. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  199. package/libraries/fpd/sua.js +98 -0
  200. package/modules/.submodules.json +1 -0
  201. package/modules/adfBidAdapter.js +1 -1
  202. package/modules/adkernelAdnBidAdapter.js +1 -0
  203. package/modules/adkernelBidAdapter.js +2 -2
  204. package/modules/adqueryIdSystem.js +8 -8
  205. package/modules/adxcgBidAdapter.js +1 -1
  206. package/modules/amxBidAdapter.js +1 -1
  207. package/modules/aolBidAdapter.js +25 -2
  208. package/modules/appnexusBidAdapter.js +19 -2
  209. package/modules/{andBeyondMediaBidAdapter.js → beyondmediaBidAdapter.js} +0 -0
  210. package/modules/{andBeyondMediaBidAdapter.md → beyondmediaBidAdapter.md} +1 -1
  211. package/modules/categoryTranslation.js +4 -4
  212. package/modules/cleanioRtdProvider.js +3 -4
  213. package/modules/colossussspBidAdapter.js +2 -1
  214. package/modules/connectIdSystem.js +16 -1
  215. package/modules/conversantAnalyticsAdapter.js +560 -0
  216. package/modules/conversantAnalyticsAdapter.md +47 -0
  217. package/modules/criteoBidAdapter.js +1 -1
  218. package/modules/currency.js +11 -11
  219. package/modules/dchain.js +2 -2
  220. package/modules/debugging/bidInterceptor.js +2 -2
  221. package/modules/debugging/debugging.js +10 -2
  222. package/modules/debugging/legacy.js +2 -2
  223. package/modules/dgkeywordRtdProvider.js +21 -3
  224. package/modules/dianomiBidAdapter.js +1 -1
  225. package/modules/enrichmentFpdModule.js +33 -14
  226. package/modules/eplanningBidAdapter.js +48 -2
  227. package/modules/finativeBidAdapter.js +1 -1
  228. package/modules/gridBidAdapter.js +187 -117
  229. package/modules/improvedigitalBidAdapter.js +2 -2
  230. package/modules/ixBidAdapter.js +94 -23
  231. package/modules/liveIntentIdSystem.js +39 -5
  232. package/modules/lotamePanoramaIdSystem.js +10 -6
  233. package/modules/magniteAnalyticsAdapter.js +902 -0
  234. package/modules/magniteAnalyticsAdapter.md +18 -0
  235. package/modules/mass.js +2 -2
  236. package/modules/mediakeysBidAdapter.js +6 -1
  237. package/modules/mediakeysBidAdapter.md +50 -40
  238. package/modules/multibid/index.js +5 -5
  239. package/modules/nativoBidAdapter.js +1 -1
  240. package/modules/pixfutureBidAdapter.js +46 -15
  241. package/modules/prebidServerBidAdapter/index.js +54 -19
  242. package/modules/priceFloors.js +8 -22
  243. package/modules/readpeakBidAdapter.js +1 -1
  244. package/modules/rubiconAnalyticsAdapter.js +14 -9
  245. package/modules/rubiconBidAdapter.js +2 -3
  246. package/modules/seedingAllianceBidAdapter.js +1 -1
  247. package/modules/sharethroughBidAdapter.js +1 -1
  248. package/modules/taboolaBidAdapter.js +5 -5
  249. package/modules/talkadsBidAdapter.js +1 -0
  250. package/modules/teadsIdSystem.js +234 -0
  251. package/modules/teadsIdSystem.md +22 -0
  252. package/modules/truereachBidAdapter.js +1 -0
  253. package/modules/ttdBidAdapter.js +1 -1
  254. package/modules/userId/index.js +21 -14
  255. package/modules/vrtcalBidAdapter.js +7 -1
  256. package/modules/vuukleBidAdapter.js +34 -3
  257. package/modules/yahoosspBidAdapter.js +4 -2
  258. package/modules/yandexBidAdapter.js +31 -8
  259. package/package.json +2 -2
  260. package/src/adapterManager.js +2 -4
  261. package/src/adapters/bidderFactory.js +13 -11
  262. package/src/auction.js +140 -69
  263. package/src/constants.json +8 -0
  264. package/src/cpmBucketManager.js +22 -3
  265. package/src/native.js +1 -5
  266. package/src/prebid.js +5 -6
  267. package/src/targeting.js +31 -14
  268. package/test/fixtures/fixtures.js +2 -1
  269. package/test/spec/auctionmanager_spec.js +109 -21
  270. package/test/spec/cpmBucketManager_spec.js +239 -177
  271. package/test/spec/fpd/sua_spec.js +244 -0
  272. package/test/spec/modules/adfBidAdapter_spec.js +2 -3
  273. package/test/spec/modules/adqueryIdSystem_spec.js +0 -2
  274. package/test/spec/modules/adxcgBidAdapter_spec.js +2 -3
  275. package/test/spec/modules/amxBidAdapter_spec.js +3 -2
  276. package/test/spec/modules/aolBidAdapter_spec.js +42 -9
  277. package/test/spec/modules/appnexusBidAdapter_spec.js +24 -0
  278. package/test/spec/modules/{andBeyondMediaBidAdapter_spec.js → beyondmediaBidAdapter_spec.js} +1 -1
  279. package/test/spec/modules/colossussspBidAdapter_spec.js +4 -2
  280. package/test/spec/modules/connectIdSystem_spec.js +20 -0
  281. package/test/spec/modules/conversantAnalyticsAdapter_spec.js +963 -0
  282. package/test/spec/modules/currency_spec.js +14 -6
  283. package/test/spec/modules/debugging_mod_spec.js +9 -0
  284. package/test/spec/modules/dgkeywordRtdProvider_spec.js +83 -1
  285. package/test/spec/modules/dianomiBidAdapter_spec.js +2 -3
  286. package/test/spec/modules/enrichmentFpdModule_spec.js +50 -7
  287. package/test/spec/modules/eplanningBidAdapter_spec.js +285 -1
  288. package/test/spec/modules/fpdModule_spec.js +9 -0
  289. package/test/spec/modules/gridBidAdapter_spec.js +87 -31
  290. package/test/spec/modules/ixBidAdapter_spec.js +221 -2
  291. package/test/spec/modules/liveIntentIdMinimalSystem_spec.js +62 -8
  292. package/test/spec/modules/liveIntentIdSystem_spec.js +62 -8
  293. package/test/spec/modules/lotamePanoramaIdSystem_spec.js +0 -1
  294. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +1942 -0
  295. package/test/spec/modules/mediakeysBidAdapter_spec.js +20 -3
  296. package/test/spec/modules/nativoBidAdapter_spec.js +13 -2
  297. package/test/spec/modules/prebidServerBidAdapter_spec.js +202 -15
  298. package/test/spec/modules/priceFloors_spec.js +5 -5
  299. package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +2 -3
  300. package/test/spec/modules/seedtagBidAdapter_spec.js +15 -18
  301. package/test/spec/modules/sharethroughBidAdapter_spec.js +2 -1
  302. package/test/spec/modules/taboolaBidAdapter_spec.js +112 -13
  303. package/test/spec/modules/teadsIdSystem_spec.js +271 -0
  304. package/test/spec/modules/ttdBidAdapter_spec.js +3 -3
  305. package/test/spec/modules/userId_spec.js +39 -4
  306. package/test/spec/modules/vrtcalBidAdapter_spec.js +12 -1
  307. package/test/spec/modules/vuukleBidAdapter_spec.js +87 -0
  308. package/test/spec/modules/yahoosspBidAdapter_spec.js +48 -1
  309. package/test/spec/modules/yandexBidAdapter_spec.js +8 -5
  310. package/test/spec/native_spec.js +5 -0
  311. package/test/spec/unit/core/bidderFactory_spec.js +66 -11
  312. package/test/spec/unit/core/targeting_spec.js +28 -9
  313. package/test/spec/unit/pbjs_api_spec.js +48 -2
@@ -0,0 +1,244 @@
1
+ import {
2
+ highEntropySUAAccessor,
3
+ lowEntropySUAAccessor,
4
+ SUA_SOURCE_HIGH_ENTROPY,
5
+ SUA_SOURCE_LOW_ENTROPY,
6
+ SUA_SOURCE_UNKNOWN,
7
+ suaFromUAData,
8
+ uaDataToSUA
9
+ } from '../../../libraries/fpd/sua.js';
10
+
11
+ describe('uaDataToSUA', () => {
12
+ Object.entries({
13
+ 'platform': 'platform',
14
+ 'browsers': 'brands',
15
+ 'mobile': 'mobile',
16
+ 'architecture': 'architecture',
17
+ 'model': 'model',
18
+ 'bitness': 'bitness'
19
+ }).forEach(([suaKey, uaKey]) => {
20
+ it(`should not set ${suaKey} if ${uaKey} is missing from UAData`, () => {
21
+ const example = {
22
+ platform: 'Windows',
23
+ brands: [{brand: 'Mock', version: 'mk'}],
24
+ mobile: true,
25
+ model: 'mockModel',
26
+ bitness: '64',
27
+ architecture: 'arm'
28
+ }
29
+ delete example[uaKey];
30
+ const sua = uaDataToSUA(SUA_SOURCE_UNKNOWN, example);
31
+ expect(sua.hasOwnProperty(suaKey)).to.be.false;
32
+ })
33
+ });
34
+
35
+ it('should convert low-entropy userAgentData', () => {
36
+ const sua = uaDataToSUA(SUA_SOURCE_LOW_ENTROPY, {
37
+ 'brands': [
38
+ {
39
+ 'brand': '.Not/A)Brand',
40
+ 'version': '99'
41
+ },
42
+ {
43
+ 'brand': 'Google Chrome',
44
+ 'version': '103'
45
+ },
46
+ {
47
+ 'brand': 'Chromium',
48
+ 'version': '103'
49
+ }
50
+ ],
51
+ 'mobile': false,
52
+ 'platform': 'Linux'
53
+ });
54
+
55
+ expect(sua).to.eql({
56
+ source: SUA_SOURCE_LOW_ENTROPY,
57
+ mobile: 0,
58
+ platform: {
59
+ brand: 'Linux',
60
+ },
61
+ browsers: [
62
+ {
63
+ brand: '.Not/A)Brand',
64
+ version: [
65
+ '99'
66
+ ]
67
+ },
68
+ {
69
+ brand: 'Google Chrome',
70
+ version: [
71
+ '103'
72
+ ]
73
+ },
74
+ {
75
+ brand: 'Chromium',
76
+ version: [
77
+ '103'
78
+ ]
79
+ }
80
+ ]
81
+ })
82
+ });
83
+
84
+ it('should convert high entropy properties', () => {
85
+ const uaData = {
86
+ architecture: 'x86',
87
+ bitness: '64',
88
+ fullVersionList: [
89
+ {
90
+ 'brand': '.Not/A)Brand',
91
+ 'version': '99.0.0.0'
92
+ },
93
+ {
94
+ 'brand': 'Google Chrome',
95
+ 'version': '103.0.5060.134'
96
+ },
97
+ {
98
+ 'brand': 'Chromium',
99
+ 'version': '103.0.5060.134'
100
+ }
101
+ ],
102
+ brands: [
103
+ {
104
+ 'brand': '.Not/A)Brand',
105
+ 'version': '99'
106
+ },
107
+ {
108
+ 'brand': 'Google Chrome',
109
+ 'version': '103'
110
+ },
111
+ {
112
+ 'brand': 'Chromium',
113
+ 'version': '103'
114
+ }
115
+ ],
116
+ model: 'mockModel',
117
+ platform: 'Linux',
118
+ platformVersion: '5.14.0'
119
+ }
120
+
121
+ expect(uaDataToSUA(SUA_SOURCE_HIGH_ENTROPY, uaData)).to.eql({
122
+ source: SUA_SOURCE_HIGH_ENTROPY,
123
+ architecture: 'x86',
124
+ bitness: '64',
125
+ model: 'mockModel',
126
+ platform: {
127
+ brand: 'Linux',
128
+ version: [
129
+ '5',
130
+ '14',
131
+ '0'
132
+ ]
133
+ },
134
+ browsers: [
135
+ {
136
+ brand: '.Not/A)Brand',
137
+ version: [
138
+ '99',
139
+ '0',
140
+ '0',
141
+ '0'
142
+ ]
143
+ },
144
+ {
145
+ brand: 'Google Chrome',
146
+ version: [
147
+ '103',
148
+ '0',
149
+ '5060',
150
+ '134'
151
+ ]
152
+ },
153
+ {
154
+ brand: 'Chromium',
155
+ version: [
156
+ '103',
157
+ '0',
158
+ '5060',
159
+ '134'
160
+ ]
161
+ }
162
+ ]
163
+ })
164
+ })
165
+ });
166
+
167
+ describe('lowEntropySUAAccessor', () => {
168
+ function getSUA(uaData) {
169
+ return lowEntropySUAAccessor(uaData)();
170
+ }
171
+
172
+ it('should not be modifiable', () => {
173
+ const sua = getSUA({});
174
+ expect(() => { sua.prop = 'value'; }).to.throw();
175
+ });
176
+
177
+ it('should return null if no uaData is available', () => {
178
+ expect(getSUA(null)).to.eql(null);
179
+ })
180
+
181
+ it('should return null if uaData is empty', () => {
182
+ expect(getSUA({})).to.eql(null);
183
+ })
184
+ });
185
+
186
+ describe('highEntropySUAAccessor', () => {
187
+ let userAgentData, uaResult, getSUA;
188
+ beforeEach(() => {
189
+ uaResult = {};
190
+ userAgentData = {
191
+ getHighEntropyValues: sinon.stub().callsFake(() => Promise.resolve(uaResult))
192
+ };
193
+ getSUA = highEntropySUAAccessor(userAgentData);
194
+ });
195
+
196
+ describe('should resolve to null if', () => {
197
+ it('uaData is not available', () => {
198
+ getSUA = highEntropySUAAccessor(null);
199
+ return getSUA().then((result) => {
200
+ expect(result).to.eql(null);
201
+ })
202
+ });
203
+ it('getHighEntropyValues is not avialable', () => {
204
+ delete userAgentData.getHighEntropyValues;
205
+ return getSUA().then((result) => {
206
+ expect(result).to.eql(null);
207
+ })
208
+ });
209
+ it('getHighEntropyValues throws', () => {
210
+ userAgentData.getHighEntropyValues.callsFake(() => { throw new Error() });
211
+ return getSUA().then((result) => {
212
+ expect(result).to.eql(null);
213
+ })
214
+ });
215
+ it('getHighEntropyValues rejects', () => {
216
+ userAgentData.getHighEntropyValues.callsFake(() => Promise.reject(new Error()));
217
+ return getSUA().then((result) => {
218
+ expect(result).to.eql(null);
219
+ })
220
+ });
221
+ it('getHighEntropyValues returns an empty object', () => {
222
+ userAgentData.getHighEntropyValues.callsFake(() => Promise.resolve({}));
223
+ return getSUA().then((result) => {
224
+ expect(result).to.eql(null);
225
+ });
226
+ })
227
+ });
228
+ it('should pass hints to userAgentData', () => {
229
+ getSUA(['h1', 'h2']);
230
+ sinon.assert.calledWith(userAgentData.getHighEntropyValues, ['h1', 'h2']);
231
+ });
232
+
233
+ it('should cache results for a set of hints', () => {
234
+ getSUA(['h1', 'h2']);
235
+ getSUA(['h2', 'h1']);
236
+ sinon.assert.calledOnce(userAgentData.getHighEntropyValues);
237
+ });
238
+
239
+ it('should return unmodifiable objects', () => {
240
+ return getSUA().then(result => {
241
+ expect(() => { result.prop = 'value'; }).to.throw();
242
+ })
243
+ })
244
+ })
@@ -170,11 +170,10 @@ describe('Adf adapter', function () {
170
170
  let validBidRequests = [{
171
171
  bidId: 'bidId',
172
172
  params: { siteId: 'siteId' },
173
- transactionId: 'transactionId'
174
173
  }];
175
- let request = JSON.parse(spec.buildRequests(validBidRequests, { refererInfo: { page: 'page' } }).data);
174
+ let request = JSON.parse(spec.buildRequests(validBidRequests, { refererInfo: { page: 'page' }, auctionId: 'tid' }).data);
176
175
 
177
- assert.equal(request.source.tid, validBidRequests[0].transactionId);
176
+ assert.equal(request.source.tid, 'tid');
178
177
  assert.equal(request.source.fd, 1);
179
178
  });
180
179
 
@@ -1,7 +1,5 @@
1
1
  import { adqueryIdSubmodule, storage } from 'modules/adqueryIdSystem.js';
2
2
  import { server } from 'test/mocks/xhr.js';
3
- import {amxIdSubmodule} from '../../../modules/amxIdSystem';
4
- import * as utils from '../../../src/utils';
5
3
 
6
4
  const config = {
7
5
  storage: {
@@ -164,11 +164,10 @@ describe('Adxcg adapter', function () {
164
164
  let validBidRequests = [{
165
165
  bidId: 'bidId',
166
166
  params: {siteId: 'siteId'},
167
- transactionId: 'transactionId'
168
167
  }];
169
- let request = JSON.parse(spec.buildRequests(validBidRequests, {refererInfo: {referer: 'page'}}).data);
168
+ let request = JSON.parse(spec.buildRequests(validBidRequests, {refererInfo: {referer: 'page'}, auctionId: 'tid'}).data);
170
169
 
171
- assert.equal(request.source.tid, validBidRequests[0].transactionId);
170
+ assert.equal(request.source.tid, 'tid');
172
171
  assert.equal(request.source.fd, 1);
173
172
  });
174
173
 
@@ -359,6 +359,7 @@ describe('AmxBidAdapter', () => {
359
359
  bidId: sampleRequestId + '_2',
360
360
  params: {
361
361
  ...sampleBidRequestBase.params,
362
+ adUnitId: '',
362
363
  tagId: 'example',
363
364
  },
364
365
  },
@@ -404,12 +405,12 @@ describe('AmxBidAdapter', () => {
404
405
 
405
406
  it('can build a video request', () => {
406
407
  const { data } = spec.buildRequests(
407
- [sampleBidRequestVideo],
408
+ [{...sampleBidRequestVideo, params: { ...sampleBidRequestVideo.params, adUnitId: 'custom-auid' }}],
408
409
  sampleBidderRequest
409
410
  );
410
411
  expect(Object.keys(data.m).length).to.equal(1);
411
412
  expect(data.m[sampleRequestId + '_video']).to.deep.equal({
412
- au: 'div-gpt-ad-example',
413
+ au: 'custom-auid',
413
414
  ms: [[[300, 150]], [], [[360, 250]]],
414
415
  av: true,
415
416
  aw: 360,
@@ -81,20 +81,46 @@ describe('AolAdapter', function () {
81
81
  const ONE_DISPLAY_TTL = 60;
82
82
  const ONE_MOBILE_TTL = 3600;
83
83
  const SUPPORTED_USER_ID_SOURCES = {
84
- 'adserver.org': '100',
85
- 'criteo.com': '200',
86
- 'id5-sync.com': '300',
87
- 'intentiq.com': '400',
88
- 'liveintent.com': '500',
89
- 'quantcast.com': '600',
90
- 'verizonmedia.com': '700',
91
- 'liveramp.com': '800'
84
+ 'admixer.net': '100',
85
+ 'adserver.org': '200',
86
+ 'adtelligent.com': '300',
87
+ 'amxrtb.com': '500',
88
+ 'audigent.com': '600',
89
+ 'britepool.com': '700',
90
+ 'criteo.com': '800',
91
+ 'crwdcntrl.net': '900',
92
+ 'deepintent.com': '1000',
93
+ 'epsilon.com': '1100',
94
+ 'hcn.health': '1200',
95
+ 'id5-sync.com': '1300',
96
+ 'idx.lat': '1400',
97
+ 'intentiq.com': '1500',
98
+ 'intimatemerger.com': '1600',
99
+ 'liveintent.com': '1700',
100
+ 'liveramp.com': '1800',
101
+ 'mediawallahscript.com': '1900',
102
+ 'netid.de': '2100',
103
+ 'neustar.biz': '2200',
104
+ 'pubcid.org': '2600',
105
+ 'quantcast.com': '2700',
106
+ 'tapad.com': '2800',
107
+ 'zeotap.com': '3200'
92
108
  };
93
109
 
94
110
  const USER_ID_DATA = {
111
+ admixerId: SUPPORTED_USER_ID_SOURCES['admixer.net'],
112
+ adtelligentId: SUPPORTED_USER_ID_SOURCES['adtelligent.com'],
113
+ amxId: SUPPORTED_USER_ID_SOURCES['amxrtb.com'],
114
+ britepoolid: SUPPORTED_USER_ID_SOURCES['britepool.com'],
95
115
  criteoId: SUPPORTED_USER_ID_SOURCES['criteo.com'],
96
116
  connectid: SUPPORTED_USER_ID_SOURCES['verizonmedia.com'],
117
+ dmdId: SUPPORTED_USER_ID_SOURCES['hcn.health'],
118
+ hadronId: SUPPORTED_USER_ID_SOURCES['audigent.com'],
119
+ lotamePanoramaId: SUPPORTED_USER_ID_SOURCES['crwdcntrl.net'],
120
+ deepintentId: SUPPORTED_USER_ID_SOURCES['deepintent.com'],
121
+ fabrickId: SUPPORTED_USER_ID_SOURCES['neustar.biz'],
97
122
  idl_env: SUPPORTED_USER_ID_SOURCES['liveramp.com'],
123
+ IDP: SUPPORTED_USER_ID_SOURCES['zeotap.com'],
98
124
  lipb: {
99
125
  lipbid: SUPPORTED_USER_ID_SOURCES['liveintent.com'],
100
126
  segments: ['100', '200']
@@ -104,8 +130,15 @@ describe('AolAdapter', function () {
104
130
  uid: SUPPORTED_USER_ID_SOURCES['id5-sync.com'],
105
131
  ext: {foo: 'bar'}
106
132
  },
133
+ idx: SUPPORTED_USER_ID_SOURCES['idx.lat'],
134
+ imuid: SUPPORTED_USER_ID_SOURCES['intimatemerger.com'],
107
135
  intentIqId: SUPPORTED_USER_ID_SOURCES['intentiq.com'],
108
- quantcastId: SUPPORTED_USER_ID_SOURCES['quantcast.com']
136
+ mwOpenLinkId: SUPPORTED_USER_ID_SOURCES['mediawallahscript.com'],
137
+ netId: SUPPORTED_USER_ID_SOURCES['netid.de'],
138
+ quantcastId: SUPPORTED_USER_ID_SOURCES['quantcast.com'],
139
+ publinkId: SUPPORTED_USER_ID_SOURCES['epsilon.com'],
140
+ pubcid: SUPPORTED_USER_ID_SOURCES['pubcid.org'],
141
+ tapadId: SUPPORTED_USER_ID_SOURCES['tapad.com']
109
142
  };
110
143
 
111
144
  function createCustomBidRequest({bids, params} = {}) {
@@ -4,6 +4,7 @@ import { newBidder } from 'src/adapters/bidderFactory.js';
4
4
  import * as bidderFactory from 'src/adapters/bidderFactory.js';
5
5
  import { auctionManager } from 'src/auctionManager.js';
6
6
  import { deepClone } from 'src/utils.js';
7
+ import * as utils from 'src/utils.js';
7
8
  import { config } from 'src/config.js';
8
9
 
9
10
  const ENDPOINT = 'https://ib.adnxs.com/ut/v3/prebid';
@@ -370,6 +371,29 @@ describe('AppNexusAdapter', function () {
370
371
  });
371
372
  });
372
373
 
374
+ it('should add debug params from query', function () {
375
+ let getParamStub = sinon.stub(utils, 'getParameterByName').callsFake(function(par) {
376
+ if (par === 'apn_debug_dongle') return 'abcdef';
377
+ if (par === 'apn_debug_member_id') return '1234';
378
+ if (par === 'apn_debug_timeout') return '1000';
379
+
380
+ return '';
381
+ });
382
+
383
+ let bidRequest = deepClone(bidRequests[0]);
384
+ const request = spec.buildRequests([bidRequest]);
385
+ const payload = JSON.parse(request.data);
386
+
387
+ expect(payload.debug).to.exist.and.to.deep.equal({
388
+ 'dongle': 'abcdef',
389
+ 'enabled': true,
390
+ 'member_id': 1234,
391
+ 'debug_timeout': 1000
392
+ });
393
+
394
+ getParamStub.restore();
395
+ });
396
+
373
397
  it('should attach reserve param when either bid param or getFloor function exists', function () {
374
398
  let getFloorResponse = { currency: 'USD', floor: 3 };
375
399
  let request, payload = null;
@@ -1,5 +1,5 @@
1
1
  import { expect } from 'chai';
2
- import { spec } from '../../../modules/andBeyondMediaBidAdapter.js';
2
+ import { spec } from '../../../modules/beyondmediaBidAdapter.js';
3
3
  import { BANNER, VIDEO, NATIVE } from '../../../src/mediaTypes.js';
4
4
  import { getUniqueIdentifierStr } from '../../../src/utils.js';
5
5
 
@@ -101,7 +101,7 @@ describe('ColossussspAdapter', function () {
101
101
  let placements = data['placements'];
102
102
  for (let i = 0; i < placements.length; i++) {
103
103
  let placement = placements[i];
104
- expect(placement).to.have.all.keys('placementId', 'groupId', 'eids', 'bidId', 'traffic', 'sizes', 'schain', 'floor', 'gpid');
104
+ expect(placement).to.have.all.keys('placementId', 'groupId', 'eids', 'bidId', 'traffic', 'sizes', 'schain', 'floor', 'gpid', 'tid');
105
105
  expect(placement.schain).to.be.an('object')
106
106
  expect(placement.placementId).to.be.a('number');
107
107
  expect(placement.groupId).to.be.a('number');
@@ -110,6 +110,7 @@ describe('ColossussspAdapter', function () {
110
110
  expect(placement.sizes).to.be.an('array');
111
111
  expect(placement.floor).to.be.an('object');
112
112
  expect(placement.gpid).to.be.an('string');
113
+ expect(placement.tid).to.be.an('string');
113
114
  }
114
115
  });
115
116
 
@@ -143,7 +144,7 @@ describe('ColossussspAdapter', function () {
143
144
  let placement = placements[i];
144
145
  expect(placement).to.have.all.keys('placementId', 'groupId', 'eids', 'bidId', 'traffic', 'schain', 'floor', 'gpid', 'sizes',
145
146
  'playerSize', 'minduration', 'maxduration', 'mimes', 'protocols', 'startdelay', 'placement', 'skip', 'skipafter',
146
- 'minbitrate', 'maxbitrate', 'delivery', 'playbackmethod', 'api', 'linearity'
147
+ 'minbitrate', 'maxbitrate', 'delivery', 'playbackmethod', 'api', 'linearity', 'tid'
147
148
  );
148
149
  expect(placement.schain).to.be.an('object')
149
150
  expect(placement.placementId).to.be.a('number');
@@ -155,6 +156,7 @@ describe('ColossussspAdapter', function () {
155
156
  expect(placement.playerSize).to.be.an('array');
156
157
  expect(placement.minduration).to.be.an('number');
157
158
  expect(placement.maxduration).to.be.an('number');
159
+ expect(placement.tid).to.be.an('string');
158
160
  }
159
161
  });
160
162
 
@@ -76,6 +76,26 @@ describe('Yahoo ConnectID Submodule', () => {
76
76
  expect(result.callback).to.be.a('function');
77
77
  });
78
78
 
79
+ it('returns an undefined if the Yahoo specific opt-out key is present in local storage', () => {
80
+ localStorage.setItem('connectIdOptOut', '1');
81
+ expect(invokeGetIdAPI({
82
+ he: HASHED_EMAIL,
83
+ pixelId: PIXEL_ID
84
+ }, consentData)).to.be.undefined;
85
+ localStorage.removeItem('connectIdOptOut');
86
+ });
87
+
88
+ it('returns an object with the callback function if the correct params are passed and Yahoo opt-out value is not "1"', () => {
89
+ localStorage.setItem('connectIdOptOut', 'true');
90
+ let result = invokeGetIdAPI({
91
+ he: HASHED_EMAIL,
92
+ pixelId: PIXEL_ID
93
+ }, consentData);
94
+ expect(result).to.be.an('object').that.has.all.keys('callback');
95
+ expect(result.callback).to.be.a('function');
96
+ localStorage.removeItem('connectIdOptOut');
97
+ });
98
+
79
99
  it('Makes an ajax GET request to the production API endpoint with query params', () => {
80
100
  invokeGetIdAPI({
81
101
  he: HASHED_EMAIL,