prebid.js 9.0.0 → 9.2.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 (307) hide show
  1. package/.nvmrc +1 -1
  2. package/browsers.json +3 -3
  3. package/dist/33acrossAnalyticsAdapter.js +1 -1
  4. package/dist/33acrossBidAdapter.js +1 -1
  5. package/dist/33acrossIdSystem.js +1 -1
  6. package/dist/BTBidAdapter.js +1 -1
  7. package/dist/acuityadsBidAdapter.js +1 -1
  8. package/dist/adagioAnalyticsAdapter.js +1 -1
  9. package/dist/adagioBidAdapter.js +1 -1
  10. package/dist/adagioRtdProvider.js +1 -1
  11. package/dist/adagioUtils.js +1 -0
  12. package/dist/adgenerationBidAdapter.js +1 -1
  13. package/dist/admanBidAdapter.js +1 -1
  14. package/dist/adpod.js +1 -1
  15. package/dist/adprimeBidAdapter.js +1 -1
  16. package/dist/adqueryBidAdapter.js +1 -1
  17. package/dist/adrelevantisBidAdapter.js +1 -1
  18. package/dist/adstirBidAdapter.js +1 -1
  19. package/dist/adtrgtmeBidAdapter.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/ajaBidAdapter.js +1 -1
  24. package/dist/amxBidAdapter.js +1 -1
  25. package/dist/amxIdSystem.js +1 -1
  26. package/dist/appierAnalyticsAdapter.js +1 -1
  27. package/dist/appnexusBidAdapter.js +1 -1
  28. package/dist/appnexusUtils.js +1 -1
  29. package/dist/asoBidAdapter.js +1 -1
  30. package/dist/autoplayDetection.js +1 -1
  31. package/dist/axisBidAdapter.js +1 -1
  32. package/dist/axonixBidAdapter.js +1 -1
  33. package/dist/beyondmediaBidAdapter.js +1 -1
  34. package/dist/bidglassBidAdapter.js +1 -1
  35. package/dist/big-richmediaBidAdapter.js +1 -1
  36. package/dist/bliinkBidAdapter.js +1 -1
  37. package/dist/boldwinBidAdapter.js +1 -1
  38. package/dist/bridBidAdapter.js +1 -1
  39. package/dist/bridgewellBidAdapter.js +1 -1
  40. package/dist/brightMountainMediaBidAdapter.js +1 -1
  41. package/dist/carodaBidAdapter.js +1 -1
  42. package/dist/chtnwBidAdapter.js +1 -1
  43. package/dist/chunk-core.js +1 -1
  44. package/dist/compassBidAdapter.js +1 -1
  45. package/dist/concertBidAdapter.js +1 -1
  46. package/dist/connectadBidAdapter.js +1 -1
  47. package/dist/consumableBidAdapter.js +1 -1
  48. package/dist/contentexchangeBidAdapter.js +1 -1
  49. package/dist/conversantAnalyticsAdapter.js +1 -1
  50. package/dist/conversantBidAdapter.js +1 -1
  51. package/dist/craftBidAdapter.js +1 -1
  52. package/dist/criteoBidAdapter.js +1 -1
  53. package/dist/cwireBidAdapter.js +1 -1
  54. package/dist/dailymotionBidAdapter.js +1 -1
  55. package/dist/dependencies.json +83 -4
  56. package/dist/dspxBidAdapter.js +1 -1
  57. package/dist/dxkultureBidAdapter.js +1 -1
  58. package/dist/e_volutionBidAdapter.js +1 -1
  59. package/dist/emtvBidAdapter.js +1 -1
  60. package/dist/eplanningBidAdapter.js +1 -1
  61. package/dist/euidIdSystem.js +1 -1
  62. package/dist/exadsBidAdapter.js +1 -1
  63. package/dist/feedadBidAdapter.js +1 -1
  64. package/dist/finativeBidAdapter.js +1 -1
  65. package/dist/freewheel-sspBidAdapter.js +1 -1
  66. package/dist/globalsunBidAdapter.js +1 -1
  67. package/dist/gmosspBidAdapter.js +1 -1
  68. package/dist/goldbachBidAdapter.js +1 -1
  69. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  70. package/dist/greenbidsRtdProvider.js +1 -1
  71. package/dist/gridBidAdapter.js +1 -1
  72. package/dist/gumgumBidAdapter.js +1 -1
  73. package/dist/h12mediaBidAdapter.js +1 -1
  74. package/dist/hypelabBidAdapter.js +1 -1
  75. package/dist/id5IdSystem.js +1 -1
  76. package/dist/illuminBidAdapter.js +1 -1
  77. package/dist/imdsBidAdapter.js +1 -1
  78. package/dist/improvedigitalBidAdapter.js +1 -1
  79. package/dist/insticatorBidAdapter.js +1 -1
  80. package/dist/iqzoneBidAdapter.js +1 -1
  81. package/dist/ixBidAdapter.js +1 -1
  82. package/dist/jixieBidAdapter.js +1 -1
  83. package/dist/justpremiumBidAdapter.js +1 -1
  84. package/dist/kargoBidAdapter.js +1 -1
  85. package/dist/kimberliteBidAdapter.js +1 -1
  86. package/dist/kiviadsBidAdapter.js +1 -1
  87. package/dist/konduitAnalyticsAdapter.js +1 -1
  88. package/dist/krushmediaBidAdapter.js +1 -1
  89. package/dist/kueezBidAdapter.js +1 -1
  90. package/dist/kueezRtbBidAdapter.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/loyalBidAdapter.js +1 -1
  97. package/dist/luceadBidAdapter.js +1 -1
  98. package/dist/lunamediahbBidAdapter.js +1 -1
  99. package/dist/magniteAnalyticsAdapter.js +1 -1
  100. package/dist/malltvAnalyticsAdapter.js +1 -1
  101. package/dist/marsmediaBidAdapter.js +1 -1
  102. package/dist/mathildeadsBidAdapter.js +1 -1
  103. package/dist/mediafuseBidAdapter.js +1 -1
  104. package/dist/mediasquareBidAdapter.js +1 -1
  105. package/dist/mgidBidAdapter.js +1 -1
  106. package/dist/mgidXBidAdapter.js +1 -1
  107. package/dist/minutemediaBidAdapter.js +1 -1
  108. package/dist/missenaBidAdapter.js +1 -1
  109. package/dist/mobfoxpbBidAdapter.js +1 -1
  110. package/dist/mobianRtdProvider.js +1 -0
  111. package/dist/nexx360BidAdapter.js +1 -1
  112. package/dist/nobidAnalyticsAdapter.js +1 -1
  113. package/dist/nobidBidAdapter.js +1 -1
  114. package/dist/not-for-prod/prebid.js +190 -186
  115. package/dist/oguryBidAdapter.js +1 -1
  116. package/dist/onetagBidAdapter.js +1 -1
  117. package/dist/ooloAnalyticsAdapter.js +1 -1
  118. package/dist/openwebBidAdapter.js +1 -1
  119. package/dist/openxBidAdapter.js +1 -1
  120. package/dist/optidigitalBidAdapter.js +1 -1
  121. package/dist/ortbConverter.js +1 -1
  122. package/dist/outbrainBidAdapter.js +1 -1
  123. package/dist/ozoneBidAdapter.js +1 -1
  124. package/dist/paapi.js +1 -1
  125. package/dist/pgamsspBidAdapter.js +1 -1
  126. package/dist/pixfutureBidAdapter.js +1 -1
  127. package/dist/playdigoBidAdapter.js +1 -1
  128. package/dist/prebidServerBidAdapter.js +1 -1
  129. package/dist/pubCircleBidAdapter.js +1 -1
  130. package/dist/publinkIdSystem.js +1 -1
  131. package/dist/publirBidAdapter.js +1 -1
  132. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  133. package/dist/pubmaticBidAdapter.js +1 -1
  134. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  135. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  136. package/dist/pxyzBidAdapter.js +1 -1
  137. package/dist/qtBidAdapter.js +1 -1
  138. package/dist/quantcastBidAdapter.js +1 -1
  139. package/dist/raynRtdProvider.js +1 -1
  140. package/dist/readpeakBidAdapter.js +1 -1
  141. package/dist/relaidoBidAdapter.js +1 -1
  142. package/dist/retailspotBidAdapter.js +1 -1
  143. package/dist/rhythmoneBidAdapter.js +1 -1
  144. package/dist/richaudienceBidAdapter.js +1 -0
  145. package/dist/ringieraxelspringerBidAdapter.js +1 -1
  146. package/dist/riseBidAdapter.js +1 -1
  147. package/dist/rubiconBidAdapter.js +1 -1
  148. package/dist/seedingAllianceBidAdapter.js +1 -1
  149. package/dist/seedtagBidAdapter.js +1 -1
  150. package/dist/setupadBidAdapter.js +1 -1
  151. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  152. package/dist/sharethroughBidAdapter.js +1 -1
  153. package/dist/shinezBidAdapter.js +1 -1
  154. package/dist/shinezRtbBidAdapter.js +1 -1
  155. package/dist/smaatoBidAdapter.js +1 -1
  156. package/dist/smartadserverBidAdapter.js +1 -1
  157. package/dist/smartxBidAdapter.js +1 -1
  158. package/dist/smartytechBidAdapter.js +1 -1
  159. package/dist/smilewantedBidAdapter.js +1 -1
  160. package/dist/sonobiBidAdapter.js +1 -1
  161. package/dist/sovrnBidAdapter.js +1 -1
  162. package/dist/sspBCBidAdapter.js +1 -1
  163. package/dist/stnBidAdapter.js +1 -1
  164. package/dist/stvBidAdapter.js +1 -1
  165. package/dist/sublimeBidAdapter.js +1 -1
  166. package/dist/taboolaBidAdapter.js +1 -1
  167. package/dist/tagorasBidAdapter.js +1 -1
  168. package/dist/targetVideoBidAdapter.js +1 -1
  169. package/dist/teadsBidAdapter.js +1 -1
  170. package/dist/teqblazeUtils.js +1 -0
  171. package/dist/themoneytizerBidAdapter.js +1 -1
  172. package/dist/topicsFpdModule.js +1 -1
  173. package/dist/trionBidAdapter.js +1 -1
  174. package/dist/tripleliftBidAdapter.js +1 -1
  175. package/dist/ttdBidAdapter.js +1 -1
  176. package/dist/twistDigitalBidAdapter.js +1 -1
  177. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  178. package/dist/uid2IdSystem.js +1 -1
  179. package/dist/underdogmediaBidAdapter.js +1 -1
  180. package/dist/undertoneBidAdapter.js +1 -1
  181. package/dist/unrulyBidAdapter.js +1 -1
  182. package/dist/vidazooBidAdapter.js +1 -1
  183. package/dist/videobyteBidAdapter.js +1 -1
  184. package/dist/visiblemeasuresBidAdapter.js +1 -1
  185. package/dist/visxBidAdapter.js +1 -1
  186. package/dist/vuukleBidAdapter.js +1 -1
  187. package/dist/widespaceBidAdapter.js +1 -1
  188. package/dist/winrBidAdapter.js +1 -1
  189. package/dist/yahooAdsBidAdapter.js +1 -1
  190. package/dist/yieldmoBidAdapter.js +1 -1
  191. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  192. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  193. package/integrationExamples/gpt/raynRtdProvider_example.html +1 -0
  194. package/libraries/adagioUtils/adagioUtils.js +35 -0
  195. package/libraries/appnexusUtils/anUtils.js +1 -0
  196. package/libraries/autoplayDetection/autoplay.js +8 -1
  197. package/libraries/ortbConverter/converter.js +1 -1
  198. package/libraries/teqblazeUtils/bidderUtils.js +253 -0
  199. package/modules/.submodules.json +1 -0
  200. package/modules/acuityadsBidAdapter.js +5 -203
  201. package/modules/adagioBidAdapter.js +1 -17
  202. package/modules/adagioRtdProvider.js +41 -51
  203. package/modules/adagioRtdProvider.md +1 -0
  204. package/modules/admanBidAdapter.js +31 -188
  205. package/modules/adprimeBidAdapter.js +28 -165
  206. package/modules/axisBidAdapter.js +33 -165
  207. package/modules/beyondmediaBidAdapter.js +5 -189
  208. package/modules/bliinkBidAdapter.js +3 -31
  209. package/modules/boldwinBidAdapter.js +21 -159
  210. package/modules/ceeIdSystem.js +1 -1
  211. package/modules/compassBidAdapter.js +5 -198
  212. package/modules/contentexchangeBidAdapter.js +5 -200
  213. package/modules/conversantBidAdapter.js +1 -0
  214. package/modules/dailymotionBidAdapter.js +1 -1
  215. package/modules/e_volutionBidAdapter.js +4 -186
  216. package/modules/emtvBidAdapter.js +5 -198
  217. package/modules/globalsunBidAdapter.js +5 -199
  218. package/modules/id5IdSystem.js +31 -2
  219. package/modules/id5IdSystem.md +67 -2
  220. package/modules/iqzoneBidAdapter.js +5 -224
  221. package/modules/kiviadsBidAdapter.js +5 -199
  222. package/modules/krushmediaBidAdapter.js +25 -143
  223. package/modules/loyalBidAdapter.js +4 -178
  224. package/modules/lunamediahbBidAdapter.js +5 -118
  225. package/modules/mathildeadsBidAdapter.js +5 -198
  226. package/modules/mgidXBidAdapter.js +14 -209
  227. package/modules/mobfoxpbBidAdapter.js +4 -135
  228. package/modules/mobianRtdProvider.js +52 -0
  229. package/modules/mobianRtdProvider.md +11 -0
  230. package/modules/nobidAnalyticsAdapter.js +2 -3
  231. package/modules/novatiqIdSystem.md +2 -3
  232. package/modules/ozoneBidAdapter.js +117 -58
  233. package/modules/paapi.js +2 -1
  234. package/modules/pgamsspBidAdapter.js +5 -240
  235. package/modules/playdigoBidAdapter.js +4 -186
  236. package/modules/prebidServerBidAdapter/index.js +9 -2
  237. package/modules/pubCircleBidAdapter.js +5 -218
  238. package/modules/pubmaticAnalyticsAdapter.js +21 -8
  239. package/modules/pubxaiAnalyticsAdapter.js +1 -5
  240. package/modules/qtBidAdapter.js +5 -224
  241. package/modules/raynRtdProvider.js +36 -3
  242. package/modules/richaudienceBidAdapter.js +375 -0
  243. package/modules/richaudienceBidAdapter.md +1 -1
  244. package/modules/seedtagBidAdapter.js +1 -0
  245. package/modules/setupadBidAdapter.js +76 -153
  246. package/modules/setupadBidAdapter.md +1 -1
  247. package/modules/smaatoBidAdapter.js +17 -6
  248. package/modules/smartytechBidAdapter.js +7 -2
  249. package/modules/topicsFpdModule.js +1 -1
  250. package/modules/uid2IdSystem.js +0 -1
  251. package/modules/uid2IdSystem_shared.js +0 -1
  252. package/modules/visiblemeasuresBidAdapter.js +5 -199
  253. package/modules/zeta_global_sspAnalyticsAdapter.js +8 -4
  254. package/package.json +1 -1
  255. package/src/auction.js +5 -63
  256. package/src/utils/focusTimeout.js +41 -0
  257. package/src/utils/ttlCollection.js +2 -1
  258. package/src/utils.js +42 -0
  259. package/src/videoCache.js +72 -0
  260. package/test/mocks/videoCacheStub.js +1 -1
  261. package/test/spec/auctionmanager_spec.js +16 -1
  262. package/test/spec/libraries/teqblazeUtils/bidderUtils_spec.js +519 -0
  263. package/test/spec/modules/acuityadsBidAdapter_spec.js +79 -43
  264. package/test/spec/modules/adagioRtdProvider_spec.js +62 -1
  265. package/test/spec/modules/admanBidAdapter_spec.js +370 -247
  266. package/test/spec/modules/adprimeBidAdapter_spec.js +225 -78
  267. package/test/spec/modules/axisBidAdapter_spec.js +78 -14
  268. package/test/spec/modules/beyondmediaBidAdapter_spec.js +80 -18
  269. package/test/spec/modules/bliinkBidAdapter_spec.js +8 -2
  270. package/test/spec/modules/boldwinBidAdapter_spec.js +221 -75
  271. package/test/spec/modules/compassBidAdapter_spec.js +130 -16
  272. package/test/spec/modules/contentexchangeBidAdapter_spec.js +134 -21
  273. package/test/spec/modules/conversantBidAdapter_spec.js +7 -0
  274. package/test/spec/modules/dailymotionBidAdapter_spec.js +3 -3
  275. package/test/spec/modules/e_volutionBidAdapter_spec.js +65 -3
  276. package/test/spec/modules/emtvBidAdapter_spec.js +131 -16
  277. package/test/spec/modules/globalsunBidAdapter_spec.js +130 -16
  278. package/test/spec/modules/id5IdSystem_spec.js +79 -3
  279. package/test/spec/modules/iqzoneBidAdapter_spec.js +66 -12
  280. package/test/spec/modules/kiviadsBidAdapter_spec.js +131 -20
  281. package/test/spec/modules/krushmediaBidAdapter_spec.js +272 -90
  282. package/test/spec/modules/loyalBidAdapter_spec.js +114 -14
  283. package/test/spec/modules/lunamediahbBidAdapter_spec.js +221 -87
  284. package/test/spec/modules/mathildeadsBidAdapter_spec.js +87 -18
  285. package/test/spec/modules/mgidXBidAdapter_spec.js +11 -3
  286. package/test/spec/modules/mobfoxpbBidAdapter_spec.js +229 -91
  287. package/test/spec/modules/mobianRtdProvider_spec.js +107 -0
  288. package/test/spec/modules/ozoneBidAdapter_spec.js +192 -22
  289. package/test/spec/modules/paapi_spec.js +5 -5
  290. package/test/spec/modules/pgamsspBidAdapter_spec.js +83 -16
  291. package/test/spec/modules/playdigoBidAdapter_spec.js +38 -9
  292. package/test/spec/modules/prebidServerBidAdapter_spec.js +14 -0
  293. package/test/spec/modules/pubCircleBidAdapter_spec.js +82 -17
  294. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +52 -5
  295. package/test/spec/modules/qtBidAdapter_spec.js +15 -3
  296. package/test/spec/modules/raynRtdProvider_spec.js +25 -0
  297. package/test/spec/modules/richaudienceBidAdapter_spec.js +1304 -0
  298. package/test/spec/modules/seedtagBidAdapter_spec.js +2 -0
  299. package/test/spec/modules/setupadBidAdapter_spec.js +139 -97
  300. package/test/spec/modules/smaatoBidAdapter_spec.js +27 -0
  301. package/test/spec/modules/smartytechBidAdapter_spec.js +5 -1
  302. package/test/spec/modules/topicsFpdModule_spec.js +43 -59
  303. package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +130 -16
  304. package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +4 -0
  305. package/test/spec/ortbConverter/converter_spec.js +7 -3
  306. package/test/spec/unit/utils/focusTimeout_spec.js +60 -0
  307. package/test/spec/videoCache_spec.js +56 -53
