prebid.js 9.1.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 (290) hide show
  1. package/browsers.json +3 -3
  2. package/dist/33acrossAnalyticsAdapter.js +1 -1
  3. package/dist/33acrossBidAdapter.js +1 -1
  4. package/dist/33acrossIdSystem.js +1 -1
  5. package/dist/BTBidAdapter.js +1 -1
  6. package/dist/acuityadsBidAdapter.js +1 -1
  7. package/dist/adagioAnalyticsAdapter.js +1 -1
  8. package/dist/adagioBidAdapter.js +1 -1
  9. package/dist/adagioRtdProvider.js +1 -1
  10. package/dist/adagioUtils.js +1 -0
  11. package/dist/adgenerationBidAdapter.js +1 -1
  12. package/dist/admanBidAdapter.js +1 -1
  13. package/dist/adpod.js +1 -1
  14. package/dist/adprimeBidAdapter.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/adxcgBidAdapter.js +1 -1
  20. package/dist/adyoulikeBidAdapter.js +1 -1
  21. package/dist/agmaAnalyticsAdapter.js +1 -1
  22. package/dist/ajaBidAdapter.js +1 -1
  23. package/dist/amxBidAdapter.js +1 -1
  24. package/dist/amxIdSystem.js +1 -1
  25. package/dist/appierAnalyticsAdapter.js +1 -1
  26. package/dist/appnexusBidAdapter.js +1 -1
  27. package/dist/appnexusUtils.js +1 -1
  28. package/dist/asoBidAdapter.js +1 -1
  29. package/dist/autoplayDetection.js +1 -1
  30. package/dist/axisBidAdapter.js +1 -1
  31. package/dist/axonixBidAdapter.js +1 -1
  32. package/dist/beyondmediaBidAdapter.js +1 -1
  33. package/dist/bidglassBidAdapter.js +1 -1
  34. package/dist/big-richmediaBidAdapter.js +1 -1
  35. package/dist/bliinkBidAdapter.js +1 -1
  36. package/dist/boldwinBidAdapter.js +1 -1
  37. package/dist/bridBidAdapter.js +1 -1
  38. package/dist/bridgewellBidAdapter.js +1 -1
  39. package/dist/brightMountainMediaBidAdapter.js +1 -1
  40. package/dist/carodaBidAdapter.js +1 -1
  41. package/dist/chtnwBidAdapter.js +1 -1
  42. package/dist/chunk-core.js +1 -1
  43. package/dist/compassBidAdapter.js +1 -1
  44. package/dist/concertBidAdapter.js +1 -1
  45. package/dist/connectadBidAdapter.js +1 -1
  46. package/dist/consumableBidAdapter.js +1 -1
  47. package/dist/contentexchangeBidAdapter.js +1 -1
  48. package/dist/conversantAnalyticsAdapter.js +1 -1
  49. package/dist/conversantBidAdapter.js +1 -1
  50. package/dist/craftBidAdapter.js +1 -1
  51. package/dist/criteoBidAdapter.js +1 -1
  52. package/dist/cwireBidAdapter.js +1 -1
  53. package/dist/dailymotionBidAdapter.js +1 -1
  54. package/dist/dependencies.json +78 -2
  55. package/dist/dspxBidAdapter.js +1 -1
  56. package/dist/dxkultureBidAdapter.js +1 -1
  57. package/dist/e_volutionBidAdapter.js +1 -1
  58. package/dist/emtvBidAdapter.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/euidIdSystem.js +1 -1
  61. package/dist/exadsBidAdapter.js +1 -1
  62. package/dist/feedadBidAdapter.js +1 -1
  63. package/dist/finativeBidAdapter.js +1 -1
  64. package/dist/freewheel-sspBidAdapter.js +1 -1
  65. package/dist/globalsunBidAdapter.js +1 -1
  66. package/dist/gmosspBidAdapter.js +1 -1
  67. package/dist/goldbachBidAdapter.js +1 -1
  68. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  69. package/dist/greenbidsRtdProvider.js +1 -1
  70. package/dist/gridBidAdapter.js +1 -1
  71. package/dist/gumgumBidAdapter.js +1 -1
  72. package/dist/h12mediaBidAdapter.js +1 -1
  73. package/dist/hypelabBidAdapter.js +1 -1
  74. package/dist/id5IdSystem.js +1 -1
  75. package/dist/illuminBidAdapter.js +1 -1
  76. package/dist/imdsBidAdapter.js +1 -1
  77. package/dist/improvedigitalBidAdapter.js +1 -1
  78. package/dist/insticatorBidAdapter.js +1 -1
  79. package/dist/iqzoneBidAdapter.js +1 -1
  80. package/dist/ixBidAdapter.js +1 -1
  81. package/dist/jixieBidAdapter.js +1 -1
  82. package/dist/justpremiumBidAdapter.js +1 -1
  83. package/dist/kargoBidAdapter.js +1 -1
  84. package/dist/kimberliteBidAdapter.js +1 -1
  85. package/dist/kiviadsBidAdapter.js +1 -1
  86. package/dist/konduitAnalyticsAdapter.js +1 -1
  87. package/dist/krushmediaBidAdapter.js +1 -1
  88. package/dist/kueezBidAdapter.js +1 -1
  89. package/dist/kueezRtbBidAdapter.js +1 -1
  90. package/dist/lassoBidAdapter.js +1 -1
  91. package/dist/lifestreetBidAdapter.js +1 -1
  92. package/dist/liveIntentIdSystem.js +1 -1
  93. package/dist/logicadBidAdapter.js +1 -1
  94. package/dist/loglyliftBidAdapter.js +1 -1
  95. package/dist/loyalBidAdapter.js +1 -1
  96. package/dist/luceadBidAdapter.js +1 -1
  97. package/dist/lunamediahbBidAdapter.js +1 -1
  98. package/dist/magniteAnalyticsAdapter.js +1 -1
  99. package/dist/malltvAnalyticsAdapter.js +1 -1
  100. package/dist/marsmediaBidAdapter.js +1 -1
  101. package/dist/mathildeadsBidAdapter.js +1 -1
  102. package/dist/mediafuseBidAdapter.js +1 -1
  103. package/dist/mediasquareBidAdapter.js +1 -1
  104. package/dist/mgidBidAdapter.js +1 -1
  105. package/dist/mgidXBidAdapter.js +1 -1
  106. package/dist/minutemediaBidAdapter.js +1 -1
  107. package/dist/missenaBidAdapter.js +1 -1
  108. package/dist/mobfoxpbBidAdapter.js +1 -1
  109. package/dist/mobianRtdProvider.js +1 -1
  110. package/dist/nexx360BidAdapter.js +1 -1
  111. package/dist/nobidAnalyticsAdapter.js +1 -1
  112. package/dist/nobidBidAdapter.js +1 -1
  113. package/dist/not-for-prod/prebid.js +187 -185
  114. package/dist/oguryBidAdapter.js +1 -1
  115. package/dist/onetagBidAdapter.js +1 -1
  116. package/dist/ooloAnalyticsAdapter.js +1 -1
  117. package/dist/openwebBidAdapter.js +1 -1
  118. package/dist/openxBidAdapter.js +1 -1
  119. package/dist/optidigitalBidAdapter.js +1 -1
  120. package/dist/ortbConverter.js +1 -1
  121. package/dist/outbrainBidAdapter.js +1 -1
  122. package/dist/ozoneBidAdapter.js +1 -1
  123. package/dist/paapi.js +1 -1
  124. package/dist/pgamsspBidAdapter.js +1 -1
  125. package/dist/pixfutureBidAdapter.js +1 -1
  126. package/dist/playdigoBidAdapter.js +1 -1
  127. package/dist/prebidServerBidAdapter.js +1 -1
  128. package/dist/pubCircleBidAdapter.js +1 -1
  129. package/dist/publinkIdSystem.js +1 -1
  130. package/dist/publirBidAdapter.js +1 -1
  131. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  132. package/dist/pubmaticBidAdapter.js +1 -1
  133. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  134. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  135. package/dist/pxyzBidAdapter.js +1 -1
  136. package/dist/qtBidAdapter.js +1 -1
  137. package/dist/quantcastBidAdapter.js +1 -1
  138. package/dist/raynRtdProvider.js +1 -1
  139. package/dist/readpeakBidAdapter.js +1 -1
  140. package/dist/relaidoBidAdapter.js +1 -1
  141. package/dist/retailspotBidAdapter.js +1 -1
  142. package/dist/rhythmoneBidAdapter.js +1 -1
  143. package/dist/riseBidAdapter.js +1 -1
  144. package/dist/rubiconBidAdapter.js +1 -1
  145. package/dist/seedingAllianceBidAdapter.js +1 -1
  146. package/dist/seedtagBidAdapter.js +1 -1
  147. package/dist/setupadBidAdapter.js +1 -1
  148. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  149. package/dist/sharethroughBidAdapter.js +1 -1
  150. package/dist/shinezBidAdapter.js +1 -1
  151. package/dist/shinezRtbBidAdapter.js +1 -1
  152. package/dist/smaatoBidAdapter.js +1 -1
  153. package/dist/smartadserverBidAdapter.js +1 -1
  154. package/dist/smartxBidAdapter.js +1 -1
  155. package/dist/smartytechBidAdapter.js +1 -1
  156. package/dist/smilewantedBidAdapter.js +1 -1
  157. package/dist/sonobiBidAdapter.js +1 -1
  158. package/dist/sovrnBidAdapter.js +1 -1
  159. package/dist/sspBCBidAdapter.js +1 -1
  160. package/dist/stnBidAdapter.js +1 -1
  161. package/dist/stvBidAdapter.js +1 -1
  162. package/dist/sublimeBidAdapter.js +1 -1
  163. package/dist/taboolaBidAdapter.js +1 -1
  164. package/dist/tagorasBidAdapter.js +1 -1
  165. package/dist/targetVideoBidAdapter.js +1 -1
  166. package/dist/teadsBidAdapter.js +1 -1
  167. package/dist/teqblazeUtils.js +1 -0
  168. package/dist/themoneytizerBidAdapter.js +1 -1
  169. package/dist/topicsFpdModule.js +1 -1
  170. package/dist/trionBidAdapter.js +1 -1
  171. package/dist/tripleliftBidAdapter.js +1 -1
  172. package/dist/ttdBidAdapter.js +1 -1
  173. package/dist/twistDigitalBidAdapter.js +1 -1
  174. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  175. package/dist/uid2IdSystem.js +1 -1
  176. package/dist/underdogmediaBidAdapter.js +1 -1
  177. package/dist/undertoneBidAdapter.js +1 -1
  178. package/dist/unrulyBidAdapter.js +1 -1
  179. package/dist/vidazooBidAdapter.js +1 -1
  180. package/dist/videobyteBidAdapter.js +1 -1
  181. package/dist/visiblemeasuresBidAdapter.js +1 -1
  182. package/dist/visxBidAdapter.js +1 -1
  183. package/dist/vuukleBidAdapter.js +1 -1
  184. package/dist/widespaceBidAdapter.js +1 -1
  185. package/dist/winrBidAdapter.js +1 -1
  186. package/dist/yahooAdsBidAdapter.js +1 -1
  187. package/dist/yieldmoBidAdapter.js +1 -1
  188. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  189. package/integrationExamples/gpt/raynRtdProvider_example.html +1 -0
  190. package/libraries/adagioUtils/adagioUtils.js +35 -0
  191. package/libraries/appnexusUtils/anUtils.js +1 -0
  192. package/libraries/autoplayDetection/autoplay.js +8 -1
  193. package/libraries/ortbConverter/converter.js +1 -1
  194. package/libraries/teqblazeUtils/bidderUtils.js +253 -0
  195. package/modules/.submodules.json +1 -0
  196. package/modules/acuityadsBidAdapter.js +5 -203
  197. package/modules/adagioBidAdapter.js +1 -17
  198. package/modules/adagioRtdProvider.js +41 -51
  199. package/modules/adagioRtdProvider.md +1 -0
  200. package/modules/admanBidAdapter.js +31 -188
  201. package/modules/adprimeBidAdapter.js +28 -165
  202. package/modules/axisBidAdapter.js +33 -165
  203. package/modules/beyondmediaBidAdapter.js +5 -189
  204. package/modules/bliinkBidAdapter.js +3 -31
  205. package/modules/boldwinBidAdapter.js +21 -159
  206. package/modules/ceeIdSystem.js +1 -1
  207. package/modules/compassBidAdapter.js +5 -198
  208. package/modules/contentexchangeBidAdapter.js +5 -200
  209. package/modules/conversantBidAdapter.js +1 -0
  210. package/modules/e_volutionBidAdapter.js +4 -186
  211. package/modules/emtvBidAdapter.js +5 -198
  212. package/modules/globalsunBidAdapter.js +5 -199
  213. package/modules/id5IdSystem.js +31 -2
  214. package/modules/id5IdSystem.md +67 -2
  215. package/modules/iqzoneBidAdapter.js +5 -224
  216. package/modules/kiviadsBidAdapter.js +5 -199
  217. package/modules/krushmediaBidAdapter.js +25 -143
  218. package/modules/loyalBidAdapter.js +4 -178
  219. package/modules/lunamediahbBidAdapter.js +5 -118
  220. package/modules/mathildeadsBidAdapter.js +5 -198
  221. package/modules/mgidXBidAdapter.js +14 -207
  222. package/modules/mobfoxpbBidAdapter.js +4 -135
  223. package/modules/mobianRtdProvider.js +2 -2
  224. package/modules/nobidAnalyticsAdapter.js +2 -3
  225. package/modules/ozoneBidAdapter.js +117 -58
  226. package/modules/paapi.js +2 -1
  227. package/modules/pgamsspBidAdapter.js +5 -240
  228. package/modules/playdigoBidAdapter.js +4 -186
  229. package/modules/prebidServerBidAdapter/index.js +9 -2
  230. package/modules/pubCircleBidAdapter.js +5 -218
  231. package/modules/pubmaticAnalyticsAdapter.js +21 -8
  232. package/modules/pubxaiAnalyticsAdapter.js +1 -5
  233. package/modules/qtBidAdapter.js +5 -224
  234. package/modules/raynRtdProvider.js +36 -3
  235. package/modules/seedtagBidAdapter.js +1 -0
  236. package/modules/setupadBidAdapter.js +58 -140
  237. package/modules/smartytechBidAdapter.js +7 -2
  238. package/modules/topicsFpdModule.js +1 -1
  239. package/modules/uid2IdSystem.js +0 -1
  240. package/modules/uid2IdSystem_shared.js +0 -1
  241. package/modules/visiblemeasuresBidAdapter.js +5 -199
  242. package/package.json +1 -1
  243. package/src/auction.js +5 -63
  244. package/src/utils/focusTimeout.js +41 -0
  245. package/src/utils/ttlCollection.js +2 -1
  246. package/src/utils.js +42 -0
  247. package/src/videoCache.js +72 -0
  248. package/test/mocks/videoCacheStub.js +1 -1
  249. package/test/spec/auctionmanager_spec.js +16 -1
  250. package/test/spec/libraries/teqblazeUtils/bidderUtils_spec.js +519 -0
  251. package/test/spec/modules/acuityadsBidAdapter_spec.js +79 -43
  252. package/test/spec/modules/adagioRtdProvider_spec.js +62 -1
  253. package/test/spec/modules/admanBidAdapter_spec.js +370 -247
  254. package/test/spec/modules/adprimeBidAdapter_spec.js +225 -78
  255. package/test/spec/modules/axisBidAdapter_spec.js +78 -14
  256. package/test/spec/modules/beyondmediaBidAdapter_spec.js +80 -18
  257. package/test/spec/modules/bliinkBidAdapter_spec.js +8 -2
  258. package/test/spec/modules/boldwinBidAdapter_spec.js +221 -75
  259. package/test/spec/modules/compassBidAdapter_spec.js +130 -16
  260. package/test/spec/modules/contentexchangeBidAdapter_spec.js +134 -21
  261. package/test/spec/modules/conversantBidAdapter_spec.js +7 -0
  262. package/test/spec/modules/e_volutionBidAdapter_spec.js +65 -3
  263. package/test/spec/modules/emtvBidAdapter_spec.js +131 -16
  264. package/test/spec/modules/globalsunBidAdapter_spec.js +130 -16
  265. package/test/spec/modules/id5IdSystem_spec.js +79 -3
  266. package/test/spec/modules/iqzoneBidAdapter_spec.js +66 -12
  267. package/test/spec/modules/kiviadsBidAdapter_spec.js +131 -20
  268. package/test/spec/modules/krushmediaBidAdapter_spec.js +272 -90
  269. package/test/spec/modules/loyalBidAdapter_spec.js +114 -14
  270. package/test/spec/modules/lunamediahbBidAdapter_spec.js +221 -87
  271. package/test/spec/modules/mathildeadsBidAdapter_spec.js +87 -18
  272. package/test/spec/modules/mgidXBidAdapter_spec.js +11 -3
  273. package/test/spec/modules/mobfoxpbBidAdapter_spec.js +229 -91
  274. package/test/spec/modules/ozoneBidAdapter_spec.js +192 -22
  275. package/test/spec/modules/paapi_spec.js +5 -5
  276. package/test/spec/modules/pgamsspBidAdapter_spec.js +83 -16
  277. package/test/spec/modules/playdigoBidAdapter_spec.js +38 -9
  278. package/test/spec/modules/prebidServerBidAdapter_spec.js +14 -0
  279. package/test/spec/modules/pubCircleBidAdapter_spec.js +82 -17
  280. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +52 -5
  281. package/test/spec/modules/qtBidAdapter_spec.js +15 -3
  282. package/test/spec/modules/raynRtdProvider_spec.js +25 -0
  283. package/test/spec/modules/seedtagBidAdapter_spec.js +2 -0
  284. package/test/spec/modules/setupadBidAdapter_spec.js +124 -97
  285. package/test/spec/modules/smartytechBidAdapter_spec.js +5 -1
  286. package/test/spec/modules/topicsFpdModule_spec.js +43 -59
  287. package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +130 -16
  288. package/test/spec/ortbConverter/converter_spec.js +7 -3
  289. package/test/spec/unit/utils/focusTimeout_spec.js +60 -0
  290. package/test/spec/videoCache_spec.js +56 -53
