prebid.js 9.1.0 → 9.3.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 (362) 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/addefendBidAdapter.js +1 -1
  12. package/dist/adgenerationBidAdapter.js +1 -1
  13. package/dist/adlooxRtdProvider.js +1 -1
  14. package/dist/admanBidAdapter.js +1 -1
  15. package/dist/adnuntiusBidAdapter.js +1 -1
  16. package/dist/adpod.js +1 -1
  17. package/dist/adprimeBidAdapter.js +1 -1
  18. package/dist/adqueryBidAdapter.js +1 -1
  19. package/dist/adrelevantisBidAdapter.js +1 -1
  20. package/dist/adstirBidAdapter.js +1 -1
  21. package/dist/adtrgtmeBidAdapter.js +1 -1
  22. package/dist/adxcgAnalyticsAdapter.js +1 -1
  23. package/dist/adxcgBidAdapter.js +1 -1
  24. package/dist/adyoulikeBidAdapter.js +1 -1
  25. package/dist/agmaAnalyticsAdapter.js +1 -1
  26. package/dist/ajaBidAdapter.js +1 -1
  27. package/dist/amxBidAdapter.js +1 -1
  28. package/dist/amxIdSystem.js +1 -1
  29. package/dist/appierAnalyticsAdapter.js +1 -1
  30. package/dist/appnexusBidAdapter.js +1 -1
  31. package/dist/appnexusUtils.js +1 -1
  32. package/dist/asoBidAdapter.js +1 -1
  33. package/dist/autoplayDetection.js +1 -1
  34. package/dist/axisBidAdapter.js +1 -1
  35. package/dist/axonixBidAdapter.js +1 -1
  36. package/dist/beyondmediaBidAdapter.js +1 -1
  37. package/dist/bidglassBidAdapter.js +1 -1
  38. package/dist/big-richmediaBidAdapter.js +1 -1
  39. package/dist/bliinkBidAdapter.js +1 -1
  40. package/dist/boldwinBidAdapter.js +1 -1
  41. package/dist/bridBidAdapter.js +1 -1
  42. package/dist/bridgewellBidAdapter.js +1 -1
  43. package/dist/brightMountainMediaBidAdapter.js +1 -1
  44. package/dist/carodaBidAdapter.js +1 -1
  45. package/dist/chtnwBidAdapter.js +1 -1
  46. package/dist/chunk-core.js +1 -1
  47. package/dist/compassBidAdapter.js +1 -1
  48. package/dist/concertBidAdapter.js +1 -1
  49. package/dist/connectadBidAdapter.js +1 -1
  50. package/dist/consentManagement.js +1 -0
  51. package/dist/consentManagementGpp.js +1 -1
  52. package/dist/consentManagementTcf.js +1 -1
  53. package/dist/consumableBidAdapter.js +1 -1
  54. package/dist/contentexchangeBidAdapter.js +1 -1
  55. package/dist/conversantAnalyticsAdapter.js +1 -1
  56. package/dist/conversantBidAdapter.js +1 -1
  57. package/dist/copper6sspBidAdapter.js +1 -0
  58. package/dist/craftBidAdapter.js +1 -1
  59. package/dist/criteoBidAdapter.js +1 -1
  60. package/dist/cwireBidAdapter.js +1 -1
  61. package/dist/dailymotionBidAdapter.js +1 -1
  62. package/dist/dependencies.json +96 -6
  63. package/dist/dspxBidAdapter.js +1 -1
  64. package/dist/dxkultureBidAdapter.js +1 -1
  65. package/dist/e_volutionBidAdapter.js +1 -1
  66. package/dist/emtvBidAdapter.js +1 -1
  67. package/dist/eplanningBidAdapter.js +1 -1
  68. package/dist/euidIdSystem.js +1 -1
  69. package/dist/exadsBidAdapter.js +1 -1
  70. package/dist/feedadBidAdapter.js +1 -1
  71. package/dist/finativeBidAdapter.js +1 -1
  72. package/dist/freewheel-sspBidAdapter.js +1 -1
  73. package/dist/globalsunBidAdapter.js +1 -1
  74. package/dist/gmosspBidAdapter.js +1 -1
  75. package/dist/goldbachBidAdapter.js +1 -1
  76. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  77. package/dist/greenbidsRtdProvider.js +1 -1
  78. package/dist/gridBidAdapter.js +1 -1
  79. package/dist/gumgumBidAdapter.js +1 -1
  80. package/dist/h12mediaBidAdapter.js +1 -1
  81. package/dist/hypelabBidAdapter.js +1 -1
  82. package/dist/id5AnalyticsAdapter.js +1 -1
  83. package/dist/id5IdSystem.js +1 -1
  84. package/dist/illuminBidAdapter.js +1 -1
  85. package/dist/imdsBidAdapter.js +1 -1
  86. package/dist/improvedigitalBidAdapter.js +1 -1
  87. package/dist/insticatorBidAdapter.js +1 -1
  88. package/dist/intentIqIdSystem.js +1 -1
  89. package/dist/iqzoneBidAdapter.js +1 -1
  90. package/dist/ixBidAdapter.js +1 -1
  91. package/dist/jixieBidAdapter.js +1 -1
  92. package/dist/justpremiumBidAdapter.js +1 -1
  93. package/dist/kargoBidAdapter.js +1 -1
  94. package/dist/kimberliteBidAdapter.js +1 -1
  95. package/dist/kiviadsBidAdapter.js +1 -1
  96. package/dist/konduitAnalyticsAdapter.js +1 -1
  97. package/dist/krushmediaBidAdapter.js +1 -1
  98. package/dist/kueezBidAdapter.js +1 -1
  99. package/dist/kueezRtbBidAdapter.js +1 -1
  100. package/dist/lassoBidAdapter.js +1 -1
  101. package/dist/lifestreetBidAdapter.js +1 -1
  102. package/dist/liveIntentIdSystem.js +1 -1
  103. package/dist/logicadBidAdapter.js +1 -1
  104. package/dist/loglyliftBidAdapter.js +1 -1
  105. package/dist/loyalBidAdapter.js +1 -1
  106. package/dist/luceadBidAdapter.js +1 -1
  107. package/dist/lunamediahbBidAdapter.js +1 -1
  108. package/dist/mabidderBidAdapter.js +1 -1
  109. package/dist/magniteAnalyticsAdapter.js +1 -1
  110. package/dist/malltvAnalyticsAdapter.js +1 -1
  111. package/dist/marsmediaBidAdapter.js +1 -1
  112. package/dist/mathildeadsBidAdapter.js +1 -1
  113. package/dist/mediafuseBidAdapter.js +1 -1
  114. package/dist/medianetAnalyticsAdapter.js +1 -1
  115. package/dist/medianetBidAdapter.js +1 -1
  116. package/dist/mediasquareBidAdapter.js +1 -1
  117. package/dist/mgidBidAdapter.js +1 -1
  118. package/dist/mgidXBidAdapter.js +1 -1
  119. package/dist/minutemediaBidAdapter.js +1 -1
  120. package/dist/missenaBidAdapter.js +1 -1
  121. package/dist/mobfoxpbBidAdapter.js +1 -1
  122. package/dist/mobianRtdProvider.js +1 -1
  123. package/dist/nexx360BidAdapter.js +1 -1
  124. package/dist/nobidAnalyticsAdapter.js +1 -1
  125. package/dist/nobidBidAdapter.js +1 -1
  126. package/dist/not-for-prod/prebid.js +211 -204
  127. package/dist/oguryBidAdapter.js +1 -1
  128. package/dist/onetagBidAdapter.js +1 -1
  129. package/dist/ooloAnalyticsAdapter.js +1 -1
  130. package/dist/openwebBidAdapter.js +1 -1
  131. package/dist/openxBidAdapter.js +1 -1
  132. package/dist/optidigitalBidAdapter.js +1 -1
  133. package/dist/orakiBidAdapter.js +1 -0
  134. package/dist/orbidderBidAdapter.js +1 -1
  135. package/dist/ortbConverter.js +1 -1
  136. package/dist/outbrainBidAdapter.js +1 -1
  137. package/dist/ozoneBidAdapter.js +1 -1
  138. package/dist/paapi.js +1 -1
  139. package/dist/pairIdSystem.js +1 -1
  140. package/dist/pgamsspBidAdapter.js +1 -1
  141. package/dist/pixfutureBidAdapter.js +1 -1
  142. package/dist/playdigoBidAdapter.js +1 -1
  143. package/dist/prebidServerBidAdapter.js +1 -1
  144. package/dist/pubCircleBidAdapter.js +1 -1
  145. package/dist/publinkIdSystem.js +1 -1
  146. package/dist/publirBidAdapter.js +1 -1
  147. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  148. package/dist/pubmaticBidAdapter.js +1 -1
  149. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  150. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  151. package/dist/pxyzBidAdapter.js +1 -1
  152. package/dist/qtBidAdapter.js +1 -1
  153. package/dist/quantcastBidAdapter.js +1 -1
  154. package/dist/raynRtdProvider.js +1 -1
  155. package/dist/readpeakBidAdapter.js +1 -1
  156. package/dist/relaidoBidAdapter.js +1 -1
  157. package/dist/retailspotBidAdapter.js +1 -1
  158. package/dist/rhythmoneBidAdapter.js +1 -1
  159. package/dist/riseBidAdapter.js +1 -1
  160. package/dist/rubiconBidAdapter.js +1 -1
  161. package/dist/seedingAllianceBidAdapter.js +1 -1
  162. package/dist/seedtagBidAdapter.js +1 -1
  163. package/dist/setupadBidAdapter.js +1 -1
  164. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  165. package/dist/sharethroughBidAdapter.js +1 -1
  166. package/dist/shinezBidAdapter.js +1 -1
  167. package/dist/shinezRtbBidAdapter.js +1 -1
  168. package/dist/smaatoBidAdapter.js +1 -1
  169. package/dist/smartadserverBidAdapter.js +1 -1
  170. package/dist/smartxBidAdapter.js +1 -1
  171. package/dist/smartyadsBidAdapter.js +1 -1
  172. package/dist/smartyadsUtils.js +1 -0
  173. package/dist/smartytechBidAdapter.js +1 -1
  174. package/dist/smilewantedBidAdapter.js +1 -1
  175. package/dist/snigelBidAdapter.js +1 -1
  176. package/dist/sonobiBidAdapter.js +1 -1
  177. package/dist/sovrnBidAdapter.js +1 -1
  178. package/dist/sspBCBidAdapter.js +1 -1
  179. package/dist/stnBidAdapter.js +1 -1
  180. package/dist/stvBidAdapter.js +1 -1
  181. package/dist/sublimeBidAdapter.js +1 -1
  182. package/dist/taboolaBidAdapter.js +1 -1
  183. package/dist/tagorasBidAdapter.js +1 -1
  184. package/dist/tappxBidAdapter.js +1 -1
  185. package/dist/targetVideoBidAdapter.js +1 -1
  186. package/dist/teadsBidAdapter.js +1 -1
  187. package/dist/teqblazeUtils.js +1 -0
  188. package/dist/terceptAnalyticsAdapter.js +1 -1
  189. package/dist/themoneytizerBidAdapter.js +1 -1
  190. package/dist/topicsFpdModule.js +1 -1
  191. package/dist/trionBidAdapter.js +1 -1
  192. package/dist/tripleliftBidAdapter.js +1 -1
  193. package/dist/ttdBidAdapter.js +1 -1
  194. package/dist/twistDigitalBidAdapter.js +1 -1
  195. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  196. package/dist/uid2IdSystem.js +1 -1
  197. package/dist/underdogmediaBidAdapter.js +1 -1
  198. package/dist/undertoneBidAdapter.js +1 -1
  199. package/dist/unrulyBidAdapter.js +1 -1
  200. package/dist/userId.js +1 -1
  201. package/dist/vidazooBidAdapter.js +1 -1
  202. package/dist/vidazooUtils.js +1 -0
  203. package/dist/videobyteBidAdapter.js +1 -1
  204. package/dist/visiblemeasuresBidAdapter.js +1 -1
  205. package/dist/visxBidAdapter.js +1 -1
  206. package/dist/vuukleBidAdapter.js +1 -1
  207. package/dist/widespaceBidAdapter.js +1 -1
  208. package/dist/winrBidAdapter.js +1 -1
  209. package/dist/yahooAdsBidAdapter.js +1 -1
  210. package/dist/yieldmoBidAdapter.js +1 -1
  211. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  212. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  213. package/integrationExamples/gpt/raynRtdProvider_example.html +1 -0
  214. package/libraries/adagioUtils/adagioUtils.js +35 -0
  215. package/libraries/appnexusUtils/anUtils.js +1 -0
  216. package/libraries/autoplayDetection/autoplay.js +8 -1
  217. package/libraries/consentManagement/cmUtils.js +38 -0
  218. package/libraries/ortbConverter/converter.js +1 -1
  219. package/libraries/smartyadsUtils/getAdUrlByRegion.js +32 -0
  220. package/libraries/teqblazeUtils/bidderUtils.js +253 -0
  221. package/libraries/vidazooUtils/bidderUtils.js +481 -0
  222. package/libraries/vidazooUtils/constants.js +7 -0
  223. package/modules/.submodules.json +1 -0
  224. package/modules/acuityadsBidAdapter.js +5 -203
  225. package/modules/adagioBidAdapter.js +1 -17
  226. package/modules/adagioRtdProvider.js +41 -51
  227. package/modules/adagioRtdProvider.md +1 -0
  228. package/modules/addefendBidAdapter.js +1 -2
  229. package/modules/adlooxRtdProvider.js +1 -1
  230. package/modules/admanBidAdapter.js +31 -188
  231. package/modules/adnuntiusBidAdapter.js +1 -0
  232. package/modules/adprimeBidAdapter.js +28 -165
  233. package/modules/adxcgAnalyticsAdapter.js +1 -2
  234. package/modules/axisBidAdapter.js +33 -165
  235. package/modules/beyondmediaBidAdapter.js +5 -189
  236. package/modules/bliinkBidAdapter.js +3 -31
  237. package/modules/boldwinBidAdapter.js +21 -159
  238. package/modules/ceeIdSystem.js +1 -1
  239. package/modules/compassBidAdapter.js +5 -198
  240. package/modules/consentManagementGpp.js +2 -38
  241. package/modules/consentManagementTcf.js +7 -38
  242. package/modules/contentexchangeBidAdapter.js +5 -200
  243. package/modules/conversantAnalyticsAdapter.js +1 -2
  244. package/modules/conversantBidAdapter.js +1 -0
  245. package/modules/copper6sspBidAdapter.js +19 -0
  246. package/modules/copper6sspBidAdapter.md +79 -0
  247. package/modules/criteoBidAdapter.js +10 -3
  248. package/modules/e_volutionBidAdapter.js +4 -186
  249. package/modules/emtvBidAdapter.js +5 -198
  250. package/modules/globalsunBidAdapter.js +5 -199
  251. package/modules/id5AnalyticsAdapter.js +1 -2
  252. package/modules/id5IdSystem.js +31 -2
  253. package/modules/id5IdSystem.md +67 -2
  254. package/modules/intentIqIdSystem.js +408 -50
  255. package/modules/intentIqIdSystem.md +92 -0
  256. package/modules/iqzoneBidAdapter.js +5 -224
  257. package/modules/kiviadsBidAdapter.js +5 -199
  258. package/modules/krushmediaBidAdapter.js +25 -143
  259. package/modules/liveIntentIdSystem.js +2 -2
  260. package/modules/loyalBidAdapter.js +4 -178
  261. package/modules/lunamediahbBidAdapter.js +5 -118
  262. package/modules/mabidderBidAdapter.js +1 -2
  263. package/modules/mathildeadsBidAdapter.js +5 -198
  264. package/modules/medianetAnalyticsAdapter.js +1 -2
  265. package/modules/medianetBidAdapter.js +1 -1
  266. package/modules/mgidXBidAdapter.js +14 -207
  267. package/modules/mobfoxpbBidAdapter.js +4 -135
  268. package/modules/mobianRtdProvider.js +2 -2
  269. package/modules/nobidAnalyticsAdapter.js +2 -3
  270. package/modules/orakiBidAdapter.js +19 -0
  271. package/modules/orakiBidAdapter.md +79 -0
  272. package/modules/orbidderBidAdapter.js +4 -2
  273. package/modules/ozoneBidAdapter.js +117 -58
  274. package/modules/paapi.js +2 -1
  275. package/modules/pairIdSystem.js +27 -10
  276. package/modules/pgamsspBidAdapter.js +5 -240
  277. package/modules/pixfutureBidAdapter.js +1 -2
  278. package/modules/playdigoBidAdapter.js +4 -186
  279. package/modules/prebidServerBidAdapter/index.js +10 -3
  280. package/modules/pubCircleBidAdapter.js +5 -218
  281. package/modules/pubmaticAnalyticsAdapter.js +21 -8
  282. package/modules/pubxaiAnalyticsAdapter.js +1 -5
  283. package/modules/qtBidAdapter.js +5 -224
  284. package/modules/raynRtdProvider.js +36 -3
  285. package/modules/seedtagBidAdapter.js +5 -0
  286. package/modules/setupadBidAdapter.js +58 -140
  287. package/modules/smartadserverBidAdapter.js +3 -0
  288. package/modules/smartyadsBidAdapter.js +6 -110
  289. package/modules/smartytechBidAdapter.js +7 -2
  290. package/modules/snigelBidAdapter.js +1 -2
  291. package/modules/tappxBidAdapter.js +1 -2
  292. package/modules/terceptAnalyticsAdapter.js +1 -2
  293. package/modules/topicsFpdModule.js +1 -1
  294. package/modules/twistDigitalBidAdapter.js +1 -12
  295. package/modules/uid2IdSystem.js +0 -1
  296. package/modules/uid2IdSystem_shared.js +0 -1
  297. package/modules/userId/index.js +31 -21
  298. package/modules/vidazooBidAdapter.js +26 -468
  299. package/modules/visiblemeasuresBidAdapter.js +5 -199
  300. package/modules/yahooAdsBidAdapter.js +4 -1
  301. package/modules/yuktamediaAnalyticsAdapter.js +1 -2
  302. package/package.json +1 -1
  303. package/src/auction.js +5 -63
  304. package/src/utils/focusTimeout.js +41 -0
  305. package/src/utils/ttlCollection.js +2 -1
  306. package/src/utils.js +42 -0
  307. package/src/videoCache.js +72 -0
  308. package/test/mocks/videoCacheStub.js +1 -1
  309. package/test/spec/auctionmanager_spec.js +16 -1
  310. package/test/spec/fpd/gdpr_spec.js +24 -2
  311. package/test/spec/libraries/teqblazeUtils/bidderUtils_spec.js +519 -0
  312. package/test/spec/modules/acuityadsBidAdapter_spec.js +79 -43
  313. package/test/spec/modules/adagioRtdProvider_spec.js +62 -1
  314. package/test/spec/modules/admanBidAdapter_spec.js +370 -247
  315. package/test/spec/modules/adnuntiusBidAdapter_spec.js +6 -3
  316. package/test/spec/modules/adprimeBidAdapter_spec.js +225 -78
  317. package/test/spec/modules/axisBidAdapter_spec.js +78 -14
  318. package/test/spec/modules/beyondmediaBidAdapter_spec.js +80 -18
  319. package/test/spec/modules/bliinkBidAdapter_spec.js +8 -2
  320. package/test/spec/modules/boldwinBidAdapter_spec.js +221 -75
  321. package/test/spec/modules/compassBidAdapter_spec.js +130 -16
  322. package/test/spec/modules/contentexchangeBidAdapter_spec.js +134 -21
  323. package/test/spec/modules/conversantAnalyticsAdapter_spec.js +1 -1
  324. package/test/spec/modules/conversantBidAdapter_spec.js +7 -0
  325. package/test/spec/modules/copper6sspBidAdapter_spec.js +514 -0
  326. package/test/spec/modules/e_volutionBidAdapter_spec.js +65 -3
  327. package/test/spec/modules/emtvBidAdapter_spec.js +131 -16
  328. package/test/spec/modules/globalsunBidAdapter_spec.js +130 -16
  329. package/test/spec/modules/id5IdSystem_spec.js +79 -3
  330. package/test/spec/modules/intentIqIdSystem_spec.js +264 -36
  331. package/test/spec/modules/iqzoneBidAdapter_spec.js +66 -12
  332. package/test/spec/modules/kiviadsBidAdapter_spec.js +131 -20
  333. package/test/spec/modules/krushmediaBidAdapter_spec.js +272 -90
  334. package/test/spec/modules/loyalBidAdapter_spec.js +114 -14
  335. package/test/spec/modules/lunamediahbBidAdapter_spec.js +221 -87
  336. package/test/spec/modules/mathildeadsBidAdapter_spec.js +87 -18
  337. package/test/spec/modules/mgidXBidAdapter_spec.js +11 -3
  338. package/test/spec/modules/mobfoxpbBidAdapter_spec.js +229 -91
  339. package/test/spec/modules/orakiBidAdapter_spec.js +510 -0
  340. package/test/spec/modules/ozoneBidAdapter_spec.js +192 -22
  341. package/test/spec/modules/paapi_spec.js +5 -5
  342. package/test/spec/modules/pgamsspBidAdapter_spec.js +83 -16
  343. package/test/spec/modules/playdigoBidAdapter_spec.js +38 -9
  344. package/test/spec/modules/prebidServerBidAdapter_spec.js +14 -0
  345. package/test/spec/modules/pubCircleBidAdapter_spec.js +82 -17
  346. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +52 -5
  347. package/test/spec/modules/qtBidAdapter_spec.js +15 -3
  348. package/test/spec/modules/raynRtdProvider_spec.js +25 -0
  349. package/test/spec/modules/seedtagBidAdapter_spec.js +29 -0
  350. package/test/spec/modules/setupadBidAdapter_spec.js +124 -97
  351. package/test/spec/modules/smartadserverBidAdapter_spec.js +7 -0
  352. package/test/spec/modules/smartyadsBidAdapter_spec.js +6 -83
  353. package/test/spec/modules/smartytechBidAdapter_spec.js +5 -1
  354. package/test/spec/modules/topicsFpdModule_spec.js +43 -59
  355. package/test/spec/modules/twistDigitalBidAdapter_spec.js +5 -3
  356. package/test/spec/modules/userId_spec.js +86 -47
  357. package/test/spec/modules/vidazooBidAdapter_spec.js +21 -23
  358. package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +130 -16
  359. package/test/spec/modules/yahooAdsBidAdapter_spec.js +1 -1
  360. package/test/spec/ortbConverter/converter_spec.js +7 -3
  361. package/test/spec/unit/utils/focusTimeout_spec.js +60 -0
  362. package/test/spec/videoCache_spec.js +56 -53