@@ -43,7 +43,7 @@ export const ceeIdSubmodule = {
43
43
  * performs action to obtain id and return a value
44
44
  * @function
45
45
  * @returns {(IdResponse|undefined)}
46
- */
46
+ */
47
47
  getId(config) {
48
48
  const { params = {} } = config;
49
49
  const { tokenName, value } = params
@@ -1,212 +1,19 @@
1
- import { isFn, deepAccess, logMessage, logError } from '../src/utils.js';
2
- import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
3
-
4
1
  import { registerBidder } from '../src/adapters/bidderFactory.js';
5
2
  import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
6
- import { config } from '../src/config.js';
3
+ import { isBidRequestValid, buildRequests, interpretResponse, getUserSyncs } from '../libraries/teqblazeUtils/bidderUtils.js';
7
4
 
8
5
  const BIDDER_CODE = 'compass';
9
6
  const AD_URL = 'https://sa-lb.deliverimp.com/pbjs';
10
7
  const SYNC_URL = 'https://sa-cs.deliverimp.com';
11
8
 
12
- function isBidResponseValid(bid) {
13
- if (!bid.requestId || !bid.cpm || !bid.creativeId || !bid.ttl || !bid.currency) {
14
- return false;
15
- }
16
-
17
- switch (bid.mediaType) {
18
- case BANNER:
19
- return Boolean(bid.width && bid.height && bid.ad);
20
- case VIDEO:
21
- return Boolean(bid.vastUrl || bid.vastXml);
22
- case NATIVE:
23
- return Boolean(bid.native && bid.native.impressionTrackers && bid.native.impressionTrackers.length);
24
- default:
25
- return false;
26
- }
27
- }
28
-
29
- function getPlacementReqData(bid) {
30
- const { params, bidId, mediaTypes } = bid;
31
- const schain = bid.schain || {};
32
- const { placementId, endpointId } = params;
33
- const bidfloor = getBidFloor(bid);
34
-
35
- const placement = {
36
- bidId,
37
- schain,
38
- bidfloor
39
- };
40
-
41
- if (placementId) {
42
- placement.placementId = placementId;
43
- placement.type = 'publisher';
44
- } else if (endpointId) {
45
- placement.endpointId = endpointId;
46
- placement.type = 'network';
47
- }
48
-
49
- if (mediaTypes && mediaTypes[BANNER]) {
50
- placement.adFormat = BANNER;
51
- placement.sizes = mediaTypes[BANNER].sizes;
52
- } else if (mediaTypes && mediaTypes[VIDEO]) {
53
- placement.adFormat = VIDEO;
54
- placement.playerSize = mediaTypes[VIDEO].playerSize;
55
- placement.minduration = mediaTypes[VIDEO].minduration;
56
- placement.maxduration = mediaTypes[VIDEO].maxduration;
57
- placement.mimes = mediaTypes[VIDEO].mimes;
58
- placement.protocols = mediaTypes[VIDEO].protocols;
59
- placement.startdelay = mediaTypes[VIDEO].startdelay;
60
- placement.placement = mediaTypes[VIDEO].placement;
61
- placement.skip = mediaTypes[VIDEO].skip;
62
- placement.skipafter = mediaTypes[VIDEO].skipafter;
63
- placement.minbitrate = mediaTypes[VIDEO].minbitrate;
64
- placement.maxbitrate = mediaTypes[VIDEO].maxbitrate;
65
- placement.delivery = mediaTypes[VIDEO].delivery;
66
- placement.playbackmethod = mediaTypes[VIDEO].playbackmethod;
67
- placement.api = mediaTypes[VIDEO].api;
68
- placement.linearity = mediaTypes[VIDEO].linearity;
69
- } else if (mediaTypes && mediaTypes[NATIVE]) {
70
- placement.native = mediaTypes[NATIVE];
71
- placement.adFormat = NATIVE;
72
- }
73
-
74
- return placement;
75
- }
76
-
77
- function getBidFloor(bid) {
78
- if (!isFn(bid.getFloor)) {
79
- return deepAccess(bid, 'params.bidfloor', 0);
80
- }
81
-
82
- try {
83
- const bidFloor = bid.getFloor({
84
- currency: 'USD',
85
- mediaType: '*',
86
- size: '*',
87
- });
88
- return bidFloor.floor;
89
- } catch (err) {
90
- logError(err);
91
- return 0;
92
- }
93
- }
94
-
95
9
  export const spec = {
96
10
  code: BIDDER_CODE,
97
11
  supportedMediaTypes: [BANNER, VIDEO, NATIVE],
98
12
 
99
- isBidRequestValid: (bid = {}) => {
100
- const { params, bidId, mediaTypes } = bid;
101
- let valid = Boolean(bidId && params && (params.placementId || params.endpointId));
102
-
103
- if (mediaTypes && mediaTypes[BANNER]) {
104
- valid = valid && Boolean(mediaTypes[BANNER] && mediaTypes[BANNER].sizes);
105
- } else if (mediaTypes && mediaTypes[VIDEO]) {
106
- valid = valid && Boolean(mediaTypes[VIDEO] && mediaTypes[VIDEO].playerSize);
107
- } else if (mediaTypes && mediaTypes[NATIVE]) {
108
- valid = valid && Boolean(mediaTypes[NATIVE]);
109
- } else {
110
- valid = false;
111
- }
112
- return valid;
113
- },
114
-
115
- buildRequests: (validBidRequests = [], bidderRequest = {}) => {
116
- // convert Native ORTB definition to old-style prebid native definition
117
- validBidRequests = convertOrtbRequestToProprietaryNative(validBidRequests);
118
-
119
- let deviceWidth = 0;
120
- let deviceHeight = 0;
121
-
122
- let winLocation;
123
- try {
124
- const winTop = window.top;
125
- deviceWidth = winTop.screen.width;
126
- deviceHeight = winTop.screen.height;
127
- winLocation = winTop.location;
128
- } catch (e) {
129
- logMessage(e);
130
- winLocation = window.location;
131
- }
132
-
133
- const refferUrl = bidderRequest.refererInfo && bidderRequest.refererInfo.page;
134
- let refferLocation;
135
- try {
136
- refferLocation = refferUrl && new URL(refferUrl);
137
- } catch (e) {
138
- logMessage(e);
139
- }
140
- // TODO: does the fallback make sense here?
141
- let location = refferLocation || winLocation;
142
- const language = (navigator && navigator.language) ? navigator.language.split('-')[0] : '';
143
- const host = location.host;
144
- const page = location.pathname;
145
- const secure = location.protocol === 'https:' ? 1 : 0;
146
- const placements = [];
147
- const request = {
148
- deviceWidth,
149
- deviceHeight,
150
- language,
151
- secure,
152
- host,
153
- page,
154
- placements,
155
- coppa: config.getConfig('coppa') === true ? 1 : 0,
156
- ccpa: bidderRequest.uspConsent || undefined,
157
- gdpr: bidderRequest.gdprConsent || undefined,
158
- tmax: bidderRequest.timeout
159
- };
160
-
161
- const len = validBidRequests.length;
162
- for (let i = 0; i < len; i++) {
163
- const bid = validBidRequests[i];
164
- placements.push(getPlacementReqData(bid));
165
- }
166
-
167
- return {
168
- method: 'POST',
169
- url: AD_URL,
170
- data: request
171
- };
172
- },
173
-
174
- interpretResponse: (serverResponse) => {
175
- let response = [];
176
- for (let i = 0; i < serverResponse.body.length; i++) {
177
- let resItem = serverResponse.body[i];
178
- if (isBidResponseValid(resItem)) {
179
- const advertiserDomains = resItem.adomain && resItem.adomain.length ? resItem.adomain : [];
180
- resItem.meta = { ...resItem.meta, advertiserDomains };
181
-
182
- response.push(resItem);
183
- }
184
- }
185
- return response;
186
- },
187
-
188
- getUserSyncs: (syncOptions, serverResponses, gdprConsent, uspConsent) => {
189
- let syncType = syncOptions.iframeEnabled ? 'iframe' : 'image';
190
- let syncUrl = SYNC_URL + `/${syncType}?pbjs=1`;
191
- if (gdprConsent && gdprConsent.consentString) {
192
- if (typeof gdprConsent.gdprApplies === 'boolean') {
193
- syncUrl += `&gdpr=${Number(gdprConsent.gdprApplies)}&gdpr_consent=${gdprConsent.consentString}`;
194
- } else {
195
- syncUrl += `&gdpr=0&gdpr_consent=${gdprConsent.consentString}`;
196
- }
197
- }
198
- if (uspConsent && uspConsent.consentString) {
199
- syncUrl += `&ccpa_consent=${uspConsent.consentString}`;
200
- }
201
-
202
- const coppa = config.getConfig('coppa') ? 1 : 0;
203
- syncUrl += `&coppa=${coppa}`;
204
-
205
- return [{
206
- type: syncType,
207
- url: syncUrl
208
- }];
209
- }
13
+ isBidRequestValid: isBidRequestValid(),
14
+ buildRequests: buildRequests(AD_URL),
15
+ interpretResponse,
16
+ getUserSyncs: getUserSyncs(SYNC_URL)
210
17
  };
211
18
 
212
19
  registerBidder(spec);
@@ -1,216 +1,21 @@
1
- import { isFn, deepAccess, logMessage } from '../src/utils.js';
2
1
  import { registerBidder } from '../src/adapters/bidderFactory.js';
3
2
  import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
4
- import {config} from '../src/config.js';
5
- import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
3
+ import { isBidRequestValid, buildRequests, interpretResponse, getUserSyncs } from '../libraries/teqblazeUtils/bidderUtils.js';
6
4
 
7
5
  const BIDDER_CODE = 'contentexchange';
8
6
  const AD_URL = 'https://eu2.adnetwork.agency/pbjs';
9
7
  const SYNC_URL = 'https://sync2.adnetwork.agency';
10
8
  const GVLID = 864;
11
9
 
12
- function isBidResponseValid (bid) {
13
- if (!bid.requestId || !bid.cpm || !bid.creativeId ||
14
- !bid.ttl || !bid.currency || !bid.meta) {
15
- return false;
16
- }
17
-
18
- switch (bid.mediaType) {
19
- case BANNER:
20
- return Boolean(bid.width && bid.height && bid.ad);
21
- case VIDEO:
22
- return Boolean(bid.vastUrl || bid.vastXml);
23
- case NATIVE:
24
- return Boolean(bid.native && bid.native.impressionTrackers && bid.native.impressionTrackers.length);
25
- default:
26
- return false;
27
- }
28
- }
29
-
30
- function getPlacementReqData (bid) {
31
- const { params, bidId, mediaTypes } = bid;
32
- const schain = bid.schain || {};
33
- const { placementId, adFormat } = params;
34
- const bidfloor = getBidFloor(bid);
35
-
36
- const placement = {
37
- placementId,
38
- bidId,
39
- adFormat,
40
- schain,
41
- bidfloor
42
- };
43
-
44
- switch (adFormat) {
45
- case BANNER:
46
- placement.sizes = mediaTypes[BANNER].sizes;
47
- break;
48
- case VIDEO:
49
- placement.playerSize = mediaTypes[VIDEO].playerSize;
50
- placement.minduration = mediaTypes[VIDEO].minduration;
51
- placement.maxduration = mediaTypes[VIDEO].maxduration;
52
- placement.mimes = mediaTypes[VIDEO].mimes;
53
- placement.protocols = mediaTypes[VIDEO].protocols;
54
- placement.startdelay = mediaTypes[VIDEO].startdelay;
55
- placement.placement = mediaTypes[VIDEO].placement;
56
- placement.skip = mediaTypes[VIDEO].skip;
57
- placement.skipafter = mediaTypes[VIDEO].skipafter;
58
- placement.minbitrate = mediaTypes[VIDEO].minbitrate;
59
- placement.maxbitrate = mediaTypes[VIDEO].maxbitrate;
60
- placement.delivery = mediaTypes[VIDEO].delivery;
61
- placement.playbackmethod = mediaTypes[VIDEO].playbackmethod;
62
- placement.api = mediaTypes[VIDEO].api;
63
- placement.linearity = mediaTypes[VIDEO].linearity;
64
- break;
65
- case NATIVE:
66
- placement.native = mediaTypes[NATIVE];
67
- break;
68
- }
69
-
70
- return placement;
71
- }
72
-
73
- function getBidFloor(bid) {
74
- if (!isFn(bid.getFloor)) {
75
- return deepAccess(bid, 'params.bidfloor', 0);
76
- }
77
-
78
- try {
79
- const bidFloor = bid.getFloor({
80
- currency: 'USD',
81
- mediaType: '*',
82
- size: '*',
83
- });
84
- return bidFloor.floor;
85
- } catch (_) {
86
- return 0
87
- }
88
- }
89
-
90
10
  export const spec = {
91
11
  code: BIDDER_CODE,
92
12
  gvlid: GVLID,
93
13
  supportedMediaTypes: [BANNER, VIDEO, NATIVE],
94
14
 
95
- isBidRequestValid: (bid = {}) => {
96
- const { params, bidId, mediaTypes } = bid;
97
- let valid = Boolean(bidId &&
98
- params &&
99
- params.placementId &&
100
- params.adFormat
101
- );
102
- switch (params.adFormat) {
103
- case BANNER:
104
- valid = valid && Boolean(mediaTypes[BANNER] && mediaTypes[BANNER].sizes);
105
- break;
106
- case VIDEO:
107
- valid = valid && Boolean(mediaTypes[VIDEO] && mediaTypes[VIDEO].playerSize);
108
- break;
109
- case NATIVE:
110
- valid = valid && Boolean(mediaTypes[NATIVE]);
111
- break;
112
- default:
113
- valid = false;
114
- }
115
- return valid;
116
- },
117
-
118
- buildRequests: (validBidRequests = [], bidderRequest = {}) => {
119
- // convert Native ORTB definition to old-style prebid native definition
120
- validBidRequests = convertOrtbRequestToProprietaryNative(validBidRequests);
121
-
122
- let deviceWidth = 0;
123
- let deviceHeight = 0;
124
-
125
- let winLocation;
126
- try {
127
- const winTop = window.top;
128
- deviceWidth = winTop.screen.width;
129
- deviceHeight = winTop.screen.height;
130
- winLocation = winTop.location;
131
- } catch (e) {
132
- logMessage(e);
133
- winLocation = window.location;
134
- }
135
-
136
- const refferUrl = bidderRequest.refererInfo && bidderRequest.refererInfo.page;
137
- let refferLocation;
138
- try {
139
- refferLocation = refferUrl && new URL(refferUrl);
140
- } catch (e) {
141
- logMessage(e);
142
- }
143
-
144
- // TODO: does the fallback to 'window.location' make sense?
145
- let location = refferLocation || winLocation;
146
- const language = (navigator && navigator.language) ? navigator.language.split('-')[0] : '';
147
- const host = location.host;
148
- const page = location.pathname;
149
- const secure = location.protocol === 'https:' ? 1 : 0;
150
- const placements = [];
151
- const request = {
152
- deviceWidth,
153
- deviceHeight,
154
- language,
155
- secure,
156
- host,
157
- page,
158
- placements,
159
- coppa: config.getConfig('coppa') === true ? 1 : 0,
160
- ccpa: bidderRequest.uspConsent || undefined,
161
- gdpr: bidderRequest.gdprConsent || undefined,
162
- tmax: bidderRequest.timeout
163
- };
164
-
165
- const len = validBidRequests.length;
166
- for (let i = 0; i < len; i++) {
167
- const bid = validBidRequests[i];
168
- placements.push(getPlacementReqData(bid));
169
- }
170
-
171
- return {
172
- method: 'POST',
173
- url: AD_URL,
174
- data: request
175
- };
176
- },
177
-
178
- interpretResponse: (serverResponse) => {
179
- let response = [];
180
- for (let i = 0; i < serverResponse.body.length; i++) {
181
- let resItem = serverResponse.body[i];
182
- if (isBidResponseValid(resItem)) {
183
- const advertiserDomains = resItem.adomain && resItem.adomain.length ? resItem.adomain : [];
184
- resItem.meta = { ...resItem.meta, advertiserDomains };
185
-
186
- response.push(resItem);
187
- }
188
- }
189
- return response;
190
- },
191
-
192
- getUserSyncs: (syncOptions, serverResponses, gdprConsent, uspConsent) => {
193
- let syncType = syncOptions.iframeEnabled ? 'iframe' : 'image';
194
- let syncUrl = SYNC_URL + `/${syncType}?pbjs=1`;
195
- if (gdprConsent && gdprConsent.consentString) {
196
- if (typeof gdprConsent.gdprApplies === 'boolean') {
197
- syncUrl += `&gdpr=${Number(gdprConsent.gdprApplies)}&gdpr_consent=${gdprConsent.consentString}`;
198
- } else {
199
- syncUrl += `&gdpr=0&gdpr_consent=${gdprConsent.consentString}`;
200
- }
201
- }
202
- if (uspConsent && uspConsent.consentString) {
203
- syncUrl += `&ccpa_consent=${uspConsent.consentString}`;
204
- }
205
-
206
- const coppa = config.getConfig('coppa') ? 1 : 0;
207
- syncUrl += `&coppa=${coppa}`;
208
-
209
- return [{
210
- type: syncType,
211
- url: syncUrl
212
- }];
213
- }
15
+ isBidRequestValid: isBidRequestValid(),
16
+ buildRequests: buildRequests(AD_URL),
17
+ interpretResponse,
18
+ getUserSyncs: getUserSyncs(SYNC_URL)
214
19
  };
215
20
 
216
21
  registerBidder(spec);
@@ -60,6 +60,7 @@ const converter = ortbConverter({
60
60
  request: function (buildRequest, imps, bidderRequest, context) {
61
61
  const request = buildRequest(imps, bidderRequest, context);
62
62
  request.at = 1;
63
+ request.cur = ['USD'];
63
64
  if (context.bidRequests) {
64
65
  const bidRequest = context.bidRequests[0];
65
66
  setSiteId(bidRequest, request);
@@ -67,7 +67,7 @@ function getVideoMetadata(bidRequest, bidderRequest) {
67
67
  ? videoParams.isCreatedForKids
68
68
  : null,
69
69
  context: {
70
- siteOrAppCat: deepAccess(contentObj, 'cat', ''),
70
+ siteOrAppCat: deepAccess(contentObj, 'cat', []),
71
71
  videoViewsInSession: (
72
72
  typeof videoParams.videoViewsInSession === 'number' &&
73
73
  videoParams.videoViewsInSession >= 0
@@ -1,201 +1,19 @@
1
1
  import { registerBidder } from '../src/adapters/bidderFactory.js';
2
2
  import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
3
- import { deepAccess, logMessage } from '../src/utils.js';
4
- import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
3
+ import { isBidRequestValid, buildRequests, interpretResponse } from '../libraries/teqblazeUtils/bidderUtils.js';
5
4
 
6
5
  const BIDDER_CODE = 'e_volution';
7
6
  const GVLID = 957;
8
7
  const AD_URL = 'https://service.e-volution.ai/?c=o&m=multi';
9
8
 
10
- function isBidResponseValid(bid) {
11
- if (!bid.requestId || !bid.cpm || !bid.creativeId || !bid.ttl || !bid.currency) {
12
- return false;
13
- }
14
-
15
- switch (bid.mediaType) {
16
- case BANNER:
17
- return Boolean(bid.width && bid.height && bid.ad);
18
- case VIDEO:
19
- return Boolean(bid.vastUrl || bid.vastXml);
20
- case NATIVE:
21
- return Boolean(bid.native && bid.native.impressionTrackers && bid.native.impressionTrackers.length);
22
- default:
23
- return false;
24
- }
25
- }
26
-
27
- function getPlacementReqData(bid) {
28
- const { params, bidId, mediaTypes, transactionId, userIdAsEids } = bid;
29
- const schain = bid.schain || {};
30
- const { placementId } = params;
31
- const bidfloor = getBidFloor(bid);
32
-
33
- const placement = {
34
- placementId,
35
- bidId,
36
- schain,
37
- bidfloor
38
- };
39
-
40
- if (mediaTypes && mediaTypes[BANNER]) {
41
- placement.adFormat = BANNER;
42
- placement.sizes = mediaTypes[BANNER].sizes;
43
- } else if (mediaTypes && mediaTypes[VIDEO]) {
44
- placement.adFormat = VIDEO;
45
- placement.playerSize = mediaTypes[VIDEO].playerSize;
46
- placement.minduration = mediaTypes[VIDEO].minduration;
47
- placement.maxduration = mediaTypes[VIDEO].maxduration;
48
- placement.mimes = mediaTypes[VIDEO].mimes;
49
- placement.protocols = mediaTypes[VIDEO].protocols;
50
- placement.startdelay = mediaTypes[VIDEO].startdelay;
51
- placement.plcmt = mediaTypes[VIDEO].plcmt;
52
- placement.skip = mediaTypes[VIDEO].skip;
53
- placement.skipafter = mediaTypes[VIDEO].skipafter;
54
- placement.minbitrate = mediaTypes[VIDEO].minbitrate;
55
- placement.maxbitrate = mediaTypes[VIDEO].maxbitrate;
56
- placement.delivery = mediaTypes[VIDEO].delivery;
57
- placement.playbackmethod = mediaTypes[VIDEO].playbackmethod;
58
- placement.api = mediaTypes[VIDEO].api;
59
- placement.linearity = mediaTypes[VIDEO].linearity;
60
- } else if (mediaTypes && mediaTypes[NATIVE]) {
61
- placement.native = mediaTypes[NATIVE];
62
- placement.adFormat = NATIVE;
63
- }
64
-
65
- if (transactionId) {
66
- placement.ext = placement.ext || {};
67
- placement.ext.tid = transactionId;
68
- }
69
-
70
- if (userIdAsEids && userIdAsEids.length) {
71
- placement.eids = userIdAsEids;
72
- }
73
-
74
- return placement;
75
- }
76
-
77
- function getBidFloor(bid) {
78
- try {
79
- const bidFloor = bid.getFloor({
80
- currency: 'USD',
81
- mediaType: '*',
82
- size: '*',
83
- });
84
- return bidFloor.floor;
85
- } catch (err) {
86
- return 0;
87
- }
88
- }
89
-
90
9
  export const spec = {
91
10
  code: BIDDER_CODE,
92
11
  gvlid: GVLID,
93
12
  supportedMediaTypes: [BANNER, VIDEO, NATIVE],
94
13
 
95
- isBidRequestValid: (bid = {}) => {
96
- const { params, bidId, mediaTypes } = bid;
97
- let valid = Boolean(bidId && params && params.placementId);
98
-
99
- if (mediaTypes && mediaTypes[BANNER]) {
100
- valid = valid && Boolean(mediaTypes[BANNER] && mediaTypes[BANNER].sizes);
101
- } else if (mediaTypes && mediaTypes[VIDEO]) {
102
- valid = valid && Boolean(mediaTypes[VIDEO] && mediaTypes[VIDEO].playerSize);
103
- } else if (mediaTypes && mediaTypes[NATIVE]) {
104
- valid = valid && Boolean(mediaTypes[NATIVE]);
105
- } else {
106
- valid = false;
107
- }
108
- return valid;
109
- },
110
-
111
- buildRequests: (validBidRequests = [], bidderRequest = {}) => {
112
- // convert Native ORTB definition to old-style prebid native definition
113
- validBidRequests = convertOrtbRequestToProprietaryNative(validBidRequests);
114
-
115
- let deviceWidth = 0;
116
- let deviceHeight = 0;
117
-
118
- let winLocation;
119
- try {
120
- const winTop = window.top;
121
- deviceWidth = winTop.screen.width;
122
- deviceHeight = winTop.screen.height;
123
- winLocation = winTop.location;
124
- } catch (e) {
125
- logMessage(e);
126
- winLocation = window.location;
127
- }
128
-
129
- const refferUrl = bidderRequest.refererInfo && bidderRequest.refererInfo.page;
130
- let refferLocation;
131
- try {
132
- refferLocation = refferUrl && new URL(refferUrl);
133
- } catch (e) {
134
- logMessage(e);
135
- }
136
-
137
- let location = refferLocation || winLocation;
138
- const language = (navigator && navigator.language) ? navigator.language.split('-')[0] : '';
139
- const host = location.host;
140
- const page = location.pathname;
141
- const secure = location.protocol === 'https:' ? 1 : 0;
142
- const placements = [];
143
- const request = {
144
- deviceWidth,
145
- deviceHeight,
146
- language,
147
- secure,
148
- host,
149
- page,
150
- placements,
151
- coppa: deepAccess(bidderRequest, 'ortb2.regs.coppa') ? 1 : 0,
152
- tmax: bidderRequest.timeout
153
- };
154
-
155
- if (bidderRequest.uspConsent) {
156
- request.ccpa = bidderRequest.uspConsent;
157
- }
158
-
159
- if (bidderRequest.gdprConsent) {
160
- request.gdpr = {
161
- consentString: bidderRequest.gdprConsent.consentString
162
- };
163
- }
164
-
165
- if (bidderRequest.gppConsent) {
166
- request.gpp = bidderRequest.gppConsent.gppString;
167
- request.gpp_sid = bidderRequest.gppConsent.applicableSections;
168
- } else if (bidderRequest.ortb2?.regs?.gpp) {
169
- request.gpp = bidderRequest.ortb2.regs.gpp;
170
- request.gpp_sid = bidderRequest.ortb2.regs.gpp_sid;
171
- }
172
-
173
- const len = validBidRequests.length;
174
- for (let i = 0; i < len; i++) {
175
- const bid = validBidRequests[i];
176
- placements.push(getPlacementReqData(bid));
177
- }
178
-
179
- return {
180
- method: 'POST',
181
- url: AD_URL,
182
- data: request
183
- };
184
- },
185
-
186
- interpretResponse: (serverResponse) => {
187
- let response = [];
188
- for (let i = 0; i < serverResponse.body.length; i++) {
189
- let resItem = serverResponse.body[i];
190
- if (isBidResponseValid(resItem)) {
191
- const advertiserDomains = resItem.adomain && resItem.adomain.length ? resItem.adomain : [];
192
- resItem.meta = { ...resItem.meta, advertiserDomains };
193
-
194
- response.push(resItem);
195
- }
196
- }
197
- return response;
198
- }
14
+ isBidRequestValid: isBidRequestValid(),
15
+ buildRequests: buildRequests(AD_URL),
16
+ interpretResponse
199
17
  };
200
18
 
201
19
  registerBidder(spec);