prebid.js 9.5.0 → 9.7.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 (253) hide show
  1. package/.github/PULL_REQUEST_TEMPLATE.md +1 -1
  2. package/.github/release-drafter.yml +4 -0
  3. package/README.md +4 -4
  4. package/dist/33acrossAnalyticsAdapter.js +1 -1
  5. package/dist/33acrossBidAdapter.js +1 -1
  6. package/dist/33acrossIdSystem.js +1 -1
  7. package/dist/BTBidAdapter.js +1 -1
  8. package/dist/adagioAnalyticsAdapter.js +1 -1
  9. package/dist/adagioBidAdapter.js +1 -1
  10. package/dist/adagioUtils.js +1 -1
  11. package/dist/addefendBidAdapter.js +1 -1
  12. package/dist/adgenerationBidAdapter.js +1 -1
  13. package/dist/adkernelBidAdapter.js +1 -1
  14. package/dist/adlooxRtdProvider.js +1 -1
  15. package/dist/adqueryBidAdapter.js +1 -1
  16. package/dist/adrelevantisBidAdapter.js +1 -1
  17. package/dist/adstirBidAdapter.js +1 -1
  18. package/dist/adtrgtmeBidAdapter.js +1 -1
  19. package/dist/adxcgAnalyticsAdapter.js +1 -1
  20. package/dist/adxcgBidAdapter.js +1 -1
  21. package/dist/adyoulikeBidAdapter.js +1 -1
  22. package/dist/agmaAnalyticsAdapter.js +1 -1
  23. package/dist/aidemBidAdapter.js +1 -1
  24. package/dist/ajaBidAdapter.js +1 -1
  25. package/dist/amxBidAdapter.js +1 -1
  26. package/dist/amxIdSystem.js +1 -1
  27. package/dist/appierAnalyticsAdapter.js +1 -1
  28. package/dist/appnexusBidAdapter.js +1 -1
  29. package/dist/asoBidAdapter.js +1 -1
  30. package/dist/axonixBidAdapter.js +1 -1
  31. package/dist/bidglassBidAdapter.js +1 -1
  32. package/dist/big-richmediaBidAdapter.js +1 -1
  33. package/dist/bridBidAdapter.js +1 -1
  34. package/dist/bridgewellBidAdapter.js +1 -1
  35. package/dist/brightMountainMediaBidAdapter.js +1 -1
  36. package/dist/carodaBidAdapter.js +1 -1
  37. package/dist/chtnwBidAdapter.js +1 -1
  38. package/dist/chunk-core.js +1 -1
  39. package/dist/cleanmedianetBidAdapter.js +1 -1
  40. package/dist/concertBidAdapter.js +1 -1
  41. package/dist/connectIdSystem.js +1 -1
  42. package/dist/connectadBidAdapter.js +1 -1
  43. package/dist/connectionInfo.js +1 -0
  44. package/dist/consumableBidAdapter.js +1 -1
  45. package/dist/conversantAnalyticsAdapter.js +1 -1
  46. package/dist/conversantBidAdapter.js +1 -1
  47. package/dist/craftBidAdapter.js +1 -1
  48. package/dist/criteoBidAdapter.js +1 -1
  49. package/dist/cwireBidAdapter.js +1 -1
  50. package/dist/dailymotionBidAdapter.js +1 -1
  51. package/dist/dependencies.json +31 -2
  52. package/dist/docereeAdManagerBidAdapter.js +1 -1
  53. package/dist/dspxBidAdapter.js +1 -1
  54. package/dist/dxkultureBidAdapter.js +1 -1
  55. package/dist/eplanningBidAdapter.js +1 -1
  56. package/dist/euidIdSystem.js +1 -1
  57. package/dist/exadsBidAdapter.js +1 -1
  58. package/dist/feedadBidAdapter.js +1 -1
  59. package/dist/finativeBidAdapter.js +1 -1
  60. package/dist/freewheel-sspBidAdapter.js +1 -1
  61. package/dist/gamoshiBidAdapter.js +1 -1
  62. package/dist/gmosspBidAdapter.js +1 -1
  63. package/dist/goldbachBidAdapter.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/gumgumBidAdapter.js +1 -1
  68. package/dist/h12mediaBidAdapter.js +1 -1
  69. package/dist/hypelabBidAdapter.js +1 -1
  70. package/dist/id5AnalyticsAdapter.js +1 -1
  71. package/dist/id5IdSystem.js +1 -1
  72. package/dist/idImportLibrary.js +1 -1
  73. package/dist/imdsBidAdapter.js +1 -1
  74. package/dist/improvedigitalBidAdapter.js +1 -1
  75. package/dist/insticatorBidAdapter.js +1 -1
  76. package/dist/intentIqAnalyticsAdapter.js +1 -1
  77. package/dist/ixBidAdapter.js +1 -1
  78. package/dist/jixieBidAdapter.js +1 -1
  79. package/dist/justpremiumBidAdapter.js +1 -1
  80. package/dist/kargoBidAdapter.js +1 -1
  81. package/dist/kimberliteBidAdapter.js +1 -1
  82. package/dist/konduitAnalyticsAdapter.js +1 -1
  83. package/dist/kueezBidAdapter.js +1 -1
  84. package/dist/lassoBidAdapter.js +1 -1
  85. package/dist/lifestreetBidAdapter.js +1 -1
  86. package/dist/liveIntentIdSystem.js +1 -1
  87. package/dist/logicadBidAdapter.js +1 -1
  88. package/dist/loglyliftBidAdapter.js +1 -1
  89. package/dist/luceadBidAdapter.js +1 -1
  90. package/dist/mabidderBidAdapter.js +1 -1
  91. package/dist/magniteAnalyticsAdapter.js +1 -1
  92. package/dist/malltvAnalyticsAdapter.js +1 -1
  93. package/dist/marsmediaBidAdapter.js +1 -1
  94. package/dist/mediafuseBidAdapter.js +1 -1
  95. package/dist/medianetAnalyticsAdapter.js +1 -1
  96. package/dist/medianetBidAdapter.js +1 -1
  97. package/dist/mediasquareBidAdapter.js +1 -1
  98. package/dist/mgidBidAdapter.js +1 -1
  99. package/dist/minutemediaBidAdapter.js +1 -1
  100. package/dist/missenaBidAdapter.js +1 -1
  101. package/dist/mobianRtdProvider.js +1 -1
  102. package/dist/nexx360BidAdapter.js +1 -1
  103. package/dist/nobidAnalyticsAdapter.js +1 -1
  104. package/dist/nobidBidAdapter.js +1 -1
  105. package/dist/not-for-prod/prebid.js +174 -170
  106. package/dist/oguryBidAdapter.js +1 -1
  107. package/dist/onetagBidAdapter.js +1 -1
  108. package/dist/ooloAnalyticsAdapter.js +1 -1
  109. package/dist/openwebBidAdapter.js +1 -1
  110. package/dist/openxBidAdapter.js +1 -1
  111. package/dist/optidigitalBidAdapter.js +1 -1
  112. package/dist/orbidderBidAdapter.js +1 -1
  113. package/dist/ortbConverter.js +1 -1
  114. package/dist/outbrainBidAdapter.js +1 -1
  115. package/dist/ownadxBidAdapter.js +1 -0
  116. package/dist/pixfutureBidAdapter.js +1 -1
  117. package/dist/prismaBidAdapter.js +1 -1
  118. package/dist/publinkIdSystem.js +1 -1
  119. package/dist/publirBidAdapter.js +1 -1
  120. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  121. package/dist/pubmaticBidAdapter.js +1 -1
  122. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  123. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  124. package/dist/pxyzBidAdapter.js +1 -1
  125. package/dist/quantcastBidAdapter.js +1 -1
  126. package/dist/readpeakBidAdapter.js +1 -1
  127. package/dist/relaidoBidAdapter.js +1 -1
  128. package/dist/retailspotBidAdapter.js +1 -1
  129. package/dist/rhythmoneBidAdapter.js +1 -1
  130. package/dist/riseBidAdapter.js +1 -1
  131. package/dist/riseUtils.js +1 -0
  132. package/dist/rubiconBidAdapter.js +1 -1
  133. package/dist/seedingAllianceBidAdapter.js +1 -1
  134. package/dist/seedtagBidAdapter.js +1 -1
  135. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  136. package/dist/sharethroughBidAdapter.js +1 -1
  137. package/dist/shinezBidAdapter.js +1 -1
  138. package/dist/smaatoBidAdapter.js +1 -1
  139. package/dist/smartadserverBidAdapter.js +1 -1
  140. package/dist/smarthubBidAdapter.js +1 -1
  141. package/dist/smartxBidAdapter.js +1 -1
  142. package/dist/smilewantedBidAdapter.js +1 -1
  143. package/dist/snigelBidAdapter.js +1 -1
  144. package/dist/sonobiBidAdapter.js +1 -1
  145. package/dist/sovrnBidAdapter.js +1 -1
  146. package/dist/sspBCBidAdapter.js +1 -1
  147. package/dist/stnBidAdapter.js +1 -1
  148. package/dist/stvBidAdapter.js +1 -1
  149. package/dist/sublimeBidAdapter.js +1 -1
  150. package/dist/taboolaBidAdapter.js +1 -1
  151. package/dist/tappxBidAdapter.js +1 -1
  152. package/dist/targetVideoBidAdapter.js +1 -1
  153. package/dist/teadsBidAdapter.js +1 -1
  154. package/dist/telariaBidAdapter.js +1 -1
  155. package/dist/teqblazeUtils.js +1 -1
  156. package/dist/terceptAnalyticsAdapter.js +1 -1
  157. package/dist/themoneytizerBidAdapter.js +1 -1
  158. package/dist/trionBidAdapter.js +1 -1
  159. package/dist/tripleliftBidAdapter.js +1 -1
  160. package/dist/ttdBidAdapter.js +1 -1
  161. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  162. package/dist/uid2IdSystem.js +1 -1
  163. package/dist/uid2IdSystem_shared.js +1 -1
  164. package/dist/underdogmediaBidAdapter.js +1 -1
  165. package/dist/undertoneBidAdapter.js +1 -1
  166. package/dist/unrulyBidAdapter.js +1 -1
  167. package/dist/viantOrtbBidAdapter.js +1 -1
  168. package/dist/vidazooUtils.js +1 -1
  169. package/dist/videobyteBidAdapter.js +1 -1
  170. package/dist/visxBidAdapter.js +1 -1
  171. package/dist/vuukleBidAdapter.js +1 -1
  172. package/dist/widespaceBidAdapter.js +1 -1
  173. package/dist/winrBidAdapter.js +1 -1
  174. package/dist/wurflRtdProvider.js +1 -0
  175. package/dist/yahooAdsBidAdapter.js +1 -1
  176. package/dist/yieldmoBidAdapter.js +1 -1
  177. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  178. package/integrationExamples/gpt/wurflRtdProvider_example.html +106 -0
  179. package/libraries/connectionInfo/connectionUtils.js +33 -0
  180. package/libraries/ortbConverter/processors/video.js +2 -24
  181. package/libraries/riseUtils/index.js +331 -0
  182. package/libraries/teqblazeUtils/bidderUtils.js +15 -11
  183. package/libraries/vidazooUtils/bidderUtils.js +16 -0
  184. package/modules/.submodules.json +3 -1
  185. package/modules/51DegreesRtdProvider.md +11 -7
  186. package/modules/adagioAnalyticsAdapter.js +101 -84
  187. package/modules/adagioAnalyticsAdapter.md +4 -0
  188. package/modules/adagioBidAdapter.js +14 -66
  189. package/modules/adkernelBidAdapter.js +2 -2
  190. package/modules/aidemBidAdapter.js +2 -0
  191. package/modules/appnexusBidAdapter.js +1 -1
  192. package/modules/cleanmedianetBidAdapter.js +1 -1
  193. package/modules/connectIdSystem.js +5 -3
  194. package/modules/dailymotionBidAdapter.js +19 -0
  195. package/modules/docereeAdManagerBidAdapter.js +9 -12
  196. package/modules/gamoshiBidAdapter.js +1 -1
  197. package/modules/greenbidsAnalyticsAdapter.js +7 -4
  198. package/modules/greenbidsRtdProvider.js +15 -5
  199. package/modules/id5IdSystem.js +14 -93
  200. package/modules/idImportLibrary.js +14 -6
  201. package/modules/insticatorBidAdapter.js +35 -31
  202. package/modules/kargoBidAdapter.js +11 -14
  203. package/modules/kimberliteBidAdapter.js +24 -7
  204. package/modules/kimberliteBidAdapter.md +30 -1
  205. package/modules/minutemediaBidAdapter.js +21 -398
  206. package/modules/mobianRtdProvider.js +28 -14
  207. package/modules/nexx360BidAdapter.js +3 -2
  208. package/modules/openwebBidAdapter.js +18 -396
  209. package/modules/ownadxBidAdapter.js +99 -0
  210. package/modules/prismaBidAdapter.js +1 -27
  211. package/modules/publirBidAdapter.js +20 -273
  212. package/modules/pubmaticBidAdapter.js +2 -1
  213. package/modules/resetdigitalBidAdapter.md +54 -45
  214. package/modules/riseBidAdapter.js +19 -400
  215. package/modules/sharethroughBidAdapter.js +5 -0
  216. package/modules/shinezBidAdapter.js +17 -361
  217. package/modules/smarthubBidAdapter.js +45 -177
  218. package/modules/stnBidAdapter.js +22 -398
  219. package/modules/telariaBidAdapter.js +2 -32
  220. package/modules/ttdBidAdapter.js +14 -32
  221. package/modules/uid2IdSystem_shared.js +51 -39
  222. package/modules/viantOrtbBidAdapter.js +1 -1
  223. package/modules/wurflRtdProvider.js +213 -0
  224. package/modules/wurflRtdProvider.md +67 -0
  225. package/package.json +1 -1
  226. package/src/adloader.js +1 -0
  227. package/src/prebid.js +6 -1
  228. package/src/video.js +78 -1
  229. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +231 -141
  230. package/test/spec/modules/adagioBidAdapter_spec.js +32 -67
  231. package/test/spec/modules/appnexusBidAdapter_spec.js +0 -33
  232. package/test/spec/modules/cleanmedianetBidAdapter_spec.js +1 -1
  233. package/test/spec/modules/connectIdSystem_spec.js +27 -28
  234. package/test/spec/modules/dailymotionBidAdapter_spec.js +50 -0
  235. package/test/spec/modules/docereeAdManagerBidAdapter_spec.js +1 -0
  236. package/test/spec/modules/gamoshiBidAdapter_spec.js +1 -1
  237. package/test/spec/modules/id5IdSystem_spec.js +25 -98
  238. package/test/spec/modules/idImportLibrary_spec.js +14 -0
  239. package/test/spec/modules/insticatorBidAdapter_spec.js +8 -1
  240. package/test/spec/modules/kargoBidAdapter_spec.js +7 -8
  241. package/test/spec/modules/kimberliteBidAdapter_spec.js +137 -65
  242. package/test/spec/modules/mobianRtdProvider_spec.js +46 -43
  243. package/test/spec/modules/nexx360BidAdapter_spec.js +1 -1
  244. package/test/spec/modules/ownadxBidAdapter_spec.js +103 -0
  245. package/test/spec/modules/pubmaticBidAdapter_spec.js +18 -0
  246. package/test/spec/modules/sharethroughBidAdapter_spec.js +35 -0
  247. package/test/spec/modules/smarthubBidAdapter_spec.js +6 -4
  248. package/test/spec/modules/ttdBidAdapter_spec.js +10 -1
  249. package/test/spec/modules/viantOrtbBidAdapter_spec.js +1 -1
  250. package/test/spec/modules/vidazooBidAdapter_spec.js +12 -4
  251. package/test/spec/modules/wurflRtdProvider_spec.js +324 -0
  252. package/test/spec/unit/pbjs_api_spec.js +11 -0
  253. package/test/spec/video_spec.js +103 -1
