prebid.js 7.44.0 → 7.46.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 (309) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/acuityAdsBidAdapter.js +1 -1
  4. package/dist/adagioBidAdapter.js +1 -1
  5. package/dist/adbookpspBidAdapter.js +1 -1
  6. package/dist/adgenerationBidAdapter.js +1 -1
  7. package/dist/admaticBidAdapter.js +1 -1
  8. package/dist/adnuntiusBidAdapter.js +1 -1
  9. package/dist/adrelevantisBidAdapter.js +1 -1
  10. package/dist/adtrgtmeBidAdapter.js +1 -1
  11. package/dist/adxcgBidAdapter.js +1 -1
  12. package/dist/adyoulikeBidAdapter.js +1 -1
  13. package/dist/ajaBidAdapter.js +1 -1
  14. package/dist/amxBidAdapter.js +1 -1
  15. package/dist/amxIdSystem.js +1 -1
  16. package/dist/appierAnalyticsAdapter.js +1 -1
  17. package/dist/appnexusBidAdapter.js +1 -1
  18. package/dist/appushBidAdapter.js +1 -1
  19. package/dist/asoBidAdapter.js +1 -1
  20. package/dist/axonixBidAdapter.js +1 -1
  21. package/dist/beyondmediaBidAdapter.js +1 -1
  22. package/dist/bidglassBidAdapter.js +1 -1
  23. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  24. package/dist/big-richmediaBidAdapter.js +1 -1
  25. package/dist/braveBidAdapter.js +1 -1
  26. package/dist/bridgewellBidAdapter.js +1 -1
  27. package/dist/brightMountainMediaBidAdapter.js +1 -1
  28. package/dist/brightcomBidAdapter.js +1 -1
  29. package/dist/brightcomSSPBidAdapter.js +1 -1
  30. package/dist/carodaBidAdapter.js +1 -1
  31. package/dist/chtnwBidAdapter.js +1 -1
  32. package/dist/coinzillaBidAdapter.js +1 -1
  33. package/dist/compassBidAdapter.js +1 -1
  34. package/dist/concertBidAdapter.js +1 -1
  35. package/dist/connectIdSystem.js +1 -1
  36. package/dist/connectadBidAdapter.js +1 -1
  37. package/dist/consumableBidAdapter.js +1 -1
  38. package/dist/contentexchangeBidAdapter.js +1 -1
  39. package/dist/conversantAnalyticsAdapter.js +1 -1
  40. package/dist/conversantBidAdapter.js +1 -1
  41. package/dist/craftBidAdapter.js +1 -1
  42. package/dist/criteoBidAdapter.js +1 -1
  43. package/dist/cwireBidAdapter.js +1 -1
  44. package/dist/debugging-standalone.js +1 -1
  45. package/dist/dependencies.json +15 -0
  46. package/dist/domainOverrideToRootDomain.js +1 -0
  47. package/dist/dspxBidAdapter.js +1 -1
  48. package/dist/eplanningBidAdapter.js +1 -1
  49. package/dist/eskimiBidAdapter.js +1 -0
  50. package/dist/feedadBidAdapter.js +1 -1
  51. package/dist/finativeBidAdapter.js +1 -1
  52. package/dist/freewheel-sspBidAdapter.js +1 -1
  53. package/dist/glimpseBidAdapter.js +1 -1
  54. package/dist/globalsunBidAdapter.js +1 -1
  55. package/dist/gmosspBidAdapter.js +1 -1
  56. package/dist/goldbachBidAdapter.js +1 -1
  57. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  58. package/dist/gridBidAdapter.js +1 -1
  59. package/dist/growthCodeIdSystem.js +1 -1
  60. package/dist/gumgumBidAdapter.js +1 -1
  61. package/dist/h12mediaBidAdapter.js +1 -1
  62. package/dist/id5IdSystem.js +1 -1
  63. package/dist/improvedigitalBidAdapter.js +1 -1
  64. package/dist/inmarBidAdapter.js +1 -1
  65. package/dist/insticatorBidAdapter.js +1 -1
  66. package/dist/iqzoneBidAdapter.js +1 -1
  67. package/dist/ivsBidAdapter.js +1 -0
  68. package/dist/ixBidAdapter.js +1 -1
  69. package/dist/justpremiumBidAdapter.js +1 -1
  70. package/dist/jwplayerVideoProvider.js +1 -1
  71. package/dist/kargoBidAdapter.js +1 -1
  72. package/dist/koblerBidAdapter.js +1 -1
  73. package/dist/konduitAnalyticsAdapter.js +1 -1
  74. package/dist/kueezBidAdapter.js +1 -1
  75. package/dist/kueezRtbBidAdapter.js +1 -1
  76. package/dist/kulturemediaBidAdapter.js +1 -1
  77. package/dist/lassoBidAdapter.js +1 -1
  78. package/dist/lifestreetBidAdapter.js +1 -1
  79. package/dist/liveIntentIdSystem.js +1 -1
  80. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  81. package/dist/logicadBidAdapter.js +1 -1
  82. package/dist/loglyliftBidAdapter.js +1 -1
  83. package/dist/luponmediaBidAdapter.js +1 -1
  84. package/dist/magniteAnalyticsAdapter.js +1 -1
  85. package/dist/malltvAnalyticsAdapter.js +1 -1
  86. package/dist/marsmediaBidAdapter.js +1 -1
  87. package/dist/mathildeadsBidAdapter.js +1 -1
  88. package/dist/mediafuseBidAdapter.js +1 -1
  89. package/dist/medianetBidAdapter.js +1 -1
  90. package/dist/mediasquareBidAdapter.js +1 -1
  91. package/dist/mgidBidAdapter.js +1 -1
  92. package/dist/minutemediaBidAdapter.js +1 -1
  93. package/dist/minutemediaplusBidAdapter.js +1 -1
  94. package/dist/nativoBidAdapter.js +1 -1
  95. package/dist/neuwoRtdProvider.js +1 -1
  96. package/dist/nexx360BidAdapter.js +1 -1
  97. package/dist/not-for-prod/prebid.js +165 -162
  98. package/dist/oguryBidAdapter.js +1 -1
  99. package/dist/onetagBidAdapter.js +1 -1
  100. package/dist/onomagicBidAdapter.js +1 -1
  101. package/dist/ooloAnalyticsAdapter.js +1 -1
  102. package/dist/openxBidAdapter.js +1 -1
  103. package/dist/openxOrtbBidAdapter.js +1 -1
  104. package/dist/operaadsBidAdapter.js +1 -1
  105. package/dist/optidigitalBidAdapter.js +1 -1
  106. package/dist/ortbConverter.js +1 -1
  107. package/dist/outbrainBidAdapter.js +1 -1
  108. package/dist/pairIdSystem.js +1 -0
  109. package/dist/parrableIdSystem.js +1 -1
  110. package/dist/pixfutureBidAdapter.js +1 -1
  111. package/dist/prebid-core.js +1 -1
  112. package/dist/publinkIdSystem.js +1 -1
  113. package/dist/pubmaticBidAdapter.js +1 -1
  114. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  115. package/dist/pubxBidAdapter.js +1 -1
  116. package/dist/pxyzBidAdapter.js +1 -1
  117. package/dist/quantcastBidAdapter.js +1 -1
  118. package/dist/readpeakBidAdapter.js +1 -1
  119. package/dist/relaidoBidAdapter.js +1 -1
  120. package/dist/rhythmoneBidAdapter.js +1 -1
  121. package/dist/riseBidAdapter.js +1 -1
  122. package/dist/rubiconAnalyticsAdapter.js +1 -1
  123. package/dist/rubiconBidAdapter.js +1 -1
  124. package/dist/seedingAllianceBidAdapter.js +1 -1
  125. package/dist/seedtagBidAdapter.js +1 -1
  126. package/dist/sharedIdSystem.js +1 -1
  127. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  128. package/dist/sharethroughBidAdapter.js +1 -1
  129. package/dist/shinezBidAdapter.js +1 -1
  130. package/dist/smaatoBidAdapter.js +1 -1
  131. package/dist/smartadserverBidAdapter.js +1 -1
  132. package/dist/smarthubBidAdapter.js +1 -1
  133. package/dist/smartxBidAdapter.js +1 -1
  134. package/dist/smilewantedBidAdapter.js +1 -1
  135. package/dist/sonobiBidAdapter.js +1 -1
  136. package/dist/sovrnAnalyticsAdapter.js +1 -1
  137. package/dist/sovrnBidAdapter.js +1 -1
  138. package/dist/sspBCBidAdapter.js +1 -1
  139. package/dist/stvBidAdapter.js +1 -1
  140. package/dist/sublimeBidAdapter.js +1 -1
  141. package/dist/synacormediaBidAdapter.js +1 -1
  142. package/dist/targetVideoBidAdapter.js +1 -1
  143. package/dist/teadsBidAdapter.js +1 -1
  144. package/dist/trionBidAdapter.js +1 -1
  145. package/dist/tripleliftBidAdapter.js +1 -1
  146. package/dist/truereachBidAdapter.js +1 -1
  147. package/dist/ttdBidAdapter.js +1 -1
  148. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  149. package/dist/uid2IdSystem.js +1 -1
  150. package/dist/underdogmediaBidAdapter.js +1 -1
  151. package/dist/undertoneBidAdapter.js +1 -1
  152. package/dist/userId.js +1 -1
  153. package/dist/vidazooBidAdapter.js +1 -1
  154. package/dist/videobyteBidAdapter.js +1 -1
  155. package/dist/videoheroesBidAdapter.js +1 -1
  156. package/dist/vidoomyBidAdapter.js +1 -1
  157. package/dist/visiblemeasuresBidAdapter.js +1 -1
  158. package/dist/visxBidAdapter.js +1 -1
  159. package/dist/vrtcalBidAdapter.js +1 -1
  160. package/dist/vuukleBidAdapter.js +1 -1
  161. package/dist/widespaceBidAdapter.js +1 -1
  162. package/dist/winrBidAdapter.js +1 -1
  163. package/dist/yahoosspBidAdapter.js +1 -1
  164. package/dist/yieldmoBidAdapter.js +1 -1
  165. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  166. package/dist/yieldoneBidAdapter.js +1 -1
  167. package/integrationExamples/gpt/fledge_example.html +103 -0
  168. package/integrationExamples/gpt/prebidServer_fledge_example.html +111 -0
  169. package/libraries/domainOverrideToRootDomain/index.js +39 -0
  170. package/libraries/ortbConverter/processors/video.js +1 -0
  171. package/modules/acuityAdsBidAdapter.js +1 -1
  172. package/modules/admaticBidAdapter.js +7 -2
  173. package/modules/adnuntiusBidAdapter.js +3 -1
  174. package/modules/amxBidAdapter.js +1 -1
  175. package/modules/amxIdSystem.js +23 -20
  176. package/modules/amxIdSystem.md +7 -7
  177. package/modules/appnexusBidAdapter.js +108 -102
  178. package/modules/appushBidAdapter.js +1 -1
  179. package/modules/beyondmediaBidAdapter.js +1 -1
  180. package/modules/bidwatchAnalyticsAdapter.js +2 -0
  181. package/modules/braveBidAdapter.js +1 -1
  182. package/modules/brightcomBidAdapter.js +1 -1
  183. package/modules/brightcomSSPBidAdapter.js +1 -1
  184. package/modules/coinzillaBidAdapter.js +1 -2
  185. package/modules/compassBidAdapter.js +1 -1
  186. package/modules/connectIdSystem.js +96 -21
  187. package/modules/connectIdSystem.md +6 -5
  188. package/modules/contentexchangeBidAdapter.js +1 -1
  189. package/modules/conversantBidAdapter.js +3 -0
  190. package/modules/criteoBidAdapter.js +5 -1
  191. package/modules/eskimiBidAdapter.js +72 -0
  192. package/modules/eskimiBidAdapter.md +34 -0
  193. package/modules/freewheel-sspBidAdapter.js +8 -0
  194. package/modules/glimpseBidAdapter.js +1 -2
  195. package/modules/globalsunBidAdapter.js +1 -1
  196. package/modules/gridBidAdapter.js +43 -20
  197. package/modules/growthCodeIdSystem.js +18 -15
  198. package/modules/gumgumBidAdapter.js +1 -1
  199. package/modules/iqzoneBidAdapter.js +1 -1
  200. package/modules/ivsBidAdapter.js +85 -0
  201. package/modules/ivsBidAdapter.md +34 -0
  202. package/modules/ixBidAdapter.js +72 -105
  203. package/modules/jwplayerVideoProvider.js +25 -32
  204. package/modules/kargoBidAdapter.js +473 -246
  205. package/modules/koblerBidAdapter.js +1 -2
  206. package/modules/kueezBidAdapter.js +1 -1
  207. package/modules/kueezRtbBidAdapter.js +16 -4
  208. package/modules/liveIntentIdSystem.js +8 -0
  209. package/modules/luponmediaBidAdapter.js +1 -1
  210. package/modules/magniteAnalyticsAdapter.js +76 -3
  211. package/modules/mathildeadsBidAdapter.js +1 -1
  212. package/modules/medianetBidAdapter.js +1 -1
  213. package/modules/mediasquareBidAdapter.js +2 -1
  214. package/modules/mgidBidAdapter.js +178 -26
  215. package/modules/minutemediaBidAdapter.js +1 -1
  216. package/modules/minutemediaplusBidAdapter.js +16 -4
  217. package/modules/nativoBidAdapter.js +110 -21
  218. package/modules/neuwoRtdProvider.js +0 -2
  219. package/modules/oguryBidAdapter.js +3 -2
  220. package/modules/onomagicBidAdapter.js +1 -2
  221. package/modules/openxBidAdapter.js +192 -563
  222. package/modules/openxBidAdapter.md +22 -20
  223. package/modules/openxOrtbBidAdapter.js +13 -11
  224. package/modules/openxOrtbBidAdapter.md +5 -3
  225. package/modules/operaadsBidAdapter.js +1 -1
  226. package/modules/pairIdSystem.js +79 -0
  227. package/modules/pubmaticBidAdapter.js +13 -10
  228. package/modules/pubxBidAdapter.js +5 -2
  229. package/modules/riseBidAdapter.js +1 -1
  230. package/modules/sharedIdSystem.js +4 -27
  231. package/modules/sharethroughBidAdapter.js +1 -1
  232. package/modules/shinezBidAdapter.js +1 -1
  233. package/modules/smarthubBidAdapter.js +1 -1
  234. package/modules/synacormediaBidAdapter.js +1 -3
  235. package/modules/truereachBidAdapter.js +1 -2
  236. package/modules/userId/eids.js +24 -0
  237. package/modules/userId/eids.md +16 -0
  238. package/modules/videoheroesBidAdapter.js +1 -1
  239. package/modules/vidoomyBidAdapter.js +33 -4
  240. package/modules/visiblemeasuresBidAdapter.js +1 -1
  241. package/modules/vrtcalBidAdapter.js +1 -1
  242. package/modules/yieldmoBidAdapter.js +15 -5
  243. package/modules/yieldoneBidAdapter.js +1 -1
  244. package/package.json +1 -1
  245. package/src/Renderer.js +2 -1
  246. package/src/config.js +78 -127
  247. package/src/native.js +5 -1
  248. package/test/spec/auctionmanager_spec.js +2 -2
  249. package/test/spec/libraries/domainOverrideToRootDomain/index_spec.js +77 -0
  250. package/test/spec/modules/1plusXRtdProvider_spec.js +8 -7
  251. package/test/spec/modules/acuityAdsBidAdapter_spec.js +2 -1
  252. package/test/spec/modules/adagioBidAdapter_spec.js +0 -25
  253. package/test/spec/modules/admaticBidAdapter_spec.js +1 -1
  254. package/test/spec/modules/adnuntiusBidAdapter_spec.js +2 -1
  255. package/test/spec/modules/amxIdSystem_spec.js +13 -26
  256. package/test/spec/modules/appnexusBidAdapter_spec.js +464 -448
  257. package/test/spec/modules/appushBidAdapter_spec.js +2 -1
  258. package/test/spec/modules/axonixBidAdapter_spec.js +0 -27
  259. package/test/spec/modules/beyondmediaBidAdapter_spec.js +2 -1
  260. package/test/spec/modules/big-richmediaBidAdapter_spec.js +68 -64
  261. package/test/spec/modules/compassBidAdapter_spec.js +2 -1
  262. package/test/spec/modules/connectIdSystem_spec.js +420 -242
  263. package/test/spec/modules/contentexchangeBidAdapter_spec.js +2 -1
  264. package/test/spec/modules/conversantBidAdapter_spec.js +1 -0
  265. package/test/spec/modules/criteoBidAdapter_spec.js +33 -1
  266. package/test/spec/modules/eids_spec.js +30 -0
  267. package/test/spec/modules/eskimiBidAdapter_spec.js +155 -0
  268. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +37 -0
  269. package/test/spec/modules/globalsunBidAdapter_spec.js +2 -1
  270. package/test/spec/modules/gridBidAdapter_spec.js +8 -0
  271. package/test/spec/modules/iqzoneBidAdapter_spec.js +2 -1
  272. package/test/spec/modules/ivsBidAdapter_spec.js +197 -0
  273. package/test/spec/modules/ixBidAdapter_spec.js +141 -71
  274. package/test/spec/modules/kargoBidAdapter_spec.js +297 -140
  275. package/test/spec/modules/koblerBidAdapter_spec.js +0 -20
  276. package/test/spec/modules/kueezRtbBidAdapter_spec.js +22 -2
  277. package/test/spec/modules/liveIntentIdSystem_spec.js +10 -0
  278. package/test/spec/modules/luponmediaBidAdapter_spec.js +1 -1
  279. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +129 -1
  280. package/test/spec/modules/mathildeadsBidAdapter_spec.js +2 -1
  281. package/test/spec/modules/mgidBidAdapter_spec.js +184 -36
  282. package/test/spec/modules/minutemediaplusBidAdapter_spec.js +22 -2
  283. package/test/spec/modules/nativoBidAdapter_spec.js +101 -0
  284. package/test/spec/modules/neuwoRtdProvider_spec.js +0 -1
  285. package/test/spec/modules/oguryBidAdapter_spec.js +19 -4
  286. package/test/spec/modules/ooloAnalyticsAdapter_spec.js +1 -1
  287. package/test/spec/modules/openxBidAdapter_spec.js +1157 -1936
  288. package/test/spec/modules/openxOrtbBidAdapter_spec.js +12 -39
  289. package/test/spec/modules/pairIdSystem_spec.js +68 -0
  290. package/test/spec/modules/pubCommonId_spec.js +0 -17
  291. package/test/spec/modules/pubmaticBidAdapter_spec.js +868 -867
  292. package/test/spec/modules/pubxBidAdapter_spec.js +10 -2
  293. package/test/spec/modules/realvuAnalyticsAdapter_spec.js +0 -5
  294. package/test/spec/modules/sharedIdSystem_spec.js +0 -46
  295. package/test/spec/modules/sharethroughBidAdapter_spec.js +2 -1
  296. package/test/spec/modules/smarthubBidAdapter_spec.js +2 -1
  297. package/test/spec/modules/synacormediaBidAdapter_spec.js +0 -26
  298. package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +17 -4
  299. package/test/spec/modules/vidoomyBidAdapter_spec.js +58 -0
  300. package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +2 -1
  301. package/test/spec/modules/vrtcalBidAdapter_spec.js +3 -2
  302. package/test/spec/modules/yieldmoBidAdapter_spec.js +19 -1
  303. package/test/spec/renderer_spec.js +1 -2
  304. package/test/spec/unit/pbjs_api_spec.js +19 -3
  305. package/test/test_index.js +13 -3
  306. package/dist/gridNMBidAdapter.js +0 -1
  307. package/modules/gridNMBidAdapter.js +0 -422
  308. package/modules/gridNMBidAdapter.md +0 -39
  309. package/test/spec/modules/gridNMBidAdapter_spec.js +0 -636