@@ -1,17 +1,9 @@
1
- import {
2
- deepAccess,
3
- logMessage,
4
- isPlainObject,
5
- isNumber,
6
- isArray,
7
- isStr
8
- } from '../src/utils.js';
9
- import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
10
-
1
+ import { isPlainObject, isNumber, isArray, isStr } from '../src/utils.js';
11
2
  import { registerBidder } from '../src/adapters/bidderFactory.js';
12
3
  import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
13
4
  import { config } from '../src/config.js';
14
5
  import { USERSYNC_DEFAULT_CONFIG } from '../src/userSync.js';
6
+ import { isBidRequestValid, buildRequestsBase, interpretResponse } from '../libraries/teqblazeUtils/bidderUtils.js';
15
7
 
16
8
  const BIDDER_CODE = 'mgidX';
17
9
  const GVLID = 358;
@@ -19,212 +11,27 @@ const AD_URL = 'https://#{REGION}#.mgid.com/pbjs';
19
11
  const PIXEL_SYNC_URL = 'https://cm.mgid.com/i.gif';
20
12
  const IFRAME_SYNC_URL = 'https://cm.mgid.com/i.html';
21
13
 
22
- function isBidResponseValid(bid) {
23
- if (!bid.requestId || !bid.cpm || !bid.creativeId || !bid.ttl || !bid.currency) {
24
- return false;
25
- }
26
-
27
- switch (bid.mediaType) {
28
- case BANNER:
29
- return Boolean(bid.width && bid.height && bid.ad);
30
- case VIDEO:
31
- return Boolean(bid.vastUrl || bid.vastXml);
32
- case NATIVE:
33
- return Boolean(bid.native && bid.native.impressionTrackers && bid.native.impressionTrackers.length);
34
- default:
35
- return false;
36
- }
37
- }
38
-
39
- function getPlacementReqData(bid) {
40
- const { params, bidId, mediaTypes, transactionId, userIdAsEids } = bid;
41
- const schain = bid.schain || {};
42
- const { placementId, endpointId } = params;
43
- const bidfloor = getBidFloor(bid);
44
-
45
- const placement = {
46
- bidId,
47
- schain,
48
- bidfloor
49
- };
50
-
51
- if (placementId) {
52
- placement.placementId = placementId;
53
- placement.type = 'publisher';
54
- } else if (endpointId) {
55
- placement.endpointId = endpointId;
56
- placement.type = 'network';
57
- }
58
-
59
- if (mediaTypes && mediaTypes[BANNER]) {
60
- placement.adFormat = BANNER;
61
- placement.sizes = mediaTypes[BANNER].sizes;
62
- } else if (mediaTypes && mediaTypes[VIDEO]) {
63
- placement.adFormat = VIDEO;
64
- placement.playerSize = mediaTypes[VIDEO].playerSize;
65
- placement.minduration = mediaTypes[VIDEO].minduration;
66
- placement.maxduration = mediaTypes[VIDEO].maxduration;
67
- placement.mimes = mediaTypes[VIDEO].mimes;
68
- placement.protocols = mediaTypes[VIDEO].protocols;
69
- placement.startdelay = mediaTypes[VIDEO].startdelay;
70
- placement.placement = mediaTypes[VIDEO].placement;
71
- placement.plcmt = mediaTypes[VIDEO].plcmt;
72
- placement.skip = mediaTypes[VIDEO].skip;
73
- placement.skipafter = mediaTypes[VIDEO].skipafter;
74
- placement.minbitrate = mediaTypes[VIDEO].minbitrate;
75
- placement.maxbitrate = mediaTypes[VIDEO].maxbitrate;
76
- placement.delivery = mediaTypes[VIDEO].delivery;
77
- placement.playbackmethod = mediaTypes[VIDEO].playbackmethod;
78
- placement.api = mediaTypes[VIDEO].api;
79
- placement.linearity = mediaTypes[VIDEO].linearity;
80
- } else if (mediaTypes && mediaTypes[NATIVE]) {
81
- placement.native = mediaTypes[NATIVE];
82
- placement.adFormat = NATIVE;
83
- }
84
-
85
- if (transactionId) {
86
- placement.ext = placement.ext || {};
87
- placement.ext.tid = transactionId;
88
- }
14
+ const buildRequests = (validBidRequests = [], bidderRequest = {}) => {
15
+ const request = buildRequestsBase({ adUrl: AD_URL, validBidRequests, bidderRequest });
16
+ const region = validBidRequests[0].params?.region;
89
17
 
90
- if (userIdAsEids && userIdAsEids.length) {
91
- placement.eids = userIdAsEids;
18
+ if (region === 'eu') {
19
+ request.url = AD_URL.replace('#{REGION}#', 'eu');
20
+ } else {
21
+ request.url = AD_URL.replace('#{REGION}#', 'us-east-x');
92
22
  }
93
23
 
94
- return placement;
95
- }
96
-
97
- function getBidFloor(bid) {
98
- try {
99
- const bidFloor = bid.getFloor({
100
- currency: 'USD',
101
- mediaType: '*',
102
- size: '*',
103
- });
104
- return bidFloor.floor;
105
- } catch (err) {
106
- return 0;
107
- }
108
- }
24
+ return request;
25
+ };
109
26
 
110
27
  export const spec = {
111
28
  code: BIDDER_CODE,
112
29
  gvlid: GVLID,
113
30
  supportedMediaTypes: [BANNER, VIDEO, NATIVE],
114
31
 
115
- isBidRequestValid: (bid = {}) => {
116
- const { params, bidId, mediaTypes } = bid;
117
- let valid = Boolean(bidId && params && (params.placementId || params.endpointId));
118
-
119
- if (mediaTypes && mediaTypes[BANNER]) {
120
- valid = valid && Boolean(mediaTypes[BANNER] && mediaTypes[BANNER].sizes);
121
- } else if (mediaTypes && mediaTypes[VIDEO]) {
122
- valid = valid && Boolean(mediaTypes[VIDEO] && mediaTypes[VIDEO].playerSize);
123
- } else if (mediaTypes && mediaTypes[NATIVE]) {
124
- valid = valid && Boolean(mediaTypes[NATIVE]);
125
- } else {
126
- valid = false;
127
- }
128
- return valid;
129
- },
130
-
131
- buildRequests: (validBidRequests = [], bidderRequest = {}) => {
132
- // convert Native ORTB definition to old-style prebid native definition
133
- validBidRequests = convertOrtbRequestToProprietaryNative(validBidRequests);
134
-
135
- let deviceWidth = 0;
136
- let deviceHeight = 0;
137
-
138
- let winLocation;
139
- try {
140
- const winTop = window.top;
141
- deviceWidth = winTop.screen.width;
142
- deviceHeight = winTop.screen.height;
143
- winLocation = winTop.location;
144
- } catch (e) {
145
- logMessage(e);
146
- winLocation = window.location;
147
- }
148
-
149
- const refferUrl = bidderRequest.refererInfo && bidderRequest.refererInfo.page;
150
- let refferLocation;
151
- try {
152
- refferLocation = refferUrl && new URL(refferUrl);
153
- } catch (e) {
154
- logMessage(e);
155
- }
156
-
157
- let location = refferLocation || winLocation;
158
- const language = (navigator && navigator.language) ? navigator.language.split('-')[0] : '';
159
- const host = location.host;
160
- const page = location.pathname;
161
- const secure = location.protocol === 'https:' ? 1 : 0;
162
- const placements = [];
163
- const request = {
164
- deviceWidth,
165
- deviceHeight,
166
- language,
167
- secure,
168
- host,
169
- page,
170
- placements,
171
- coppa: deepAccess(bidderRequest, 'ortb2.regs.coppa') ? 1 : 0,
172
- tmax: bidderRequest.timeout
173
- };
174
-
175
- if (bidderRequest.uspConsent) {
176
- request.ccpa = bidderRequest.uspConsent;
177
- }
178
-
179
- if (bidderRequest.gdprConsent) {
180
- request.gdpr = {
181
- consentString: bidderRequest.gdprConsent.consentString
182
- };
183
- }
184
-
185
- if (bidderRequest.gppConsent) {
186
- request.gpp = bidderRequest.gppConsent.gppString;
187
- request.gpp_sid = bidderRequest.gppConsent.applicableSections;
188
- } else if (bidderRequest.ortb2?.regs?.gpp) {
189
- request.gpp = bidderRequest.ortb2.regs.gpp;
190
- request.gpp_sid = bidderRequest.ortb2.regs.gpp_sid;
191
- }
192
-
193
- const len = validBidRequests.length;
194
- for (let i = 0; i < len; i++) {
195
- const bid = validBidRequests[i];
196
- placements.push(getPlacementReqData(bid));
197
- }
198
-
199
- const region = validBidRequests[0].params?.region;
200
-
201
- let url;
202
- if (region === 'eu') {
203
- url = AD_URL.replace('#{REGION}#', 'eu');
204
- } else {
205
- url = AD_URL.replace('#{REGION}#', 'us-east-x');
206
- }
207
-
208
- return {
209
- method: 'POST',
210
- url: url,
211
- data: request
212
- };
213
- },
214
-
215
- interpretResponse: (serverResponse) => {
216
- let response = [];
217
- for (let i = 0; i < serverResponse.body.length; i++) {
218
- let resItem = serverResponse.body[i];
219
- if (isBidResponseValid(resItem)) {
220
- const advertiserDomains = resItem.adomain && resItem.adomain.length ? resItem.adomain : [];
221
- resItem.meta = { ...resItem.meta, advertiserDomains };
222
-
223
- response.push(resItem);
224
- }
225
- }
226
- return response;
227
- },
32
+ isBidRequestValid: isBidRequestValid(),
33
+ buildRequests,
34
+ interpretResponse,
228
35
 
229
36
  getUserSyncs: (syncOptions, serverResponses, gdprConsent, uspConsent, gppConsent) => {
230
37
  const spb = isPlainObject(config.getConfig('userSync')) &&
@@ -1,148 +1,17 @@
1
- import { isFn, deepAccess, getWindowTop } 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 { convertOrtbRequestToProprietaryNative } from '../src/native.js';
3
+ import { isBidRequestValid, buildRequests, interpretResponse } from '../libraries/teqblazeUtils/bidderUtils.js';
5
4
 
6
5
  const BIDDER_CODE = 'mobfoxpb';
7
6
  const AD_URL = 'https://bes.mobfox.com/pbjs';
8
7
 
9
- function isBidResponseValid(bid) {
10
- if (!bid.requestId || !bid.cpm || !bid.creativeId ||
11
- !bid.ttl || !bid.currency) {
12
- return false;
13
- }
14
- switch (bid.mediaType) {
15
- case BANNER:
16
- return Boolean(bid.width && bid.height && bid.ad);
17
- case VIDEO:
18
- return Boolean(bid.vastUrl);
19
- case NATIVE:
20
- return Boolean(bid.native && bid.native.impressionTrackers);
21
- default:
22
- return false;
23
- }
24
- }
25
-
26
- function getBidFloor(bid) {
27
- if (!isFn(bid.getFloor)) {
28
- return deepAccess(bid, 'params.bidfloor', 0);
29
- }
30
-
31
- try {
32
- const bidFloor = bid.getFloor({
33
- currency: 'USD',
34
- mediaType: '*',
35
- size: '*',
36
- });
37
- return bidFloor.floor;
38
- } catch (_) {
39
- return 0
40
- }
41
- }
42
-
43
8
  export const spec = {
44
9
  code: BIDDER_CODE,
45
10
  supportedMediaTypes: [BANNER, VIDEO, NATIVE],
46
11
 
47
- isBidRequestValid: (bid) => {
48
- return Boolean(bid.bidId && bid.params && bid.params.placementId);
49
- },
50
-
51
- buildRequests: (validBidRequests = [], bidderRequest) => {
52
- // convert Native ORTB definition to old-style prebid native definition
53
- validBidRequests = convertOrtbRequestToProprietaryNative(validBidRequests);
54
- const winTop = getWindowTop();
55
- const location = winTop.location;
56
- const placements = [];
57
- const request = {
58
- 'deviceWidth': winTop.screen.width,
59
- 'deviceHeight': winTop.screen.height,
60
- 'language': (navigator && navigator.language) ? navigator.language.split('-')[0] : '',
61
- 'secure': 1,
62
- 'host': location.host,
63
- 'page': location.pathname,
64
- 'placements': placements
65
- };
66
-
67
- if (bidderRequest) {
68
- if (bidderRequest.uspConsent) {
69
- request.ccpa = bidderRequest.uspConsent;
70
- }
71
- if (bidderRequest.gdprConsent) {
72
- request.gdpr = bidderRequest.gdprConsent;
73
- }
74
-
75
- // Add GPP consent
76
- if (bidderRequest.gppConsent) {
77
- request.gpp = bidderRequest.gppConsent.gppString;
78
- request.gpp_sid = bidderRequest.gppConsent.applicableSections;
79
- } else if (bidderRequest.ortb2?.regs?.gpp) {
80
- request.gpp = bidderRequest.ortb2.regs.gpp;
81
- request.gpp_sid = bidderRequest.ortb2.regs.gpp_sid;
82
- }
83
- }
84
-
85
- const len = validBidRequests.length;
86
- for (let i = 0; i < len; i++) {
87
- const bid = validBidRequests[i];
88
- const placement = {
89
- placementId: bid.params.placementId,
90
- bidId: bid.bidId,
91
- schain: bid.schain || {},
92
- bidfloor: getBidFloor(bid)
93
- };
94
- const mediaType = bid.mediaTypes;
95
-
96
- if (mediaType && mediaType[BANNER] && mediaType[BANNER].sizes) {
97
- placement.traffic = BANNER;
98
- placement.sizes = mediaType[BANNER].sizes;
99
- } else if (mediaType && mediaType[VIDEO] && mediaType[VIDEO].playerSize) {
100
- placement.traffic = VIDEO;
101
- placement.wPlayer = mediaType[VIDEO].playerSize[0];
102
- placement.hPlayer = mediaType[VIDEO].playerSize[1];
103
- placement.playerSize = mediaType[VIDEO].playerSize;
104
- placement.minduration = mediaType[VIDEO].minduration;
105
- placement.maxduration = mediaType[VIDEO].maxduration;
106
- placement.mimes = mediaType[VIDEO].mimes;
107
- placement.protocols = mediaType[VIDEO].protocols;
108
- placement.startdelay = mediaType[VIDEO].startdelay;
109
- placement.placement = mediaType[VIDEO].placement;
110
- placement.plcmt = mediaType[VIDEO].plcmt;
111
- placement.skip = mediaType[VIDEO].skip;
112
- placement.skipafter = mediaType[VIDEO].skipafter;
113
- placement.minbitrate = mediaType[VIDEO].minbitrate;
114
- placement.maxbitrate = mediaType[VIDEO].maxbitrate;
115
- placement.delivery = mediaType[VIDEO].delivery;
116
- placement.playbackmethod = mediaType[VIDEO].playbackmethod;
117
- placement.api = mediaType[VIDEO].api;
118
- placement.linearity = mediaType[VIDEO].linearity;
119
- } else if (mediaType && mediaType[NATIVE]) {
120
- placement.traffic = NATIVE;
121
- placement.native = mediaType[NATIVE];
122
- }
123
- placements.push(placement);
124
- }
125
-
126
- return {
127
- method: 'POST',
128
- url: AD_URL,
129
- data: request
130
- };
131
- },
132
-
133
- interpretResponse: (serverResponse) => {
134
- let response = [];
135
- for (let i = 0; i < serverResponse.body.length; i++) {
136
- let resItem = serverResponse.body[i];
137
- if (isBidResponseValid(resItem)) {
138
- resItem.meta = resItem.meta || {};
139
- resItem.meta.advertiserDomains = resItem.adomain || [];
140
-
141
- response.push(resItem);
142
- }
143
- }
144
- return response;
145
- },
12
+ isBidRequestValid: isBidRequestValid(),
13
+ buildRequests: buildRequests(AD_URL),
14
+ interpretResponse
146
15
  };
147
16
 
148
17
  registerBidder(spec);
@@ -1,6 +1,6 @@
1
1
  import { submodule } from '../src/hook.js';
2
2
  import { ajaxBuilder } from '../src/ajax.js';
3
- export const MOBIAN_URL = 'http://impact-analytics-staging.themobian.com';
3
+ export const MOBIAN_URL = 'https://impact-api-prod.themobian.com/brand_safety';
4
4
 
5
5
  export const mobianBrandSafetySubmodule = {
6
6
  name: 'mobianBrandSafety',
@@ -15,7 +15,7 @@ function init() {
15
15
  function getBidRequestData(bidReqConfig, callback, config) {
16
16
  const { site: ortb2Site } = bidReqConfig.ortb2Fragments.global;
17
17
  const pageUrl = encodeURIComponent(getPageUrl());
18
- const requestUrl = `${MOBIAN_URL}?url=${pageUrl}`;
18
+ const requestUrl = `${MOBIAN_URL}/by_url?url=${pageUrl}`;
19
19
 
20
20
  const ajax = ajaxBuilder();
21
21
 
@@ -1,4 +1,4 @@
1
- import {deepClone, logError, getParameterByName} from '../src/utils.js';
1
+ import {deepClone, logError, getParameterByName, logMessage} from '../src/utils.js';
2
2
  import {ajax} from '../src/ajax.js';
3
3
  import {getStorageManager} from '../src/storageManager.js';
4
4
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
@@ -26,8 +26,7 @@ const {
26
26
  AD_RENDER_SUCCEEDED
27
27
  } = EVENTS;
28
28
  function log (msg) {
29
- // eslint-disable-next-line no-console
30
- console.log(`%cNoBid Analytics ${VERSION}`, 'padding: 2px 8px 2px 8px; background-color:#f50057; color: white', msg);
29
+ logMessage(`%cNoBid Analytics ${VERSION}: ${msg}`);
31
30
  }
32
31
  function isJson (str) {
33
32
  return str && str.startsWith('{') && str.endsWith('}');