@@ -1,9 +1,9 @@
1
- import adagioAnalyticsAdapter from 'modules/adagioAnalyticsAdapter.js';
2
- import { expect } from 'chai';
3
- import * as utils from 'src/utils.js';
4
- import { server } from 'test/mocks/xhr.js';
5
1
  import * as prebidGlobal from 'src/prebidGlobal.js';
2
+ import * as utils from 'src/utils.js';
3
+ import adagioAnalyticsAdapter, { _internal } from 'modules/adagioAnalyticsAdapter.js';
6
4
  import { EVENTS } from 'src/constants.js';
5
+ import { expect } from 'chai';
6
+ import { server } from 'test/mocks/xhr.js';
7
7
 
8
8
  let adapterManager = require('src/adapterManager').default;
9
9
  let events = require('src/events');
@@ -14,30 +14,35 @@ describe('adagio analytics adapter - adagio.js', () => {
14
14
 
15
15
  beforeEach(() => {
16
16
  sandbox = sinon.createSandbox();
17
-
18
17
  sandbox.stub(events, 'getEvents').returns([]);
19
18
 
20
- const w = utils.getWindowTop();
19
+ sandbox.stub(prebidGlobal, 'getGlobal').returns({
20
+ installedModules: ['adagioRtdProvider', 'rtdModule']
21
+ });
21
22
 
22
23
  adapterManager.registerAnalyticsAdapter({
23
24
  code: 'adagio',
24
25
  adapter: adagioAnalyticsAdapter
25
26
  });
26
27
 
27
- w.ADAGIO = w.ADAGIO || {};
28
- w.ADAGIO.queue = w.ADAGIO.queue || [];
28
+ _internal.getAdagioNs().pageviewId = 'a68e6d70-213b-496c-be0a-c468ff387106';
29
29
 
30
- adagioQueuePushSpy = sandbox.spy(w.ADAGIO.queue, 'push');
30
+ adagioQueuePushSpy = sandbox.spy(_internal.getAdagioNs().queue, 'push');
31
31
  });
32
32
 
33
33
  afterEach(() => {
34
+ _internal.getAdagioNs().queue = [];
34
35
  sandbox.restore();
35
36
  });
36
37
 
37
38
  describe('track', () => {
38
39
  beforeEach(() => {
39
40
  adapterManager.enableAnalytics({
40
- provider: 'adagio'
41
+ provider: 'adagio',
42
+ options: {
43
+ organizationId: '1001',
44
+ site: 'test-com',
45
+ }
41
46
  });
42
47
  });
43
48
 
@@ -93,7 +98,6 @@ describe('adagio analytics adapter - adagio.js', () => {
93
98
 
94
99
  // Step 1-3: Send events
95
100
  Object.entries(testEvents).forEach(([ev, payload]) => events.emit(ev, payload));
96
-
97
101
  function eventItem(eventName, args) {
98
102
  return sinon.match({
99
103
  action: 'pb-analytics-event',
@@ -108,79 +112,13 @@ describe('adagio analytics adapter - adagio.js', () => {
108
112
  Object.entries(testEvents).forEach(([ev, payload]) => sinon.assert.calledWith(adagioQueuePushSpy, eventItem(ev, payload)));
109
113
  });
110
114
  });
111
-
112
- describe('no track', () => {
113
- beforeEach(() => {
114
- sandbox.stub(utils, 'getWindowTop').throws();
115
-
116
- adapterManager.enableAnalytics({
117
- provider: 'adagio'
118
- });
119
- });
120
-
121
- afterEach(() => {
122
- adagioAnalyticsAdapter.disableAnalytics();
123
- sandbox.restore();
124
- });
125
-
126
- it('builds and sends auction data', () => {
127
- let bidRequest = {
128
- bids: [{
129
- adUnitCode: 'div-1',
130
- params: {
131
- features: {
132
- siteId: '2',
133
- placement: 'pave_top',
134
- pagetype: 'article',
135
- category: 'IAB12,IAB12-2',
136
- device: '2',
137
- }
138
- }
139
- }, {
140
- adUnitCode: 'div-2',
141
- params: {
142
- features: {
143
- siteId: '2',
144
- placement: 'ban_top',
145
- pagetype: 'article',
146
- category: 'IAB12,IAB12-2',
147
- device: '2',
148
- }
149
- },
150
- }],
151
- };
152
- let bidResponse = {
153
- bidderCode: 'adagio',
154
- width: 300,
155
- height: 250,
156
- statusMessage: 'Bid available',
157
- cpm: 6.2189757658226075,
158
- currency: '',
159
- netRevenue: false,
160
- adUnitCode: 'div-1',
161
- timeToRespond: 132,
162
- };
163
-
164
- // Step 1: Send bid requested event
165
- events.emit(EVENTS.BID_REQUESTED, bidRequest);
166
-
167
- // Step 2: Send bid response event
168
- events.emit(EVENTS.BID_RESPONSE, bidResponse);
169
-
170
- // Step 3: Send auction end event
171
- events.emit(EVENTS.AUCTION_END, {});
172
-
173
- utils.getWindowTop.restore();
174
-
175
- sandbox.assert.callCount(adagioQueuePushSpy, 0);
176
- });
177
- });
178
115
  });
179
116
 
180
117
  const AUCTION_ID = '25c6d7f5-699a-4bfc-87c9-996f915341fa';
181
- const AUCTION_ID_ADAGIO = '6fc53663-bde5-427b-ab63-baa9ed296f47'
118
+ const RTD_AUCTION_ID = '753b3784-12a1-44c2-9d08-d0e4ee910e69';
119
+ const RTD_AUCTION_ID_CACHE = '04d991be-8f7d-4491-930b-2b7eefb3c447';
182
120
  const AUCTION_ID_CACHE = 'b43d24a0-13d4-406d-8176-3181402bafc4';
183
- const AUCTION_ID_CACHE_ADAGIO = 'a9cae98f-efb5-477e-9259-27350044f8db';
121
+ const SESSION_ID = 'c4f9e517-a592-45af-9560-ca191823d591';
184
122
 
185
123
  const BID_ADAGIO = {
186
124
  bidder: 'adagio',
@@ -254,14 +192,20 @@ const BID_CACHED = Object.assign({}, BID_ADAGIO, {
254
192
  });
255
193
 
256
194
  const PARAMS_ADG = {
257
- organizationId: '1001',
258
- site: 'test-com',
259
- pageviewId: 'a68e6d70-213b-496c-be0a-c468ff387106',
260
195
  environment: 'desktop',
196
+ };
197
+
198
+ const ORTB_DATA = {
261
199
  pagetype: 'article',
262
- placement: 'pave_top',
263
- testName: 'test',
264
- testVersion: 'version',
200
+ };
201
+
202
+ const ADG_RTD = {
203
+ 'uid': RTD_AUCTION_ID,
204
+ 'session': {
205
+ 'testName': 'test',
206
+ 'testVersion': 'version',
207
+ 'id': SESSION_ID,
208
+ }
265
209
  };
266
210
 
267
211
  const AUCTION_INIT_ANOTHER = {
@@ -301,7 +245,14 @@ const AUCTION_INIT_ANOTHER = {
301
245
  ...PARAMS_ADG
302
246
  },
303
247
  }, ],
304
- 'transactionId': 'ca4af27a-6d02-4f90-949d-d5541fa12014'
248
+ 'transactionId': 'ca4af27a-6d02-4f90-949d-d5541fa12014',
249
+ 'ortb2Imp': {
250
+ 'ext': {
251
+ 'data': {
252
+ 'placement': 'pave_top',
253
+ }
254
+ }
255
+ },
305
256
  }, {
306
257
  'code': '/19968336/footer-bid-tag-1',
307
258
  'mediaTypes': {
@@ -321,7 +272,14 @@ const AUCTION_INIT_ANOTHER = {
321
272
  'publisherId': '1001'
322
273
  },
323
274
  } ],
324
- 'transactionId': 'ca4af27a-6d02-4f90-949d-d5541fa12014'
275
+ 'transactionId': 'ca4af27a-6d02-4f90-949d-d5541fa12014',
276
+ 'ortb2Imp': {
277
+ 'ext': {
278
+ 'data': {
279
+ 'placement': 'pave_top',
280
+ }
281
+ }
282
+ },
325
283
  } ],
326
284
  'adUnitCodes': ['/19968336/header-bid-tag-1', '/19968336/footer-bid-tag-1'],
327
285
  'bidderRequests': [ {
@@ -387,6 +345,18 @@ const AUCTION_INIT_ANOTHER = {
387
345
  'timeout': 3000,
388
346
  'refererInfo': {
389
347
  'topmostLocation': 'http://www.test.com/page.html', 'reachedTop': true, 'numIframes': 0, 'stack': ['http://www.test.com/page.html']
348
+ },
349
+ 'ortb2': {
350
+ 'site': {
351
+ 'ext': {
352
+ 'data': {
353
+ 'adg_rtd': {
354
+ ...ADG_RTD
355
+ },
356
+ ...ORTB_DATA
357
+ }
358
+ }
359
+ }
390
360
  }
391
361
  }, {
392
362
  'bidderCode': 'adagio',
@@ -395,8 +365,7 @@ const AUCTION_INIT_ANOTHER = {
395
365
  'bids': [ {
396
366
  'bidder': 'adagio',
397
367
  'params': {
398
- ...PARAMS_ADG,
399
- adagioAuctionId: AUCTION_ID_ADAGIO
368
+ ...PARAMS_ADG
400
369
  },
401
370
  'mediaTypes': {
402
371
  'banner': {
@@ -416,6 +385,18 @@ const AUCTION_INIT_ANOTHER = {
416
385
  'timeout': 3000,
417
386
  'refererInfo': {
418
387
  'topmostLocation': 'http://www.test.com/page.html', 'reachedTop': true, 'numIframes': 0, 'stack': ['http://www.test.com/page.html']
388
+ },
389
+ 'ortb2': {
390
+ 'site': {
391
+ 'ext': {
392
+ 'data': {
393
+ 'adg_rtd': {
394
+ ...ADG_RTD
395
+ },
396
+ ...ORTB_DATA
397
+ }
398
+ }
399
+ }
419
400
  }
420
401
  }
421
402
  ],
@@ -456,7 +437,14 @@ const AUCTION_INIT_CACHE = {
456
437
  ...PARAMS_ADG
457
438
  },
458
439
  }, ],
459
- 'transactionId': 'ca4af27a-6d02-4f90-949d-d5541fa12014'
440
+ 'transactionId': 'ca4af27a-6d02-4f90-949d-d5541fa12014',
441
+ 'ortb2Imp': {
442
+ 'ext': {
443
+ 'data': {
444
+ 'placement': 'pave_top',
445
+ }
446
+ }
447
+ },
460
448
  }, {
461
449
  'code': '/19968336/footer-bid-tag-1',
462
450
  'mediaTypes': {
@@ -476,7 +464,14 @@ const AUCTION_INIT_CACHE = {
476
464
  'publisherId': '1001'
477
465
  },
478
466
  } ],
479
- 'transactionId': 'ca4af27a-6d02-4f90-949d-d5541fa12014'
467
+ 'transactionId': 'ca4af27a-6d02-4f90-949d-d5541fa12014',
468
+ 'ortb2Imp': {
469
+ 'ext': {
470
+ 'data': {
471
+ 'placement': 'pave_top',
472
+ }
473
+ }
474
+ },
480
475
  } ],
481
476
  'adUnitCodes': ['/19968336/header-bid-tag-1', '/19968336/footer-bid-tag-1'],
482
477
  'bidderRequests': [ {
@@ -524,6 +519,19 @@ const AUCTION_INIT_CACHE = {
524
519
  'timeout': 3000,
525
520
  'refererInfo': {
526
521
  'topmostLocation': 'http://www.test.com/page.html', 'reachedTop': true, 'numIframes': 0, 'stack': ['http://www.test.com/page.html']
522
+ },
523
+ 'ortb2': {
524
+ 'site': {
525
+ 'ext': {
526
+ 'data': {
527
+ 'adg_rtd': {
528
+ ...ADG_RTD,
529
+ 'uid': RTD_AUCTION_ID_CACHE
530
+ },
531
+ ...ORTB_DATA
532
+ }
533
+ }
534
+ }
527
535
  }
528
536
  }, {
529
537
  'bidderCode': 'adagio',
@@ -532,8 +540,7 @@ const AUCTION_INIT_CACHE = {
532
540
  'bids': [ {
533
541
  'bidder': 'adagio',
534
542
  'params': {
535
- ...PARAMS_ADG,
536
- adagioAuctionId: AUCTION_ID_CACHE_ADAGIO
543
+ ...PARAMS_ADG
537
544
  },
538
545
  'mediaTypes': {
539
546
  'banner': {
@@ -553,6 +560,19 @@ const AUCTION_INIT_CACHE = {
553
560
  'timeout': 3000,
554
561
  'refererInfo': {
555
562
  'topmostLocation': 'http://www.test.com/page.html', 'reachedTop': true, 'numIframes': 0, 'stack': ['http://www.test.com/page.html']
563
+ },
564
+ 'ortb2': {
565
+ 'site': {
566
+ 'ext': {
567
+ 'data': {
568
+ 'adg_rtd': {
569
+ ...ADG_RTD,
570
+ 'uid': RTD_AUCTION_ID_CACHE
571
+ },
572
+ ...ORTB_DATA
573
+ }
574
+ }
575
+ }
556
576
  }
557
577
  }
558
578
  ],
@@ -621,10 +641,27 @@ describe('adagio analytics adapter', () => {
621
641
  let sandbox;
622
642
 
623
643
  beforeEach(() => {
624
- sandbox = sinon.sandbox.create();
644
+ sandbox = sinon.createSandbox();
625
645
 
626
646
  sandbox.stub(events, 'getEvents').returns([]);
627
647
 
648
+ sandbox.stub(prebidGlobal, 'getGlobal').returns({
649
+ installedModules: ['adagioRtdProvider', 'rtdModule'],
650
+ convertCurrency: (cpm, from, to) => {
651
+ const convKeys = {
652
+ 'GBP-EUR': 0.7,
653
+ 'EUR-GBP': 1.3,
654
+ 'USD-EUR': 0.8,
655
+ 'EUR-USD': 1.2,
656
+ 'USD-GBP': 0.6,
657
+ 'GBP-USD': 1.6,
658
+ };
659
+ return cpm * (convKeys[`${from}-${to}`] || 1);
660
+ }
661
+ });
662
+
663
+ _internal.getAdagioNs().pageviewId = 'a68e6d70-213b-496c-be0a-c468ff387106';
664
+
628
665
  adapterManager.registerAnalyticsAdapter({
629
666
  code: 'adagio',
630
667
  adapter: adagioAnalyticsAdapter
@@ -632,13 +669,18 @@ describe('adagio analytics adapter', () => {
632
669
  });
633
670
 
634
671
  afterEach(() => {
672
+ _internal.getAdagioNs().queue = [];
635
673
  sandbox.restore();
636
674
  });
637
675
 
638
676
  describe('track', () => {
639
677
  beforeEach(() => {
640
678
  adapterManager.enableAnalytics({
641
- provider: 'adagio'
679
+ provider: 'adagio',
680
+ options: {
681
+ organizationId: '1001',
682
+ site: 'test-com',
683
+ }
642
684
  });
643
685
  });
644
686
 
@@ -647,20 +689,6 @@ describe('adagio analytics adapter', () => {
647
689
  });
648
690
 
649
691
  it('builds and sends auction data', () => {
650
- sandbox.stub(prebidGlobal, 'getGlobal').returns({
651
- convertCurrency: (cpm, from, to) => {
652
- const convKeys = {
653
- 'GBP-EUR': 0.7,
654
- 'EUR-GBP': 1.3,
655
- 'USD-EUR': 0.8,
656
- 'EUR-USD': 1.2,
657
- 'USD-GBP': 0.6,
658
- 'GBP-USD': 1.6,
659
- };
660
- return cpm * (convKeys[`${from}-${to}`] || 1);
661
- }
662
- });
663
-
664
692
  events.emit(EVENTS.AUCTION_INIT, MOCK.AUCTION_INIT.another);
665
693
  events.emit(EVENTS.BID_RESPONSE, MOCK.BID_RESPONSE.adagio);
666
694
  events.emit(EVENTS.BID_RESPONSE, MOCK.BID_RESPONSE.another);
@@ -668,7 +696,7 @@ describe('adagio analytics adapter', () => {
668
696
  events.emit(EVENTS.BID_WON, MOCK.BID_WON.another);
669
697
  events.emit(EVENTS.AD_RENDER_SUCCEEDED, MOCK.AD_RENDER_SUCCEEDED.another);
670
698
 
671
- expect(server.requests.length).to.equal(3, 'requests count');
699
+ expect(server.requests.length).to.equal(5, 'requests count');
672
700
  {
673
701
  const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[0].url);
674
702
  expect(protocol).to.equal('https');
@@ -676,7 +704,8 @@ describe('adagio analytics adapter', () => {
676
704
  expect(pathname).to.equal('/pba.gif');
677
705
  expect(search.v).to.equal('1');
678
706
  expect(search.pbjsv).to.equal('$prebid.version$');
679
- expect(search.auct_id).to.equal(AUCTION_ID_ADAGIO);
707
+ expect(search.s_id).to.equal(SESSION_ID);
708
+ expect(search.auct_id).to.equal(RTD_AUCTION_ID);
680
709
  expect(search.adu_code).to.equal('/19968336/header-bid-tag-1');
681
710
  expect(search.org_id).to.equal('1001');
682
711
  expect(search.site).to.equal('test-com');
@@ -695,7 +724,16 @@ describe('adagio analytics adapter', () => {
695
724
  expect(protocol).to.equal('https');
696
725
  expect(hostname).to.equal('c.4dex.io');
697
726
  expect(pathname).to.equal('/pba.gif');
727
+ expect(search.v).to.equal('1');
728
+ }
729
+
730
+ {
731
+ const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[2].url);
732
+ expect(protocol).to.equal('https');
733
+ expect(hostname).to.equal('c.4dex.io');
734
+ expect(pathname).to.equal('/pba.gif');
698
735
  expect(search.v).to.equal('2');
736
+ expect(search.adu_code).to.equal('/19968336/header-bid-tag-1');
699
737
  expect(search.e_sid).to.equal('42');
700
738
  expect(search.e_pba_test).to.equal('true');
701
739
  expect(search.bdrs_bid).to.equal('1,1,0');
@@ -703,12 +741,22 @@ describe('adagio analytics adapter', () => {
703
741
  }
704
742
 
705
743
  {
706
- const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[2].url);
744
+ const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[3].url);
745
+ expect(protocol).to.equal('https');
746
+ expect(hostname).to.equal('c.4dex.io');
747
+ expect(pathname).to.equal('/pba.gif');
748
+ expect(search.v).to.equal('2');
749
+ expect(search.auct_id).to.equal(RTD_AUCTION_ID);
750
+ expect(search.adu_code).to.equal('/19968336/footer-bid-tag-1');
751
+ }
752
+
753
+ {
754
+ const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[4].url);
707
755
  expect(protocol).to.equal('https');
708
756
  expect(hostname).to.equal('c.4dex.io');
709
757
  expect(pathname).to.equal('/pba.gif');
710
758
  expect(search.v).to.equal('3');
711
- expect(search.auct_id).to.equal(AUCTION_ID_ADAGIO);
759
+ expect(search.auct_id).to.equal(RTD_AUCTION_ID);
712
760
  expect(search.adu_code).to.equal('/19968336/header-bid-tag-1');
713
761
  expect(search.win_bdr).to.equal('another');
714
762
  expect(search.win_mt).to.equal('ban');
@@ -719,20 +767,6 @@ describe('adagio analytics adapter', () => {
719
767
  });
720
768
 
721
769
  it('builds and sends auction data with a cached bid win', () => {
722
- sandbox.stub(prebidGlobal, 'getGlobal').returns({
723
- convertCurrency: (cpm, from, to) => {
724
- const convKeys = {
725
- 'GBP-EUR': 0.7,
726
- 'EUR-GBP': 1.3,
727
- 'USD-EUR': 0.8,
728
- 'EUR-USD': 1.2,
729
- 'USD-GBP': 0.6,
730
- 'GBP-USD': 1.6,
731
- };
732
- return cpm * (convKeys[`${from}-${to}`] || 1);
733
- }
734
- });
735
-
736
770
  events.emit(EVENTS.AUCTION_INIT, MOCK.AUCTION_INIT.bidcached);
737
771
  events.emit(EVENTS.AUCTION_INIT, MOCK.AUCTION_INIT.another);
738
772
  events.emit(EVENTS.BID_RESPONSE, MOCK.BID_RESPONSE.adagio);
@@ -741,15 +775,17 @@ describe('adagio analytics adapter', () => {
741
775
  events.emit(EVENTS.BID_WON, MOCK.BID_WON.bidcached);
742
776
  events.emit(EVENTS.AD_RENDER_FAILED, MOCK.AD_RENDER_FAILED.bidcached);
743
777
 
744
- expect(server.requests.length).to.equal(5, 'requests count');
778
+ expect(server.requests.length).to.equal(8, 'requests count');
745
779
  {
780
+ // the first request is getting cached we expect to see its auction id later when it's re-used
746
781
  const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[0].url);
747
782
  expect(protocol).to.equal('https');
748
783
  expect(hostname).to.equal('c.4dex.io');
749
784
  expect(pathname).to.equal('/pba.gif');
750
785
  expect(search.v).to.equal('1');
751
786
  expect(search.pbjsv).to.equal('$prebid.version$');
752
- expect(search.auct_id).to.equal(AUCTION_ID_CACHE_ADAGIO);
787
+ expect(search.auct_id).to.equal(RTD_AUCTION_ID_CACHE);
788
+ expect(search.s_id).to.equal(SESSION_ID);
753
789
  expect(search.adu_code).to.equal('/19968336/header-bid-tag-1');
754
790
  expect(search.org_id).to.equal('1001');
755
791
  expect(search.site).to.equal('test-com');
@@ -772,7 +808,28 @@ describe('adagio analytics adapter', () => {
772
808
  expect(pathname).to.equal('/pba.gif');
773
809
  expect(search.v).to.equal('1');
774
810
  expect(search.pbjsv).to.equal('$prebid.version$');
775
- expect(search.auct_id).to.equal(AUCTION_ID_ADAGIO);
811
+ expect(search.auct_id).to.equal(RTD_AUCTION_ID_CACHE);
812
+ expect(search.adu_code).to.equal('/19968336/footer-bid-tag-1');
813
+ expect(search.org_id).to.equal('1001');
814
+ expect(search.site).to.equal('test-com');
815
+ expect(search.pv_id).to.equal('a68e6d70-213b-496c-be0a-c468ff387106');
816
+ expect(search.url_dmn).to.equal(window.location.hostname);
817
+ expect(search.pgtyp).to.equal('article');
818
+ expect(search.plcmt).to.equal('pave_top');
819
+ expect(search.mts).to.equal('ban');
820
+ expect(search.ban_szs).to.equal('640x480');
821
+ expect(search.bdrs).to.equal('another');
822
+ expect(search.adg_mts).to.not.exist;
823
+ }
824
+
825
+ {
826
+ const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[2].url);
827
+ expect(protocol).to.equal('https');
828
+ expect(hostname).to.equal('c.4dex.io');
829
+ expect(pathname).to.equal('/pba.gif');
830
+ expect(search.v).to.equal('1');
831
+ expect(search.pbjsv).to.equal('$prebid.version$');
832
+ expect(search.auct_id).to.equal(RTD_AUCTION_ID);
776
833
  expect(search.adu_code).to.equal('/19968336/header-bid-tag-1');
777
834
  expect(search.org_id).to.equal('1001');
778
835
  expect(search.site).to.equal('test-com');
@@ -787,11 +844,24 @@ describe('adagio analytics adapter', () => {
787
844
  }
788
845
 
789
846
  {
790
- const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[2].url);
847
+ const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[3].url);
848
+ expect(protocol).to.equal('https');
849
+ expect(hostname).to.equal('c.4dex.io');
850
+ expect(pathname).to.equal('/pba.gif');
851
+ expect(search.v).to.equal('1');
852
+ expect(search.auct_id).to.equal(RTD_AUCTION_ID);
853
+ expect(search.adu_code).to.equal('/19968336/footer-bid-tag-1');
854
+ expect(search.pv_id).to.equal('a68e6d70-213b-496c-be0a-c468ff387106');
855
+ }
856
+
857
+ {
858
+ const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[4].url);
791
859
  expect(protocol).to.equal('https');
792
860
  expect(hostname).to.equal('c.4dex.io');
793
861
  expect(pathname).to.equal('/pba.gif');
794
862
  expect(search.v).to.equal('2');
863
+ expect(search.auct_id).to.equal(RTD_AUCTION_ID);
864
+ expect(search.adu_code).to.equal('/19968336/header-bid-tag-1');
795
865
  expect(search.e_sid).to.equal('42');
796
866
  expect(search.e_pba_test).to.equal('true');
797
867
  expect(search.bdrs_bid).to.equal('0,0,0');
@@ -799,13 +869,24 @@ describe('adagio analytics adapter', () => {
799
869
  }
800
870
 
801
871
  {
802
- const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[3].url);
872
+ const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[5].url);
873
+ expect(protocol).to.equal('https');
874
+ expect(hostname).to.equal('c.4dex.io');
875
+ expect(pathname).to.equal('/pba.gif');
876
+ expect(search.v).to.equal('2');
877
+ expect(search.auct_id).to.equal(RTD_AUCTION_ID);
878
+ expect(search.adu_code).to.equal('/19968336/footer-bid-tag-1');
879
+ expect(search.rndr).to.not.exist;
880
+ }
881
+
882
+ {
883
+ const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[6].url);
803
884
  expect(protocol).to.equal('https');
804
885
  expect(hostname).to.equal('c.4dex.io');
805
886
  expect(pathname).to.equal('/pba.gif');
806
887
  expect(search.v).to.equal('3');
807
- expect(search.auct_id).to.equal(AUCTION_ID_ADAGIO);
808
- expect(search.auct_id_c).to.equal(AUCTION_ID_CACHE_ADAGIO);
888
+ expect(search.auct_id).to.equal(RTD_AUCTION_ID);
889
+ expect(search.auct_id_c).to.equal(RTD_AUCTION_ID_CACHE);
809
890
  expect(search.adu_code).to.equal('/19968336/header-bid-tag-1');
810
891
  expect(search.win_bdr).to.equal('adagio');
811
892
  expect(search.win_mt).to.equal('ban');
@@ -816,20 +897,28 @@ describe('adagio analytics adapter', () => {
816
897
  }
817
898
 
818
899
  {
819
- const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[4].url);
900
+ const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[7].url);
820
901
  expect(protocol).to.equal('https');
821
902
  expect(hostname).to.equal('c.4dex.io');
822
903
  expect(pathname).to.equal('/pba.gif');
823
904
  expect(search.v).to.equal('4');
824
- expect(search.auct_id).to.equal(AUCTION_ID_ADAGIO);
825
- expect(search.auct_id_c).to.equal(AUCTION_ID_CACHE_ADAGIO);
905
+ expect(search.auct_id).to.equal(RTD_AUCTION_ID);
906
+ expect(search.auct_id_c).to.equal(RTD_AUCTION_ID_CACHE);
826
907
  expect(search.adu_code).to.equal('/19968336/header-bid-tag-1');
908
+ expect(search.win_bdr).to.equal('adagio');
909
+ expect(search.win_mt).to.equal('ban');
910
+ expect(search.win_ban_sz).to.equal('728x90');
911
+ expect(search.win_net_cpm).to.equal('1.42');
912
+ expect(search.win_og_cpm).to.equal('1.42');
827
913
  expect(search.rndr).to.equal('0');
828
914
  }
829
915
  });
830
916
 
831
917
  it('send an "empty" cpm when adserver currency != USD and convertCurrency() is undefined', () => {
832
- sandbox.stub(prebidGlobal, 'getGlobal').returns({});
918
+ sandbox.restore();
919
+ sandbox.stub(prebidGlobal, 'getGlobal').returns({
920
+ installedModules: ['adagioRtdProvider', 'rtdModule']
921
+ });
833
922
 
834
923
  events.emit(EVENTS.AUCTION_INIT, MOCK.AUCTION_INIT.another);
835
924
  events.emit(EVENTS.BID_RESPONSE, MOCK.BID_RESPONSE.adagio);
@@ -838,14 +927,15 @@ describe('adagio analytics adapter', () => {
838
927
  events.emit(EVENTS.BID_WON, MOCK.BID_WON.another);
839
928
  events.emit(EVENTS.AD_RENDER_SUCCEEDED, MOCK.AD_RENDER_SUCCEEDED.another);
840
929
 
841
- expect(server.requests.length).to.equal(3, 'requests count');
930
+ expect(server.requests.length).to.equal(5, 'requests count');
842
931
 
843
932
  // fail to compute bidder cpm and send an "empty" cpm
844
933
  {
845
- const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[1].url);
934
+ const { protocol, hostname, pathname, search } = utils.parseUrl(server.requests[2].url);
846
935
  expect(protocol).to.equal('https');
847
936
  expect(hostname).to.equal('c.4dex.io');
848
937
  expect(pathname).to.equal('/pba.gif');
938
+ expect(search.s_id).to.equal(SESSION_ID);
849
939
  expect(search.v).to.equal('2');
850
940
  expect(search.e_sid).to.equal('42');
851
941
  expect(search.e_pba_test).to.equal('true');