@@ -1,422 +0,0 @@
1
- import {
2
- isStr,
3
- deepAccess,
4
- isArray,
5
- isNumber,
6
- logError,
7
- logWarn,
8
- parseGPTSingleSizeArrayToRtbSize,
9
- mergeDeep
10
- } from '../src/utils.js';
11
- import { registerBidder } from '../src/adapters/bidderFactory.js';
12
- import { Renderer } from '../src/Renderer.js';
13
- import { VIDEO } from '../src/mediaTypes.js';
14
- import { config } from '../src/config.js';
15
-
16
- const BIDDER_CODE = 'gridNM';
17
- const ENDPOINT_URL = 'https://grid.bidswitch.net/hbjson';
18
- const SYNC_URL = 'https://x.bidswitch.net/sync?ssp=themediagrid';
19
- const TIME_TO_LIVE = 360;
20
- const RENDERER_URL = 'https://acdn.adnxs.com/video/outstream/ANOutstreamVideo.js';
21
-
22
- let hasSynced = false;
23
-
24
- const LOG_ERROR_MESS = {
25
- noAdm: 'Bid from response has no adm parameter - ',
26
- noPrice: 'Bid from response has no price parameter - ',
27
- wrongContentType: 'Bid from response has wrong content_type parameter - ',
28
- noBid: 'Array of bid objects is empty',
29
- noPlacementCode: 'Can\'t find in requested bids the bid with auid - ',
30
- emptyUids: 'Uids should be not empty',
31
- emptySeatbid: 'Seatbid array from response has empty item',
32
- emptyResponse: 'Response is empty',
33
- hasEmptySeatbidArray: 'Response has empty seatbid array',
34
- hasNoArrayOfBids: 'Seatbid from response has no array of bid objects - '
35
- };
36
-
37
- export const spec = {
38
- code: BIDDER_CODE,
39
- supportedMediaTypes: [ VIDEO ],
40
- /**
41
- * Determines whether or not the given bid request is valid.
42
- *
43
- * @param {BidRequest} bid The bid params to validate.
44
- * @return boolean True if this is a valid bid, and false otherwise.
45
- */
46
- isBidRequestValid: function(bid) {
47
- let invalid =
48
- !bid.params.source || !isStr(bid.params.source) ||
49
- !bid.params.secid || !isStr(bid.params.secid) ||
50
- !bid.params.pubid || !isStr(bid.params.pubid);
51
-
52
- const video = deepAccess(bid, 'mediaTypes.video') || {};
53
- const { protocols = video.protocols, mimes = video.mimes } = deepAccess(bid, 'params.video') || {};
54
- if (!invalid) {
55
- invalid = !protocols || !mimes;
56
- }
57
- if (!invalid) {
58
- invalid = !isArray(mimes) || !mimes.length || mimes.filter((it) => !(it && isStr(it))).length;
59
- if (!invalid) {
60
- invalid = !isArray(protocols) || !protocols.length || protocols.filter((it) => !(isNumber(it) && it > 0 && !(it % 1))).length;
61
- }
62
- }
63
- return !invalid;
64
- },
65
- /**
66
- * Make a server request from the list of BidRequests.
67
- *
68
- * @param {BidRequest[]} validBidRequests - an array of bids
69
- * @param {bidderRequest} bidderRequest bidder request object
70
- * @return ServerRequest Info describing the request to the server.
71
- */
72
- buildRequests: function(validBidRequests, bidderRequest) {
73
- const bids = validBidRequests || [];
74
- const requests = [];
75
- let { bidderRequestId, auctionId, gdprConsent, uspConsent, timeout, refererInfo } = bidderRequest || {};
76
-
77
- const referer = refererInfo ? encodeURIComponent(refererInfo.page) : '';
78
-
79
- bids.forEach(bid => {
80
- let user;
81
- let userExt;
82
-
83
- const schain = bid.schain;
84
- const userIdAsEids = bid.userIdAsEids;
85
-
86
- if (!bidderRequestId) {
87
- bidderRequestId = bid.bidderRequestId;
88
- }
89
- if (!auctionId) {
90
- auctionId = bid.auctionId;
91
- }
92
- const {
93
- params: { floorcpm, source, secid, pubid, content, video },
94
- mediaTypes, bidId, adUnitCode, rtd, ortb2Imp, sizes
95
- } = bid;
96
-
97
- const bidFloor = _getFloor(mediaTypes || {}, bid, isNumber(floorcpm) && floorcpm);
98
- const jwTargeting = rtd && rtd.jwplayer && rtd.jwplayer.targeting;
99
-
100
- const siteContent = content || (jwTargeting && jwTargeting.content);
101
-
102
- const impObj = {
103
- id: bidId.toString(),
104
- tagid: secid.toString(),
105
- video: createVideoForImp(mergeDeep({}, video, mediaTypes && mediaTypes.video), sizes),
106
- ext: {
107
- divid: adUnitCode.toString()
108
- }
109
- };
110
-
111
- if (ortb2Imp && ortb2Imp.ext && ortb2Imp.ext.data) {
112
- impObj.ext.data = ortb2Imp.ext.data;
113
- if (impObj.ext.data.adserver && impObj.ext.data.adserver.adslot) {
114
- impObj.ext.gpid = impObj.ext.data.adserver.adslot.toString();
115
- } else {
116
- impObj.ext.gpid = ortb2Imp.ext.data.pbadslot && ortb2Imp.ext.data.pbadslot.toString();
117
- }
118
- }
119
-
120
- if (bidFloor) {
121
- impObj.bidfloor = bidFloor;
122
- }
123
-
124
- const imp = [impObj];
125
-
126
- const reqSource = {
127
- tid: auctionId && auctionId.toString(),
128
- ext: {
129
- wrapper: 'Prebid_js',
130
- wrapper_version: '$prebid.version$'
131
- }
132
- };
133
-
134
- if (schain) {
135
- reqSource.ext.schain = schain;
136
- }
137
-
138
- const bidderTimeout = config.getConfig('bidderTimeout') || timeout;
139
- const tmax = timeout ? Math.min(bidderTimeout, timeout) : bidderTimeout;
140
-
141
- const request = {
142
- id: bidderRequestId && bidderRequestId.toString(),
143
- site: {
144
- page: referer,
145
- publisher: {
146
- id: pubid,
147
- },
148
- },
149
- source: reqSource,
150
- tmax,
151
- imp,
152
- };
153
-
154
- if (siteContent) {
155
- request.site.content = siteContent;
156
- }
157
-
158
- if (gdprConsent && gdprConsent.consentString) {
159
- userExt = { consent: gdprConsent.consentString };
160
- }
161
-
162
- if (userIdAsEids && userIdAsEids.length) {
163
- userExt = userExt || {};
164
- userExt.eids = [...userIdAsEids];
165
- }
166
-
167
- if (userExt && Object.keys(userExt).length) {
168
- user = user || {};
169
- user.ext = userExt;
170
- }
171
-
172
- const ortb2UserData = deepAccess(bidderRequest, 'ortb2.user.data');
173
- if (ortb2UserData && ortb2UserData.length) {
174
- if (!user) {
175
- user = { data: [] };
176
- }
177
- user = mergeDeep(user, {
178
- data: [...ortb2UserData]
179
- });
180
- }
181
-
182
- if (user) {
183
- request.user = user;
184
- }
185
- const site = deepAccess(bidderRequest, 'ortb2.site');
186
- if (site) {
187
- const data = deepAccess(site, 'content.data');
188
- if (data && data.length) {
189
- const siteContent = request.site.content || {};
190
- request.site.content = mergeDeep(siteContent, { data });
191
- }
192
- }
193
-
194
- if (gdprConsent && gdprConsent.gdprApplies) {
195
- request.regs = {
196
- ext: {
197
- gdpr: gdprConsent.gdprApplies ? 1 : 0
198
- }
199
- };
200
- }
201
-
202
- if (uspConsent) {
203
- if (!request.regs) {
204
- request.regs = { ext: {} };
205
- }
206
- request.regs.ext.us_privacy = uspConsent;
207
- }
208
-
209
- if (config.getConfig('coppa') === true) {
210
- if (!request.regs) {
211
- request.regs = {};
212
- }
213
- request.regs.coppa = 1;
214
- }
215
-
216
- requests.push({
217
- method: 'POST',
218
- url: ENDPOINT_URL + '?no_mapping=1&sp=' + source,
219
- bid: bid,
220
- data: request
221
- });
222
- });
223
-
224
- return requests;
225
- },
226
- /**
227
- * Unpack the response from the server into a list of bids.
228
- *
229
- * @param {*} serverResponse A successful response from the server.
230
- * @param {*} bidRequest
231
- * @return {Bid[]} An array of bids which were nested inside the server.
232
- */
233
- interpretResponse: function(serverResponse, bidRequest) {
234
- serverResponse = serverResponse && serverResponse.body;
235
- const bidResponses = [];
236
-
237
- let errorMessage;
238
-
239
- if (!serverResponse) errorMessage = LOG_ERROR_MESS.emptyResponse;
240
- else if (serverResponse.seatbid && !serverResponse.seatbid.length) {
241
- errorMessage = LOG_ERROR_MESS.hasEmptySeatbidArray;
242
- }
243
-
244
- if (!errorMessage && serverResponse.seatbid) {
245
- const serverBid = _getBidFromResponse(serverResponse.seatbid[0]);
246
- if (serverBid) {
247
- if (!serverBid.adm && !serverBid.nurl) errorMessage = LOG_ERROR_MESS.noAdm + JSON.stringify(serverBid);
248
- else if (!serverBid.price) errorMessage = LOG_ERROR_MESS.noPrice + JSON.stringify(serverBid);
249
- else if (serverBid.content_type !== 'video') errorMessage = LOG_ERROR_MESS.wrongContentType + serverBid.content_type;
250
- if (!errorMessage) {
251
- const bid = bidRequest.bid;
252
- const bidResponse = {
253
- requestId: bid.bidId,
254
- cpm: serverBid.price,
255
- width: serverBid.w,
256
- height: serverBid.h,
257
- creativeId: serverBid.auid || bid.bidderRequestId,
258
- currency: 'USD',
259
- netRevenue: true,
260
- ttl: TIME_TO_LIVE,
261
- dealId: serverBid.dealid,
262
- mediaType: VIDEO,
263
- meta: {
264
- advertiserDomains: serverBid.adomain ? serverBid.adomain : []
265
- }
266
- };
267
-
268
- if (serverBid.adm) {
269
- bidResponse.vastXml = serverBid.adm;
270
- bidResponse.adResponse = {
271
- content: bidResponse.vastXml
272
- };
273
- } else if (serverBid.nurl) {
274
- bidResponse.vastUrl = serverBid.nurl;
275
- }
276
-
277
- if (!bid.renderer && (!bid.mediaTypes || !bid.mediaTypes.video || bid.mediaTypes.video.context === 'outstream')) {
278
- bidResponse.renderer = createRenderer(bidResponse, {
279
- id: bid.bidId,
280
- url: RENDERER_URL
281
- });
282
- }
283
- bidResponses.push(bidResponse);
284
- }
285
- }
286
- }
287
- if (errorMessage) logError(errorMessage);
288
- return bidResponses;
289
- },
290
- getUserSyncs: function (syncOptions, responses, gdprConsent, uspConsent) {
291
- if (!hasSynced && syncOptions.pixelEnabled) {
292
- let params = '';
293
-
294
- if (gdprConsent && typeof gdprConsent.consentString === 'string') {
295
- if (typeof gdprConsent.gdprApplies === 'boolean') {
296
- params += `&gdpr=${Number(gdprConsent.gdprApplies)}&gdpr_consent=${gdprConsent.consentString}`;
297
- } else {
298
- params += `&gdpr_consent=${gdprConsent.consentString}`;
299
- }
300
- }
301
- if (uspConsent) {
302
- params += `&us_privacy=${uspConsent}`;
303
- }
304
-
305
- hasSynced = true;
306
- return {
307
- type: 'image',
308
- url: SYNC_URL + params
309
- };
310
- }
311
- }
312
- };
313
-
314
- /**
315
- * Gets bidfloor
316
- * @param {Object} mediaTypes
317
- * @param {Object} bid
318
- * @param {Number} floor
319
- * @returns {Number} floor
320
- */
321
- function _getFloor (mediaTypes, bid, floor) {
322
- const curMediaType = mediaTypes.video ? 'video' : 'banner';
323
-
324
- if (typeof bid.getFloor === 'function') {
325
- const floorInfo = bid.getFloor({
326
- currency: 'USD',
327
- mediaType: curMediaType,
328
- size: bid.sizes.map(([w, h]) => ({w, h}))
329
- });
330
-
331
- if (typeof floorInfo === 'object' &&
332
- floorInfo.currency === 'USD' &&
333
- !isNaN(parseFloat(floorInfo.floor))) {
334
- floor = Math.max(floor, parseFloat(floorInfo.floor));
335
- }
336
- }
337
-
338
- return floor;
339
- }
340
-
341
- function _getBidFromResponse(respItem) {
342
- if (!respItem) {
343
- logError(LOG_ERROR_MESS.emptySeatbid);
344
- } else if (!respItem.bid) {
345
- logError(LOG_ERROR_MESS.hasNoArrayOfBids + JSON.stringify(respItem));
346
- } else if (!respItem.bid[0]) {
347
- logError(LOG_ERROR_MESS.noBid);
348
- }
349
- return respItem && respItem.bid && respItem.bid[0];
350
- }
351
-
352
- function outstreamRender (bid) {
353
- bid.renderer.push(() => {
354
- window.ANOutstreamVideo.renderAd({
355
- targetId: bid.adUnitCode,
356
- adResponse: bid.adResponse
357
- });
358
- });
359
- }
360
-
361
- function createRenderer (bid, rendererParams) {
362
- const renderer = Renderer.install({
363
- id: rendererParams.id,
364
- url: rendererParams.url,
365
- loaded: false
366
- });
367
-
368
- try {
369
- renderer.setRender(outstreamRender);
370
- } catch (err) {
371
- logWarn('Prebid Error calling setRender on renderer', err);
372
- }
373
-
374
- return renderer;
375
- }
376
-
377
- function createVideoForImp({ mind, maxd, size, ...paramsVideo }, bidSizes) {
378
- if (size && isStr(size)) {
379
- const sizeArray = size.split('x');
380
- if (sizeArray.length === 2 && parseInt(sizeArray[0]) && parseInt(sizeArray[1])) {
381
- paramsVideo.w = parseInt(sizeArray[0]);
382
- paramsVideo.h = parseInt(sizeArray[1]);
383
- }
384
- }
385
-
386
- if (!paramsVideo.w || !paramsVideo.h) {
387
- const playerSizes = paramsVideo.playerSize && paramsVideo.playerSize.length === 2 ? paramsVideo.playerSize : bidSizes;
388
- if (playerSizes) {
389
- const playerSize = playerSizes[0];
390
- if (playerSize) {
391
- Object.assign(paramsVideo, parseGPTSingleSizeArrayToRtbSize(playerSize));
392
- }
393
- }
394
- }
395
-
396
- if (paramsVideo.playerSize) {
397
- delete paramsVideo.playerSize;
398
- }
399
-
400
- const durationRangeSec = paramsVideo.durationRangeSec || [];
401
- const minDur = mind || durationRangeSec[0] || paramsVideo.minduration;
402
- const maxDur = maxd || durationRangeSec[1] || paramsVideo.maxduration;
403
-
404
- if (minDur) {
405
- paramsVideo.minduration = minDur;
406
- }
407
- if (maxDur) {
408
- paramsVideo.maxduration = maxDur;
409
- }
410
-
411
- return paramsVideo;
412
- }
413
-
414
- export function resetUserSync() {
415
- hasSynced = false;
416
- }
417
-
418
- export function getSyncUrl() {
419
- return SYNC_URL;
420
- }
421
-
422
- registerBidder(spec);
@@ -1,39 +0,0 @@
1
- # Overview
2
-
3
- Module Name: The Grid Media Bidder Adapter
4
- Module Type: Bidder Adapter
5
- Maintainer: grid-tech@themediagrid.com
6
-
7
- # Description
8
-
9
- Module that connects to Grid demand source to fetch bids.
10
- Grid bid adapter supports Banner and Video (instream and outstream).
11
-
12
- # Test Parameters
13
- ```
14
- var adUnits = [
15
- {
16
- code: 'test-div',
17
- mediaTypes: {
18
- video: {
19
- playerSize: [728, 90],
20
- context: 'outstream'
21
- }
22
- },
23
- bids: [
24
- {
25
- bidder: "gridNM",
26
- params: {
27
- source: 'jwp',
28
- secid: '11',
29
- pubid: '22',
30
- video: {
31
- mimes: ['video/mp4', 'video/x-ms-wmv'],
32
- protocols: [1,2,3,4,5,6]
33
- }
34
- }
35
- }
36
- ]
37
- }
38
- ];
39
- ```