@@ -0,0 +1,481 @@
1
+ import {
2
+ _each,
3
+ deepAccess,
4
+ formatQS,
5
+ isArray,
6
+ isFn,
7
+ parseSizesInput,
8
+ parseUrl,
9
+ triggerPixel,
10
+ uniques
11
+ } from '../../src/utils.js';
12
+ import {chunk} from '../chunk/chunk.js';
13
+ import {CURRENCY, DEAL_ID_EXPIRY, SESSION_ID_KEY, TTL_SECONDS, UNIQUE_DEAL_ID_EXPIRY} from './constants.js';
14
+ import {bidderSettings} from '../../src/bidderSettings.js';
15
+ import {config} from '../../src/config.js';
16
+ import {BANNER, VIDEO} from '../../src/mediaTypes.js';
17
+
18
+ export function createSessionId() {
19
+ return 'wsid_' + parseInt(Date.now() * Math.random());
20
+ }
21
+
22
+ export function getTopWindowQueryParams() {
23
+ try {
24
+ const parsedUrl = parseUrl(window.top.document.URL, {decodeSearchAsString: true});
25
+ return parsedUrl.search;
26
+ } catch (e) {
27
+ return '';
28
+ }
29
+ }
30
+
31
+ export function extractCID(params) {
32
+ return params.cId || params.CID || params.cID || params.CId || params.cid || params.ciD || params.Cid || params.CiD;
33
+ }
34
+
35
+ export function extractPID(params) {
36
+ return params.pId || params.PID || params.pID || params.PId || params.pid || params.piD || params.Pid || params.PiD;
37
+ }
38
+
39
+ export function extractSubDomain(params) {
40
+ return params.subDomain || params.SubDomain || params.Subdomain || params.subdomain || params.SUBDOMAIN || params.subDOMAIN;
41
+ }
42
+
43
+ export function isBidRequestValid(bid) {
44
+ const params = bid.params || {};
45
+ return !!(extractCID(params) && extractPID(params));
46
+ }
47
+
48
+ export function tryParseJSON(value) {
49
+ try {
50
+ return JSON.parse(value);
51
+ } catch (e) {
52
+ return value;
53
+ }
54
+ }
55
+
56
+ export function setStorageItem(storage, key, value, timestamp) {
57
+ try {
58
+ const created = timestamp || Date.now();
59
+ const data = JSON.stringify({value, created});
60
+ storage.setDataInLocalStorage(key, data);
61
+ } catch (e) {
62
+ }
63
+ }
64
+
65
+ export function getStorageItem(storage, key) {
66
+ try {
67
+ return tryParseJSON(storage.getDataFromLocalStorage(key, null));
68
+ } catch (e) {
69
+ }
70
+
71
+ return null;
72
+ }
73
+
74
+ export function getCacheOpt(storage, useKey) {
75
+ let data = storage.getDataFromLocalStorage(useKey, null);
76
+ if (!data) {
77
+ data = String(Date.now());
78
+ storage.setDataInLocalStorage(useKey, data, null);
79
+ }
80
+
81
+ return data;
82
+ }
83
+
84
+ export function getUniqueDealId(storage, key, expiry = UNIQUE_DEAL_ID_EXPIRY) {
85
+ const storageKey = `u_${key}`;
86
+ const now = Date.now();
87
+ const data = getStorageItem(storage, storageKey);
88
+ let uniqueId;
89
+
90
+ if (!data || !data.value || now - data.created > expiry) {
91
+ uniqueId = `${key}_${now.toString()}`;
92
+ setStorageItem(storage, storageKey, uniqueId);
93
+ } else {
94
+ uniqueId = data.value;
95
+ }
96
+
97
+ return uniqueId;
98
+ }
99
+
100
+ export function getNextDealId(storage, key, expiry = DEAL_ID_EXPIRY) {
101
+ try {
102
+ const data = getStorageItem(storage, key);
103
+ let currentValue = 0;
104
+ let timestamp;
105
+
106
+ if (data && data.value && Date.now() - data.created < expiry) {
107
+ currentValue = data.value;
108
+ timestamp = data.created;
109
+ }
110
+
111
+ const nextValue = currentValue + 1;
112
+ setStorageItem(storage, key, nextValue, timestamp);
113
+ return nextValue;
114
+ } catch (e) {
115
+ return 0;
116
+ }
117
+ }
118
+
119
+ export function hashCode(s, prefix = '_') {
120
+ const l = s.length;
121
+ let h = 0
122
+ let i = 0;
123
+ if (l > 0) {
124
+ while (i < l) {
125
+ h = (h << 5) - h + s.charCodeAt(i++) | 0;
126
+ }
127
+ }
128
+ return prefix + h;
129
+ }
130
+
131
+ export function onBidWon(bid) {
132
+ if (!bid.nurl) {
133
+ return;
134
+ }
135
+ const wonBid = {
136
+ adId: bid.adId,
137
+ creativeId: bid.creativeId,
138
+ auctionId: bid.auctionId,
139
+ transactionId: bid.transactionId,
140
+ adUnitCode: bid.adUnitCode,
141
+ cpm: bid.cpm,
142
+ currency: bid.currency,
143
+ originalCpm: bid.originalCpm,
144
+ originalCurrency: bid.originalCurrency,
145
+ netRevenue: bid.netRevenue,
146
+ mediaType: bid.mediaType,
147
+ timeToRespond: bid.timeToRespond,
148
+ status: bid.status,
149
+ };
150
+ const qs = formatQS(wonBid);
151
+ const url = bid.nurl + (bid.nurl.indexOf('?') === -1 ? '?' : '&') + qs;
152
+ triggerPixel(url);
153
+ }
154
+
155
+ /**
156
+ * Create the spec function for getting user syncs
157
+ *
158
+ * The options object accepts the following fields:
159
+ *
160
+ * - iframeSyncUrl
161
+ * - imageSyncUrl
162
+ *
163
+ * @param options
164
+ */
165
+ export function createUserSyncGetter(options = {
166
+ iframeSyncUrl: '',
167
+ imageSyncUrl: ''
168
+ }) {
169
+ return function getUserSyncs(syncOptions, responses, gdprConsent = {}, uspConsent = '', gppConsent = {}) {
170
+ const syncs = [];
171
+ const {iframeEnabled, pixelEnabled} = syncOptions;
172
+ const {gdprApplies, consentString = ''} = gdprConsent;
173
+ const {gppString, applicableSections} = gppConsent;
174
+
175
+ const cidArr = responses.filter(resp => deepAccess(resp, 'body.cid')).map(resp => resp.body.cid).filter(uniques);
176
+ let params = `?cid=${encodeURIComponent(cidArr.join(','))}&gdpr=${gdprApplies ? 1 : 0}&gdpr_consent=${encodeURIComponent(consentString || '')}&us_privacy=${encodeURIComponent(uspConsent || '')}`;
177
+
178
+ if (gppString && applicableSections?.length) {
179
+ params += '&gpp=' + encodeURIComponent(gppString);
180
+ params += '&gpp_sid=' + encodeURIComponent(applicableSections.join(','));
181
+ }
182
+
183
+ if (iframeEnabled && options.iframeSyncUrl) {
184
+ syncs.push({
185
+ type: 'iframe',
186
+ url: `${options.iframeSyncUrl}/${params}`
187
+ });
188
+ }
189
+ if (pixelEnabled && options.imageSyncUrl) {
190
+ syncs.push({
191
+ type: 'image',
192
+ url: `${options.imageSyncUrl}/${params}`
193
+ });
194
+ }
195
+ return syncs;
196
+ }
197
+ }
198
+
199
+ export function appendUserIdsToRequestPayload(payloadRef, userIds) {
200
+ let key;
201
+ _each(userIds, (userId, idSystemProviderName) => {
202
+ key = `uid.${idSystemProviderName}`;
203
+ switch (idSystemProviderName) {
204
+ case 'lipb':
205
+ payloadRef[key] = userId.lipbid;
206
+ break;
207
+ case 'id5id':
208
+ payloadRef[key] = userId.uid;
209
+ break;
210
+ default:
211
+ payloadRef[key] = userId;
212
+ }
213
+ });
214
+ }
215
+
216
+ export function getVidazooSessionId(storage) {
217
+ return getStorageItem(storage, SESSION_ID_KEY) || '';
218
+ }
219
+
220
+ export function buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidderTimeout, webSessionId, storage, bidderVersion, bidderCode, getUniqueRequestData) {
221
+ const {
222
+ params,
223
+ bidId,
224
+ userId,
225
+ adUnitCode,
226
+ schain,
227
+ mediaTypes,
228
+ ortb2Imp,
229
+ bidderRequestId,
230
+ bidRequestsCount,
231
+ bidderRequestsCount,
232
+ bidderWinsCount
233
+ } = bid;
234
+ const {ext} = params;
235
+ let {bidFloor} = params;
236
+ const hashUrl = hashCode(topWindowUrl);
237
+ const uniqueRequestData = isFn(getUniqueRequestData) ? getUniqueRequestData(hashUrl) : {};
238
+ const uniqueDealId = getUniqueDealId(storage, hashUrl);
239
+ const pId = extractPID(params);
240
+ const isStorageAllowed = bidderSettings.get(bidderCode, 'storageAllowed');
241
+
242
+ const gpid = deepAccess(bid, 'ortb2Imp.ext.gpid') || deepAccess(bid, 'ortb2Imp.ext.data.pbadslot', '');
243
+ const cat = deepAccess(bidderRequest, 'ortb2.site.cat', []);
244
+ const pagecat = deepAccess(bidderRequest, 'ortb2.site.pagecat', []);
245
+ const contentData = deepAccess(bidderRequest, 'ortb2.site.content.data', []);
246
+ const userData = deepAccess(bidderRequest, 'ortb2.user.data', []);
247
+
248
+ if (isFn(bid.getFloor)) {
249
+ const floorInfo = bid.getFloor({
250
+ currency: 'USD',
251
+ mediaType: '*',
252
+ size: '*'
253
+ });
254
+
255
+ if (floorInfo.currency === 'USD') {
256
+ bidFloor = floorInfo.floor;
257
+ }
258
+ }
259
+
260
+ let data = {
261
+ url: encodeURIComponent(topWindowUrl),
262
+ uqs: getTopWindowQueryParams(),
263
+ cb: Date.now(),
264
+ bidFloor: bidFloor,
265
+ bidId: bidId,
266
+ referrer: bidderRequest.refererInfo.ref,
267
+ adUnitCode: adUnitCode,
268
+ publisherId: pId,
269
+ sizes: sizes,
270
+ uniqueDealId: uniqueDealId,
271
+ bidderVersion: bidderVersion,
272
+ prebidVersion: '$prebid.version$',
273
+ res: `${screen.width}x${screen.height}`,
274
+ schain: schain,
275
+ mediaTypes: mediaTypes,
276
+ isStorageAllowed: isStorageAllowed,
277
+ gpid: gpid,
278
+ cat: cat,
279
+ contentData,
280
+ userData: userData,
281
+ pagecat: pagecat,
282
+ transactionId: ortb2Imp?.ext?.tid,
283
+ bidderRequestId: bidderRequestId,
284
+ bidRequestsCount: bidRequestsCount,
285
+ bidderRequestsCount: bidderRequestsCount,
286
+ bidderWinsCount: bidderWinsCount,
287
+ bidderTimeout: bidderTimeout,
288
+ webSessionId: webSessionId,
289
+ ...uniqueRequestData
290
+ };
291
+
292
+ appendUserIdsToRequestPayload(data, userId);
293
+
294
+ const sua = deepAccess(bidderRequest, 'ortb2.device.sua');
295
+
296
+ if (sua) {
297
+ data.sua = sua;
298
+ }
299
+
300
+ if (bidderRequest.gdprConsent) {
301
+ if (bidderRequest.gdprConsent.consentString) {
302
+ data.gdprConsent = bidderRequest.gdprConsent.consentString;
303
+ }
304
+ if (bidderRequest.gdprConsent.gdprApplies !== undefined) {
305
+ data.gdpr = bidderRequest.gdprConsent.gdprApplies ? 1 : 0;
306
+ }
307
+ }
308
+ if (bidderRequest.uspConsent) {
309
+ data.usPrivacy = bidderRequest.uspConsent;
310
+ }
311
+
312
+ if (bidderRequest.gppConsent) {
313
+ data.gppString = bidderRequest.gppConsent.gppString;
314
+ data.gppSid = bidderRequest.gppConsent.applicableSections;
315
+ } else if (bidderRequest.ortb2?.regs?.gpp) {
316
+ data.gppString = bidderRequest.ortb2.regs.gpp;
317
+ data.gppSid = bidderRequest.ortb2.regs.gpp_sid;
318
+ }
319
+
320
+ if (bidderRequest.paapi?.enabled) {
321
+ const fledge = deepAccess(bidderRequest, 'ortb2Imp.ext.ae');
322
+ if (fledge) {
323
+ data.fledge = fledge;
324
+ }
325
+ }
326
+
327
+ _each(ext, (value, key) => {
328
+ data['ext.' + key] = value;
329
+ });
330
+
331
+ return data;
332
+ }
333
+
334
+ export function createInterpretResponseFn(bidderCode) {
335
+ return function interpretResponse(serverResponse, request) {
336
+ if (!serverResponse || !serverResponse.body) {
337
+ return [];
338
+ }
339
+
340
+ const singleRequestMode = config.getConfig(`${bidderCode}.singleRequest`);
341
+ const reqBidId = deepAccess(request, 'data.bidId');
342
+ const {results} = serverResponse.body;
343
+
344
+ let output = [];
345
+
346
+ try {
347
+ results.forEach((result, i) => {
348
+ const {
349
+ creativeId,
350
+ ad,
351
+ price,
352
+ exp,
353
+ width,
354
+ height,
355
+ currency,
356
+ bidId,
357
+ nurl,
358
+ advertiserDomains,
359
+ metaData,
360
+ mediaType = BANNER
361
+ } = result;
362
+ if (!ad || !price) {
363
+ return;
364
+ }
365
+
366
+ const response = {
367
+ requestId: (singleRequestMode && bidId) ? bidId : reqBidId,
368
+ cpm: price,
369
+ width: width,
370
+ height: height,
371
+ creativeId: creativeId,
372
+ currency: currency || CURRENCY,
373
+ netRevenue: true,
374
+ ttl: exp || TTL_SECONDS,
375
+ };
376
+
377
+ if (nurl) {
378
+ response.nurl = nurl;
379
+ }
380
+
381
+ if (metaData) {
382
+ Object.assign(response, {
383
+ meta: metaData
384
+ })
385
+ } else {
386
+ Object.assign(response, {
387
+ meta: {
388
+ advertiserDomains: advertiserDomains || []
389
+ }
390
+ })
391
+ }
392
+
393
+ if (mediaType === BANNER) {
394
+ Object.assign(response, {
395
+ ad: ad,
396
+ });
397
+ } else {
398
+ Object.assign(response, {
399
+ vastXml: ad,
400
+ mediaType: VIDEO
401
+ });
402
+ }
403
+ output.push(response);
404
+ });
405
+
406
+ return output;
407
+ } catch (e) {
408
+ return [];
409
+ }
410
+ }
411
+ }
412
+
413
+ export function createBuildRequestsFn(createRequestDomain, createUniqueRequestData, webSessionId, storage, bidderCode, bidderVersion) {
414
+ function buildRequest(bid, topWindowUrl, sizes, bidderRequest, bidderTimeout) {
415
+ const {params} = bid;
416
+ const cId = extractCID(params);
417
+ const subDomain = extractSubDomain(params);
418
+ const data = buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidderTimeout, webSessionId, storage, bidderVersion, bidderCode, createUniqueRequestData);
419
+ const dto = {
420
+ method: 'POST', url: `${createRequestDomain(subDomain)}/prebid/multi/${cId}`, data: data
421
+ };
422
+ return dto;
423
+ }
424
+
425
+ function buildSingleRequest(bidRequests, bidderRequest, topWindowUrl, bidderTimeout) {
426
+ const {params} = bidRequests[0];
427
+ const cId = extractCID(params);
428
+ const subDomain = extractSubDomain(params);
429
+ const data = bidRequests.map(bid => {
430
+ const sizes = parseSizesInput(bid.sizes);
431
+ return buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidderTimeout, webSessionId, storage, bidderVersion, bidderCode, createUniqueRequestData)
432
+ });
433
+ const chunkSize = Math.min(20, config.getConfig(`${bidderCode}.chunkSize`) || 10);
434
+
435
+ const chunkedData = chunk(data, chunkSize);
436
+ return chunkedData.map(chunk => {
437
+ return {
438
+ method: 'POST',
439
+ url: `${createRequestDomain(subDomain)}/prebid/multi/${cId}`,
440
+ data: {
441
+ bids: chunk
442
+ }
443
+ };
444
+ });
445
+ }
446
+
447
+ return function buildRequests(validBidRequests, bidderRequest) {
448
+ // TODO: does the fallback make sense here?
449
+ const topWindowUrl = bidderRequest.refererInfo.page || bidderRequest.refererInfo.topmostLocation;
450
+ const bidderTimeout = config.getConfig('bidderTimeout');
451
+
452
+ const singleRequestMode = config.getConfig('vidazoo.singleRequest');
453
+
454
+ const requests = [];
455
+
456
+ if (singleRequestMode) {
457
+ // banner bids are sent as a single request
458
+ const bannerBidRequests = validBidRequests.filter(bid => isArray(bid.mediaTypes) ? bid.mediaTypes.includes(BANNER) : bid.mediaTypes[BANNER] !== undefined);
459
+ if (bannerBidRequests.length > 0) {
460
+ const singleRequests = buildSingleRequest(bannerBidRequests, bidderRequest, topWindowUrl, bidderTimeout);
461
+ requests.push(...singleRequests);
462
+ }
463
+
464
+ // video bids are sent as a single request for each bid
465
+
466
+ const videoBidRequests = validBidRequests.filter(bid => bid.mediaTypes[VIDEO] !== undefined);
467
+ videoBidRequests.forEach(validBidRequest => {
468
+ const sizes = parseSizesInput(validBidRequest.sizes);
469
+ const request = buildRequest(validBidRequest, topWindowUrl, sizes, bidderRequest, bidderTimeout);
470
+ requests.push(request);
471
+ });
472
+ } else {
473
+ validBidRequests.forEach(validBidRequest => {
474
+ const sizes = parseSizesInput(validBidRequest.sizes);
475
+ const request = buildRequest(validBidRequest, topWindowUrl, sizes, bidderRequest, bidderTimeout);
476
+ requests.push(request);
477
+ });
478
+ }
479
+ return requests;
480
+ }
481
+ }
@@ -0,0 +1,7 @@
1
+ export const CURRENCY = 'USD';
2
+ export const TTL_SECONDS = 60 * 5;
3
+ export const DEAL_ID_EXPIRY = 1000 * 60 * 15;
4
+ export const UNIQUE_DEAL_ID_EXPIRY = 1000 * 60 * 60;
5
+ export const SESSION_ID_KEY = 'vidSid';
6
+ export const OPT_CACHE_KEY = 'vdzwopt';
7
+ export const OPT_TIME_KEY = 'vdzHum';
@@ -60,6 +60,7 @@
60
60
  "1plusXRtdProvider",
61
61
  "a1MediaRtdProvider",
62
62
  "aaxBlockmeterRtdProvider",
63
+ "adagioRtdProvider",
63
64
  "adlooxRtdProvider",
64
65
  "adnuntiusRtdProvider",
65
66
  "airgridRtdProvider",