prebid.js 7.43.0 → 7.44.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 (401) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/adagioBidAdapter.js +1 -1
  4. package/dist/adbookpspBidAdapter.js +1 -1
  5. package/dist/adgenerationBidAdapter.js +1 -1
  6. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  7. package/dist/admixerIdSystem.js +1 -1
  8. package/dist/adnuntiusBidAdapter.js +1 -1
  9. package/dist/adqueryBidAdapter.js +1 -1
  10. package/dist/adqueryIdSystem.js +1 -1
  11. package/dist/adrelevantisBidAdapter.js +1 -1
  12. package/dist/adrinoBidAdapter.js +1 -1
  13. package/dist/adriverIdSystem.js +1 -1
  14. package/dist/adsinteractiveBidAdapter.js +1 -0
  15. package/dist/adtrgtmeBidAdapter.js +1 -1
  16. package/dist/adxcgBidAdapter.js +1 -1
  17. package/dist/adyoulikeBidAdapter.js +1 -1
  18. package/dist/aidemBidAdapter.js +1 -1
  19. package/dist/airgridRtdProvider.js +1 -1
  20. package/dist/ajaBidAdapter.js +1 -1
  21. package/dist/akamaiDapRtdProvider.js +1 -1
  22. package/dist/amxBidAdapter.js +1 -1
  23. package/dist/amxIdSystem.js +1 -1
  24. package/dist/appierAnalyticsAdapter.js +1 -1
  25. package/dist/appnexusBidAdapter.js +1 -1
  26. package/dist/apstreamBidAdapter.js +1 -1
  27. package/dist/asoBidAdapter.js +1 -1
  28. package/dist/atsAnalyticsAdapter.js +1 -1
  29. package/dist/audiencerunBidAdapter.js +1 -1
  30. package/dist/axonixBidAdapter.js +1 -1
  31. package/dist/bedigitechBidAdapter.js +1 -0
  32. package/dist/bidglassBidAdapter.js +1 -1
  33. package/dist/big-richmediaBidAdapter.js +1 -1
  34. package/dist/bluebillywigBidAdapter.js +1 -1
  35. package/dist/blueconicRtdProvider.js +1 -1
  36. package/dist/bridgewellBidAdapter.js +1 -1
  37. package/dist/brightMountainMediaBidAdapter.js +1 -1
  38. package/dist/brightcomBidAdapter.js +1 -1
  39. package/dist/brightcomSSPBidAdapter.js +1 -1
  40. package/dist/browsiRtdProvider.js +1 -1
  41. package/dist/byDataAnalyticsAdapter.js +1 -1
  42. package/dist/carodaBidAdapter.js +1 -1
  43. package/dist/chtnwBidAdapter.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/conversantAnalyticsAdapter.js +1 -1
  48. package/dist/conversantBidAdapter.js +1 -1
  49. package/dist/craftBidAdapter.js +1 -1
  50. package/dist/criteoBidAdapter.js +1 -1
  51. package/dist/criteoIdSystem.js +1 -1
  52. package/dist/cwireBidAdapter.js +1 -1
  53. package/dist/czechAdIdSystem.js +1 -1
  54. package/dist/dacIdSystem.js +1 -1
  55. package/dist/deepintentDpesIdSystem.js +1 -1
  56. package/dist/dependencies.json +3 -0
  57. package/dist/discoveryBidAdapter.js +1 -1
  58. package/dist/dspxBidAdapter.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/feedadBidAdapter.js +1 -1
  61. package/dist/finativeBidAdapter.js +1 -1
  62. package/dist/fintezaAnalyticsAdapter.js +1 -1
  63. package/dist/fledgeForGpt.js +1 -1
  64. package/dist/freewheel-sspBidAdapter.js +1 -1
  65. package/dist/ftrackIdSystem.js +1 -1
  66. package/dist/gdprEnforcement.js +1 -1
  67. package/dist/glimpseBidAdapter.js +1 -1
  68. package/dist/gmosspBidAdapter.js +1 -1
  69. package/dist/gnetBidAdapter.js +1 -1
  70. package/dist/goldbachBidAdapter.js +1 -1
  71. package/dist/gravitoIdSystem.js +1 -1
  72. package/dist/greenbidsAnalyticsAdapter.js +1 -0
  73. package/dist/gridBidAdapter.js +1 -1
  74. package/dist/gridNMBidAdapter.js +1 -1
  75. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  76. package/dist/growthCodeIdSystem.js +1 -1
  77. package/dist/gumgumBidAdapter.js +1 -1
  78. package/dist/h12mediaBidAdapter.js +1 -1
  79. package/dist/hadronAnalyticsAdapter.js +1 -1
  80. package/dist/hadronIdSystem.js +1 -1
  81. package/dist/hadronRtdProvider.js +1 -1
  82. package/dist/id5IdSystem.js +1 -1
  83. package/dist/idWardRtdProvider.js +1 -1
  84. package/dist/identityLinkIdSystem.js +1 -1
  85. package/dist/idxIdSystem.js +1 -1
  86. package/dist/imRtdProvider.js +1 -1
  87. package/dist/impactifyBidAdapter.js +1 -1
  88. package/dist/improvedigitalBidAdapter.js +1 -1
  89. package/dist/imuIdSystem.js +1 -1
  90. package/dist/inmarBidAdapter.js +1 -1
  91. package/dist/insticatorBidAdapter.js +1 -1
  92. package/dist/intentIqIdSystem.js +1 -1
  93. package/dist/invibesBidAdapter.js +1 -1
  94. package/dist/ixBidAdapter.js +1 -1
  95. package/dist/jixieBidAdapter.js +1 -1
  96. package/dist/justpremiumBidAdapter.js +1 -1
  97. package/dist/kargoBidAdapter.js +1 -1
  98. package/dist/konduitAnalyticsAdapter.js +1 -1
  99. package/dist/kueezBidAdapter.js +1 -1
  100. package/dist/kueezRtbBidAdapter.js +1 -1
  101. package/dist/kulturemediaBidAdapter.js +1 -1
  102. package/dist/lassoBidAdapter.js +1 -1
  103. package/dist/lifestreetBidAdapter.js +1 -1
  104. package/dist/liveIntentIdSystem.js +1 -1
  105. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  106. package/dist/logicadBidAdapter.js +1 -1
  107. package/dist/loglyliftBidAdapter.js +1 -1
  108. package/dist/lotamePanoramaIdSystem.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/mediafuseBidAdapter.js +1 -1
  113. package/dist/mediagoBidAdapter.js +1 -1
  114. package/dist/mediakeysBidAdapter.js +1 -1
  115. package/dist/mediasquareBidAdapter.js +1 -1
  116. package/dist/merkleIdSystem.js +1 -1
  117. package/dist/mgidBidAdapter.js +1 -1
  118. package/dist/mgidRtdProvider.js +1 -1
  119. package/dist/minutemediaBidAdapter.js +1 -1
  120. package/dist/minutemediaplusBidAdapter.js +1 -1
  121. package/dist/mwOpenLinkIdSystem.js +1 -1
  122. package/dist/naveggIdSystem.js +1 -1
  123. package/dist/nexx360BidAdapter.js +1 -1
  124. package/dist/nobidBidAdapter.js +1 -1
  125. package/dist/not-for-prod/prebid.js +205 -202
  126. package/dist/novatiqIdSystem.js +1 -1
  127. package/dist/oguryBidAdapter.js +1 -1
  128. package/dist/onetagBidAdapter.js +1 -1
  129. package/dist/ooloAnalyticsAdapter.js +1 -1
  130. package/dist/openxOrtbBidAdapter.js +1 -1
  131. package/dist/optidigitalBidAdapter.js +1 -1
  132. package/dist/ortbConverter.js +1 -1
  133. package/dist/outbrainBidAdapter.js +1 -1
  134. package/dist/parrableIdSystem.js +1 -1
  135. package/dist/permutiveRtdProvider.js +1 -1
  136. package/dist/pixfutureBidAdapter.js +1 -1
  137. package/dist/prebid-core.js +1 -1
  138. package/dist/prebidServerBidAdapter.js +1 -1
  139. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  140. package/dist/pubCommonId.js +1 -1
  141. package/dist/publinkIdSystem.js +1 -1
  142. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  143. package/dist/pubmaticBidAdapter.js +1 -1
  144. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  145. package/dist/pxyzBidAdapter.js +1 -1
  146. package/dist/quantcastBidAdapter.js +1 -1
  147. package/dist/quantcastIdSystem.js +1 -1
  148. package/dist/readpeakBidAdapter.js +1 -1
  149. package/dist/realvuAnalyticsAdapter.js +1 -1
  150. package/dist/relaidoBidAdapter.js +1 -1
  151. package/dist/rhythmoneBidAdapter.js +1 -1
  152. package/dist/riseBidAdapter.js +1 -1
  153. package/dist/roxotAnalyticsAdapter.js +1 -1
  154. package/dist/rtbhouseBidAdapter.js +1 -1
  155. package/dist/rtdModule.js +1 -1
  156. package/dist/rubiconAnalyticsAdapter.js +1 -1
  157. package/dist/rubiconBidAdapter.js +1 -1
  158. package/dist/seedingAllianceBidAdapter.js +1 -1
  159. package/dist/seedtagBidAdapter.js +1 -1
  160. package/dist/sharedIdSystem.js +1 -1
  161. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  162. package/dist/sharethroughBidAdapter.js +1 -1
  163. package/dist/shinezBidAdapter.js +1 -1
  164. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  165. package/dist/smaatoBidAdapter.js +1 -1
  166. package/dist/smartadserverBidAdapter.js +1 -1
  167. package/dist/smartxBidAdapter.js +1 -1
  168. package/dist/smilewantedBidAdapter.js +1 -1
  169. package/dist/sonobiBidAdapter.js +1 -1
  170. package/dist/sovrnAnalyticsAdapter.js +1 -1
  171. package/dist/sovrnBidAdapter.js +1 -1
  172. package/dist/sspBCBidAdapter.js +1 -1
  173. package/dist/staqAnalyticsAdapter.js +1 -1
  174. package/dist/stroeerCoreBidAdapter.js +1 -1
  175. package/dist/stvBidAdapter.js +1 -1
  176. package/dist/sublimeBidAdapter.js +1 -1
  177. package/dist/synacormediaBidAdapter.js +1 -1
  178. package/dist/taboolaBidAdapter.js +1 -1
  179. package/dist/targetVideoBidAdapter.js +1 -1
  180. package/dist/teadsBidAdapter.js +1 -1
  181. package/dist/teadsIdSystem.js +1 -1
  182. package/dist/trionBidAdapter.js +1 -1
  183. package/dist/tripleliftBidAdapter.js +1 -1
  184. package/dist/trustpidSystem.js +1 -1
  185. package/dist/ttdBidAdapter.js +1 -1
  186. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  187. package/dist/uid2IdSystem.js +1 -1
  188. package/dist/underdogmediaBidAdapter.js +1 -1
  189. package/dist/undertoneBidAdapter.js +1 -1
  190. package/dist/userId.js +1 -1
  191. package/dist/validationFpdModule.js +1 -1
  192. package/dist/vidazooBidAdapter.js +1 -1
  193. package/dist/videobyteBidAdapter.js +1 -1
  194. package/dist/vidoomyBidAdapter.js +1 -1
  195. package/dist/visxBidAdapter.js +1 -1
  196. package/dist/vuukleBidAdapter.js +1 -1
  197. package/dist/weboramaRtdProvider.js +1 -1
  198. package/dist/widespaceBidAdapter.js +1 -1
  199. package/dist/winrBidAdapter.js +1 -1
  200. package/dist/yahoosspBidAdapter.js +1 -1
  201. package/dist/yieldmoBidAdapter.js +1 -1
  202. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  203. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  204. package/dist/zeotapIdPlusIdSystem.js +1 -1
  205. package/dist/zeta_global_sspBidAdapter.js +1 -1
  206. package/libraries/ortbConverter/converter.js +3 -2
  207. package/modules/33acrossIdSystem.js +5 -2
  208. package/modules/adagioBidAdapter.js +3 -4
  209. package/modules/adkernelAdnAnalyticsAdapter.js +4 -2
  210. package/modules/admixerIdSystem.js +4 -2
  211. package/modules/adnuntiusBidAdapter.js +1 -1
  212. package/modules/adqueryBidAdapter.js +1 -1
  213. package/modules/adqueryIdSystem.js +2 -1
  214. package/modules/adrinoBidAdapter.js +24 -16
  215. package/modules/adriverIdSystem.js +3 -2
  216. package/modules/adsinteractiveBidAdapter.js +144 -0
  217. package/modules/adsinteractiveBidAdapter.md +31 -0
  218. package/modules/adyoulikeBidAdapter.js +2 -3
  219. package/modules/aidemBidAdapter.js +5 -0
  220. package/modules/airgridRtdProvider.js +4 -2
  221. package/modules/ajaBidAdapter.js +38 -16
  222. package/modules/akamaiDapRtdProvider.js +2 -1
  223. package/modules/amxBidAdapter.js +11 -9
  224. package/modules/appnexusBidAdapter.js +8 -8
  225. package/modules/apstreamBidAdapter.js +1 -1
  226. package/modules/atsAnalyticsAdapter.js +4 -2
  227. package/modules/audiencerunBidAdapter.js +9 -10
  228. package/modules/bedigitechBidAdapter.js +67 -0
  229. package/modules/bedigitechBidAdapter.md +32 -0
  230. package/modules/bluebillywigBidAdapter.js +2 -4
  231. package/modules/blueconicRtdProvider.js +2 -1
  232. package/modules/brightcomBidAdapter.js +0 -1
  233. package/modules/brightcomSSPBidAdapter.js +0 -1
  234. package/modules/browsiRtdProvider.js +4 -2
  235. package/modules/byDataAnalyticsAdapter.js +6 -3
  236. package/modules/concertBidAdapter.js +14 -7
  237. package/modules/connectadBidAdapter.js +2 -4
  238. package/modules/craftBidAdapter.js +29 -24
  239. package/modules/criteoBidAdapter.js +4 -2
  240. package/modules/criteoIdSystem.js +6 -2
  241. package/modules/czechAdIdSystem.js +3 -2
  242. package/modules/dacIdSystem.js +4 -3
  243. package/modules/deepintentDpesIdSystem.js +3 -2
  244. package/modules/discoveryBidAdapter.js +1 -1
  245. package/modules/dspxBidAdapter.js +223 -15
  246. package/modules/fintezaAnalyticsAdapter.js +5 -3
  247. package/modules/fledgeForGpt.js +54 -6
  248. package/modules/ftrackIdSystem.js +6 -6
  249. package/modules/gdprEnforcement.js +56 -68
  250. package/modules/glimpseBidAdapter.js +1 -4
  251. package/modules/gnetBidAdapter.js +1 -2
  252. package/modules/gravitoIdSystem.js +5 -3
  253. package/modules/greenbidsAnalyticsAdapter.js +181 -0
  254. package/modules/greenbidsAnalyticsAdapter.md +23 -0
  255. package/modules/gridBidAdapter.js +13 -7
  256. package/modules/growthCodeAnalyticsAdapter.js +3 -2
  257. package/modules/growthCodeIdSystem.js +3 -2
  258. package/modules/gumgumBidAdapter.js +7 -17
  259. package/modules/hadronAnalyticsAdapter.js +5 -3
  260. package/modules/hadronIdSystem.js +3 -1
  261. package/modules/hadronRtdProvider.js +4 -2
  262. package/modules/id5IdSystem.js +4 -2
  263. package/modules/idWardRtdProvider.js +2 -1
  264. package/modules/identityLinkIdSystem.js +5 -2
  265. package/modules/idxIdSystem.js +3 -2
  266. package/modules/imRtdProvider.js +3 -1
  267. package/modules/impactifyBidAdapter.js +2 -4
  268. package/modules/imuIdSystem.js +6 -3
  269. package/modules/insticatorBidAdapter.js +1 -1
  270. package/modules/intentIqIdSystem.js +3 -2
  271. package/modules/invibesBidAdapter.js +1 -1
  272. package/modules/ixBidAdapter.js +1 -1
  273. package/modules/jixieBidAdapter.js +3 -6
  274. package/modules/kargoBidAdapter.js +1 -1
  275. package/modules/kueezRtbBidAdapter.js +1 -1
  276. package/modules/liveIntentIdSystem.js +3 -2
  277. package/modules/lotamePanoramaIdSystem.js +3 -2
  278. package/modules/magniteAnalyticsAdapter.js +25 -6
  279. package/modules/mediafuseBidAdapter.js +1 -1
  280. package/modules/mediagoBidAdapter.js +1 -1
  281. package/modules/mediakeysBidAdapter.js +2 -3
  282. package/modules/merkleIdSystem.js +2 -1
  283. package/modules/mgidBidAdapter.js +1 -1
  284. package/modules/mgidRtdProvider.js +3 -1
  285. package/modules/minutemediaplusBidAdapter.js +1 -1
  286. package/modules/mwOpenLinkIdSystem.js +3 -2
  287. package/modules/naveggIdSystem.js +3 -2
  288. package/modules/nexx360BidAdapter.js +0 -1
  289. package/modules/nobidBidAdapter.js +1 -1
  290. package/modules/novatiqIdSystem.js +6 -3
  291. package/modules/onetagBidAdapter.js +1 -1
  292. package/modules/openxOrtbBidAdapter.js +19 -7
  293. package/modules/openxOrtbBidAdapter.md +6 -5
  294. package/modules/parrableIdSystem.js +4 -2
  295. package/modules/permutiveRtdProvider.js +2 -1
  296. package/modules/prebidServerBidAdapter/index.js +9 -3
  297. package/modules/prebidServerBidAdapter/ortbConverter.js +12 -2
  298. package/modules/prebidmanagerAnalyticsAdapter.js +3 -2
  299. package/modules/pubCommonId.js +6 -3
  300. package/modules/publinkIdSystem.js +2 -1
  301. package/modules/pubmaticAnalyticsAdapter.js +12 -1
  302. package/modules/pubmaticBidAdapter.js +192 -222
  303. package/modules/pubwiseAnalyticsAdapter.js +5 -3
  304. package/modules/quantcastBidAdapter.js +1 -1
  305. package/modules/quantcastIdSystem.js +5 -3
  306. package/modules/realvuAnalyticsAdapter.js +6 -3
  307. package/modules/roxotAnalyticsAdapter.js +5 -2
  308. package/modules/rtbhouseBidAdapter.js +5 -3
  309. package/modules/rtdModule/index.js +3 -0
  310. package/modules/rubiconAnalyticsAdapter.js +3 -2
  311. package/modules/rubiconBidAdapter.js +1 -0
  312. package/modules/sharedIdSystem.js +12 -9
  313. package/modules/sharethroughBidAdapter.js +1 -2
  314. package/modules/sigmoidAnalyticsAdapter.js +4 -2
  315. package/modules/smartadserverBidAdapter.js +2 -3
  316. package/modules/sovrnBidAdapter.js +2 -3
  317. package/modules/staqAnalyticsAdapter.js +5 -3
  318. package/modules/stroeerCoreBidAdapter.js +3 -2
  319. package/modules/taboolaBidAdapter.js +4 -2
  320. package/modules/teadsBidAdapter.js +1 -1
  321. package/modules/teadsIdSystem.js +2 -1
  322. package/modules/tripleliftBidAdapter.js +1 -1
  323. package/modules/trustpidSystem.js +3 -2
  324. package/modules/ttdBidAdapter.js +11 -5
  325. package/modules/uid2IdSystem.js +3 -2
  326. package/modules/undertoneBidAdapter.js +1 -0
  327. package/modules/userId/index.js +5 -2
  328. package/modules/validationFpdModule/index.js +3 -2
  329. package/modules/vidazooBidAdapter.js +14 -5
  330. package/modules/vidoomyBidAdapter.js +29 -1
  331. package/modules/weboramaRtdProvider.js +3 -1
  332. package/modules/yieldmoBidAdapter.js +2 -3
  333. package/modules/yuktamediaAnalyticsAdapter.js +4 -2
  334. package/modules/zeotapIdPlusIdSystem.js +3 -2
  335. package/modules/zeta_global_sspBidAdapter.js +3 -0
  336. package/package.json +1 -1
  337. package/plugins/eslint/validateImports.js +13 -14
  338. package/plugins/pbjsGlobals.js +3 -1
  339. package/src/activities/modules.js +5 -0
  340. package/src/adapterManager.js +4 -8
  341. package/src/adapters/bidderFactory.js +30 -16
  342. package/src/consentHandler.js +42 -0
  343. package/src/refererDetection.js +39 -21
  344. package/src/secureCreatives.js +2 -2
  345. package/src/storageManager.js +33 -47
  346. package/src/userSync.js +7 -4
  347. package/test/spec/modules/33acrossIdSystem_spec.js +1 -1
  348. package/test/spec/modules/adagioBidAdapter_spec.js +11 -17
  349. package/test/spec/modules/admixerIdSystem_spec.js +0 -3
  350. package/test/spec/modules/adnuntiusBidAdapter_spec.js +6 -6
  351. package/test/spec/modules/adrinoBidAdapter_spec.js +65 -34
  352. package/test/spec/modules/adsinteractiveBidAdapter_spec.js +207 -0
  353. package/test/spec/modules/adyoulikeBidAdapter_spec.js +13 -11
  354. package/test/spec/modules/aidemBidAdapter_spec.js +72 -8
  355. package/test/spec/modules/amxBidAdapter_spec.js +4 -1
  356. package/test/spec/modules/atsAnalyticsAdapter_spec.js +2 -2
  357. package/test/spec/modules/audiencerunBidAdapter_spec.js +8 -11
  358. package/test/spec/modules/bedigitechBidAdapter_spec.js +145 -0
  359. package/test/spec/modules/bluebillywigBidAdapter_spec.js +1 -3
  360. package/test/spec/modules/concertBidAdapter_spec.js +3 -8
  361. package/test/spec/modules/connectadBidAdapter_spec.js +11 -3
  362. package/test/spec/modules/criteoBidAdapter_spec.js +29 -0
  363. package/test/spec/modules/criteoIdSystem_spec.js +38 -0
  364. package/test/spec/modules/datablocksBidAdapter_spec.js +0 -1
  365. package/test/spec/modules/dspxBidAdapter_spec.js +184 -13
  366. package/test/spec/modules/fledge_spec.js +173 -2
  367. package/test/spec/modules/gdprEnforcement_spec.js +134 -164
  368. package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +418 -0
  369. package/test/spec/modules/gridBidAdapter_spec.js +9 -5
  370. package/test/spec/modules/growthCodeIdSystem_spec.js +2 -1
  371. package/test/spec/modules/id5IdSystem_spec.js +41 -4
  372. package/test/spec/modules/identityLinkIdSystem_spec.js +2 -2
  373. package/test/spec/modules/improvedigitalBidAdapter_spec.js +10 -3
  374. package/test/spec/modules/jixieBidAdapter_spec.js +42 -60
  375. package/test/spec/modules/mediakeysBidAdapter_spec.js +12 -16
  376. package/test/spec/modules/openxOrtbBidAdapter_spec.js +96 -11
  377. package/test/spec/modules/prebidServerBidAdapter_spec.js +68 -2
  378. package/test/spec/modules/publinkIdSystem_spec.js +3 -2
  379. package/test/spec/modules/pubmaticBidAdapter_spec.js +67 -10
  380. package/test/spec/modules/realTimeDataModule_spec.js +22 -0
  381. package/test/spec/modules/realvuAnalyticsAdapter_spec.js +0 -1
  382. package/test/spec/modules/relaidoBidAdapter_spec.js +5 -5
  383. package/test/spec/modules/rubiconBidAdapter_spec.js +2 -1
  384. package/test/spec/modules/sharethroughBidAdapter_spec.js +97 -21
  385. package/test/spec/modules/smartadserverBidAdapter_spec.js +74 -12
  386. package/test/spec/modules/sovrnBidAdapter_spec.js +25 -6
  387. package/test/spec/modules/stroeerCoreBidAdapter_spec.js +13 -18
  388. package/test/spec/modules/taboolaBidAdapter_spec.js +101 -0
  389. package/test/spec/modules/ttdBidAdapter_spec.js +25 -7
  390. package/test/spec/modules/userId_spec.js +68 -0
  391. package/test/spec/modules/vidazooBidAdapter_spec.js +13 -0
  392. package/test/spec/modules/vidoomyBidAdapter_spec.js +33 -0
  393. package/test/spec/modules/yieldmoBidAdapter_spec.js +18 -2
  394. package/test/spec/modules/zeotapIdPlusIdSystem_spec.js +3 -2
  395. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +8 -0
  396. package/test/spec/refererDetection_spec.js +56 -1
  397. package/test/spec/unit/core/adapterManager_spec.js +21 -58
  398. package/test/spec/unit/core/bidderFactory_spec.js +28 -10
  399. package/test/spec/unit/core/consentHandler_spec.js +29 -1
  400. package/test/spec/unit/core/storageManager_spec.js +31 -21
  401. package/test/spec/userSync_spec.js +2 -1
@@ -24,8 +24,10 @@ import {find, includes} from '../src/polyfill.js';
24
24
  import {getGlobal} from '../src/prebidGlobal.js';
25
25
  import * as events from '../src/events.js';
26
26
  import CONSTANTS from '../src/constants.json';
27
+ import {MODULE_TYPE_RTD} from '../src/activities/modules.js';
28
+ const MODULE_NAME = 'browsi';
27
29
 
28
- const storage = getStorageManager();
30
+ const storage = getStorageManager({moduleType: MODULE_TYPE_RTD, moduleName: MODULE_NAME});
29
31
 
30
32
  /** @type {ModuleParams} */
31
33
  let _moduleParams = {};
@@ -336,7 +338,7 @@ export const browsiSubmodule = {
336
338
  * used to link submodule with realTimeData
337
339
  * @type {string}
338
340
  */
339
- name: 'browsi',
341
+ name: MODULE_NAME,
340
342
  /**
341
343
  * get data and send back to realTimeData module
342
344
  * @function
@@ -5,9 +5,10 @@ import enc from 'crypto-js/enc-utf8';
5
5
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
6
6
  import CONSTANTS from '../src/constants.json';
7
7
  import adapterManager from '../src/adapterManager.js';
8
- import { getStorageManager } from '../src/storageManager.js';
8
+ import {getStorageManager} from '../src/storageManager.js';
9
9
  import { auctionManager } from '../src/auctionManager.js';
10
10
  import { ajax } from '../src/ajax.js';
11
+ import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
11
12
 
12
13
  const versionCode = '4.4.1'
13
14
  const secretKey = 'bydata@123456'
@@ -16,7 +17,9 @@ const DEFAULT_EVENT_URL = 'https://pbjs-stream.bydata.com/topics/prebid'
16
17
  const analyticsType = 'endpoint'
17
18
  const isBydata = isKeyInUrl('bydata_debug')
18
19
  const adunitsMap = {}
19
- const storage = getStorageManager();
20
+ const MODULE_CODE = 'bydata';
21
+ const storage = getStorageManager({moduleType: MODULE_TYPE_ANALYTICS, moduleName: MODULE_CODE});
22
+
20
23
  let initOptions = {}
21
24
  var payload = {}
22
25
  var winPayload = {}
@@ -391,7 +394,7 @@ function sendDataOnKf(dataObj) {
391
394
 
392
395
  adapterManager.registerAnalyticsAdapter({
393
396
  adapter: ascAdapter,
394
- code: 'bydata'
397
+ code: MODULE_CODE,
395
398
  });
396
399
 
397
400
  function _logInfo(message, meta) {
@@ -42,9 +42,9 @@ export const spec = {
42
42
  pageUrl: bidderRequest.refererInfo.page,
43
43
  screen: [window.screen.width, window.screen.height].join('x'),
44
44
  debug: debugTurnedOn(),
45
- uid: getUid(bidderRequest),
45
+ uid: getUid(bidderRequest, validBidRequests),
46
46
  optedOut: hasOptedOutOfPersonalization(),
47
- adapterVersion: '1.1.1',
47
+ adapterVersion: '1.2.0',
48
48
  uspConsent: bidderRequest.uspConsent,
49
49
  gdprConsent: bidderRequest.gdprConsent,
50
50
  gppConsent: bidderRequest.gppConsent,
@@ -158,16 +158,23 @@ export const storage = getStorageManager({bidderCode: BIDDER_CODE});
158
158
  /**
159
159
  * Check or generate a UID for the current user.
160
160
  */
161
- function getUid(bidderRequest) {
161
+ function getUid(bidderRequest, validBidRequests) {
162
162
  if (hasOptedOutOfPersonalization() || !consentAllowsPpid(bidderRequest)) {
163
163
  return false;
164
164
  }
165
165
 
166
- const sharedId = deepAccess(bidderRequest, 'userId._sharedid.id');
166
+ /**
167
+ * check for shareId or pubCommonId before generating a new one
168
+ * sharedId: @see https://docs.prebid.org/dev-docs/modules/userId.html
169
+ * pubCid (no longer supported): @see https://docs.prebid.org/dev-docs/modules/pubCommonId.html#adapter-integration
170
+ */
171
+ const sharedId =
172
+ deepAccess(validBidRequests[0], 'userId.sharedid.id') ||
173
+ deepAccess(validBidRequests[0], 'userId.pubcid')
174
+ const pubCid = deepAccess(validBidRequests[0], 'crumbs.pubcid');
167
175
 
168
- if (sharedId) {
169
- return sharedId;
170
- }
176
+ if (sharedId) return sharedId;
177
+ if (pubCid) return pubCid;
171
178
 
172
179
  const LEGACY_CONCERT_UID_KEY = 'c_uid';
173
180
  const CONCERT_UID_KEY = 'vmconcert_uid';
@@ -2,8 +2,6 @@ import { deepSetValue, convertTypes, tryAppendQueryString, logWarn } from '../sr
2
2
  import { registerBidder } from '../src/adapters/bidderFactory.js';
3
3
  import { BANNER } from '../src/mediaTypes.js'
4
4
  import {config} from '../src/config.js';
5
- import {createEidsArray} from './userId/eids.js';
6
-
7
5
  const BIDDER_CODE = 'connectad';
8
6
  const BIDDER_CODE_ALIAS = 'connectadrealtime';
9
7
  const ENDPOINT_URL = 'https://i.connectad.io/api/v2';
@@ -73,8 +71,8 @@ export const spec = {
73
71
  }
74
72
 
75
73
  // EIDS Support
76
- if (validBidRequests[0].userId) {
77
- deepSetValue(data, 'user.ext.eids', createEidsArray(validBidRequests[0].userId));
74
+ if (validBidRequests[0].userIdAsEids) {
75
+ deepSetValue(data, 'user.ext.eids', validBidRequests[0].userIdAsEids);
78
76
  }
79
77
 
80
78
  validBidRequests.map(bid => {
@@ -33,9 +33,9 @@ export const spec = {
33
33
  buildRequests: function(bidRequests, bidderRequest) {
34
34
  // convert Native ORTB definition to old-style prebid native definition
35
35
  bidRequests = convertOrtbRequestToProprietaryNative(bidRequests);
36
-
36
+ const bidRequest = bidRequests[0];
37
37
  const tags = bidRequests.map(bidToTag);
38
- const schain = bidRequests[0].schain;
38
+ const schain = bidRequest.schain;
39
39
  const payload = {
40
40
  tags: [...tags],
41
41
  ua: navigator.userAgent,
@@ -44,26 +44,31 @@ export const spec = {
44
44
  },
45
45
  schain: schain
46
46
  };
47
- if (bidderRequest && bidderRequest.gdprConsent) {
48
- payload.gdpr_consent = {
49
- consent_string: bidderRequest.gdprConsent.consentString,
50
- consent_required: bidderRequest.gdprConsent.gdprApplies
51
- };
52
- }
53
- if (bidderRequest && bidderRequest.uspConsent) {
54
- payload.us_privacy = bidderRequest.uspConsent;
55
- }
56
- if (bidderRequest && bidderRequest.refererInfo) {
57
- let refererinfo = {
58
- // TODO: this collects everything it finds, except for the canonical URL
59
- rd_ref: bidderRequest.refererInfo.topmostLocation,
60
- rd_top: bidderRequest.refererInfo.reachedTop,
61
- rd_ifs: bidderRequest.refererInfo.numIframes,
62
- };
63
- if (bidderRequest.refererInfo.stack) {
64
- refererinfo.rd_stk = bidderRequest.refererInfo.stack.join(',');
47
+ if (bidderRequest) {
48
+ if (bidderRequest.gdprConsent) {
49
+ payload.gdpr_consent = {
50
+ consent_string: bidderRequest.gdprConsent.consentString,
51
+ consent_required: bidderRequest.gdprConsent.gdprApplies
52
+ };
53
+ }
54
+ if (bidderRequest.uspConsent) {
55
+ payload.us_privacy = bidderRequest.uspConsent;
56
+ }
57
+ if (bidderRequest.refererInfo) {
58
+ let refererinfo = {
59
+ // TODO: this collects everything it finds, except for the canonical URL
60
+ rd_ref: bidderRequest.refererInfo.topmostLocation,
61
+ rd_top: bidderRequest.refererInfo.reachedTop,
62
+ rd_ifs: bidderRequest.refererInfo.numIframes,
63
+ };
64
+ if (bidderRequest.refererInfo.stack) {
65
+ refererinfo.rd_stk = bidderRequest.refererInfo.stack.join(',');
66
+ }
67
+ payload.referrer_detection = refererinfo;
68
+ }
69
+ if (bidRequest.userId) {
70
+ payload.userId = bidRequest.userId
65
71
  }
66
- payload.referrer_detection = refererinfo;
67
72
  }
68
73
  const request = formatRequest(payload, bidderRequest);
69
74
  return request;
@@ -106,7 +111,7 @@ export const spec = {
106
111
  params = convertTypes({
107
112
  'sitekey': 'string',
108
113
  'placementId': 'string',
109
- 'keywords': transformBidderParamKeywords
114
+ 'keywords': transformBidderParamKeywords,
110
115
  }, params);
111
116
  if (isOpenRtb) {
112
117
  if (isPopulatedArray(params.keywords)) {
@@ -148,11 +153,11 @@ function formatRequest(payload, bidderRequest) {
148
153
  withCredentials: false
149
154
  };
150
155
  }
151
-
156
+ const baseUrl = payload.tags[0].url || URL_BASE;
152
157
  const payloadString = JSON.stringify(payload);
153
158
  return {
154
159
  method: 'POST',
155
- url: `${URL_BASE}/${payload.tags[0].sitekey}`,
160
+ url: `${baseUrl}/${payload.tags[0].sitekey}`,
156
161
  data: payloadString,
157
162
  bidderRequest,
158
163
  options
@@ -16,7 +16,7 @@ const BIDDER_CODE = 'criteo';
16
16
  const CDB_ENDPOINT = 'https://bidder.criteo.com/cdb';
17
17
  const PROFILE_ID_INLINE = 207;
18
18
  export const PROFILE_ID_PUBLISHERTAG = 185;
19
- export const storage = getStorageManager({ gvlid: GVLID, bidderCode: BIDDER_CODE });
19
+ export const storage = getStorageManager({ bidderCode: BIDDER_CODE });
20
20
  const LOG_PREFIX = 'Criteo: ';
21
21
 
22
22
  /*
@@ -418,7 +418,9 @@ function buildCdbRequest(context, bidRequests, bidderRequest) {
418
418
  ext: bidderRequest.publisherExt,
419
419
  },
420
420
  regs: {
421
- coppa: bidderRequest.coppa === true ? 1 : (bidderRequest.coppa === false ? 0 : undefined)
421
+ coppa: bidderRequest.coppa === true ? 1 : (bidderRequest.coppa === false ? 0 : undefined),
422
+ gpp: bidderRequest.ortb2?.regs?.gpp,
423
+ gpp_sid: bidderRequest.ortb2?.regs?.gpp_sid
422
424
  },
423
425
  slots: bidRequests.map(bidRequest => {
424
426
  networkId = bidRequest.params.networkId || networkId;
@@ -9,11 +9,12 @@ import { timestamp, parseUrl, triggerPixel, logError } from '../src/utils.js';
9
9
  import { ajax } from '../src/ajax.js';
10
10
  import { getRefererInfo } from '../src/refererDetection.js';
11
11
  import { submodule } from '../src/hook.js';
12
- import { getStorageManager } from '../src/storageManager.js';
12
+ import {getStorageManager} from '../src/storageManager.js';
13
+ import {MODULE_TYPE_UID} from '../src/activities/modules.js';
13
14
 
14
15
  const gvlid = 91;
15
16
  const bidderCode = 'criteo';
16
- export const storage = getStorageManager({ gvlid: gvlid, moduleName: bidderCode });
17
+ export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: bidderCode});
17
18
 
18
19
  const bididStorageKey = 'cto_bidid';
19
20
  const bundleStorageKey = 'cto_bundle';
@@ -102,6 +103,9 @@ function callSyncPixel(domain, pixel) {
102
103
  saveOnAllStorages(pixel.storageKeyName, jsonResponse[pixel.bundlePropertyName], domain);
103
104
  }
104
105
  }
106
+ },
107
+ error: error => {
108
+ logError(`criteoIdSystem: unable to sync user id`, error);
105
109
  }
106
110
  },
107
111
  undefined,
@@ -6,10 +6,11 @@
6
6
  */
7
7
 
8
8
  import { submodule } from '../src/hook.js'
9
- import { getStorageManager } from '../src/storageManager.js'
9
+ import {getStorageManager} from '../src/storageManager.js';
10
+ import {MODULE_TYPE_UID} from '../src/activities/modules.js';
10
11
 
11
12
  // Returns StorageManager
12
- export const storage = getStorageManager({ gvlid: 570, moduleName: 'czechAdId' })
13
+ export const storage = getStorageManager({ moduleType: MODULE_TYPE_UID, moduleName: 'czechAdId' })
13
14
 
14
15
  // Returns the id string from either cookie or localstorage
15
16
  const readId = () => { return storage.getCookie('czaid') || storage.getDataFromLocalStorage('czaid') }
@@ -19,8 +19,9 @@ import {
19
19
  import {
20
20
  getStorageManager
21
21
  } from '../src/storageManager.js';
22
-
23
- export const storage = getStorageManager();
22
+ import {MODULE_TYPE_UID} from '../src/activities/modules.js';
23
+ const MODULE_NAME = 'dacId';
24
+ export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME});
24
25
 
25
26
  export const FUUID_COOKIE_NAME = '_a1_f';
26
27
  export const AONEID_COOKIE_NAME = '_a1_d';
@@ -116,7 +117,7 @@ export const dacIdSystemSubmodule = {
116
117
  * used to link submodule with config
117
118
  * @type {string}
118
119
  */
119
- name: 'dacId',
120
+ name: MODULE_NAME,
120
121
 
121
122
  /**
122
123
  * decode the stored id value for passing to bid requests
@@ -6,10 +6,11 @@
6
6
  */
7
7
 
8
8
  import { submodule } from '../src/hook.js';
9
- import { getStorageManager } from '../src/storageManager.js';
9
+ import {getStorageManager} from '../src/storageManager.js';
10
+ import {MODULE_TYPE_UID} from '../src/activities/modules.js';
10
11
 
11
12
  const MODULE_NAME = 'deepintentId';
12
- export const storage = getStorageManager({gvlid: null, moduleName: MODULE_NAME});
13
+ export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME});
13
14
 
14
15
  /** @type {Submodule} */
15
16
  export const deepintentDpesSubmodule = {
@@ -6,7 +6,7 @@ import { BANNER, NATIVE } from '../src/mediaTypes.js';
6
6
  const BIDDER_CODE = 'discovery';
7
7
  const ENDPOINT_URL = 'https://rtb-jp.mediago.io/api/bid?tn=';
8
8
  const TIME_TO_LIVE = 500;
9
- const storage = getStorageManager();
9
+ const storage = getStorageManager({bidderCode: BIDDER_CODE});
10
10
  let globals = {};
11
11
  let itemMaps = {};
12
12
  const MEDIATYPE = [BANNER, NATIVE];
@@ -1,12 +1,17 @@
1
- import { deepAccess } from '../src/utils.js';
1
+ import {deepAccess, getBidIdParameter, logError, logMessage, logWarn, isFn} from '../src/utils.js';
2
2
  import {config} from '../src/config.js';
3
3
  import {registerBidder} from '../src/adapters/bidderFactory.js';
4
- import { BANNER, VIDEO } from '../src/mediaTypes.js';
4
+ import {BANNER, VIDEO} from '../src/mediaTypes.js';
5
+ import {Renderer} from '../src/Renderer.js';
6
+ import {includes} from '../src/polyfill.js';
5
7
 
6
8
  const BIDDER_CODE = 'dspx';
7
9
  const ENDPOINT_URL = 'https://buyer.dspx.tv/request/';
8
10
  const ENDPOINT_URL_DEV = 'https://dcbuyer.dspx.tv/request/';
9
11
  const GVLID = 602;
12
+ const VIDEO_ORTB_PARAMS = ['mimes', 'minduration', 'maxduration', 'protocols', 'w', 'h', 'startdelay', 'placement', 'linearity', 'skip', 'skipmin',
13
+ 'skipafter', 'sequence', 'battr', 'maxextended', 'minbitrate', 'maxbitrate', 'boxingallowed', 'playbackmethod', 'playbackend', 'delivery', 'pos', 'companionad',
14
+ 'api', 'companiontype', 'ext'];
10
15
 
11
16
  export const spec = {
12
17
  code: BIDDER_CODE,
@@ -17,24 +22,34 @@ export const spec = {
17
22
  return !!(bid.params.placement);
18
23
  },
19
24
  buildRequests: function(validBidRequests, bidderRequest) {
25
+ let payload = {};
20
26
  return validBidRequests.map(bidRequest => {
21
27
  const params = bidRequest.params;
22
28
 
23
- const placementId = params.placement;
24
29
  const rnd = Math.floor(Math.random() * 99999999999);
25
30
  const referrer = bidderRequest.refererInfo.page;
26
31
  const bidId = bidRequest.bidId;
27
- const isDev = params.devMode || false;
28
32
  const pbcode = bidRequest.adUnitCode || false; // div id
29
33
  const auctionId = bidRequest.auctionId || false;
34
+ const isDev = params.devMode || false;
30
35
 
31
36
  let endpoint = isDev ? ENDPOINT_URL_DEV : ENDPOINT_URL;
37
+ let placementId = params.placement;
38
+
39
+ // dev config
40
+ if (isDev && params.dev) {
41
+ endpoint = params.dev.endpoint || endpoint;
42
+ placementId = params.dev.placement || placementId;
43
+ if (params.dev.pfilter !== undefined) {
44
+ params.pfilter = params.dev.pfilter;
45
+ }
46
+ }
32
47
 
33
48
  let mediaTypesInfo = getMediaTypesInfo(bidRequest);
34
49
  let type = isBannerRequest(bidRequest) ? BANNER : VIDEO;
35
50
  let sizes = mediaTypesInfo[type];
36
51
 
37
- let payload = {
52
+ payload = {
38
53
  _f: 'auto',
39
54
  alternative: 'prebid_js',
40
55
  inventory_item_id: placementId,
@@ -47,10 +62,6 @@ export const spec = {
47
62
  pbver: '$prebid.version$'
48
63
  };
49
64
 
50
- if (mediaTypesInfo[VIDEO] !== undefined && params.vastFormat !== undefined) {
51
- payload.vf = params.vastFormat;
52
- }
53
-
54
65
  if (params.pfilter !== undefined) {
55
66
  payload.pfilter = params.pfilter;
56
67
  }
@@ -79,11 +90,49 @@ export const spec = {
79
90
  payload.prebidDevMode = 1;
80
91
  }
81
92
 
82
- if (bidRequest.userId && bidRequest.userId.netId) {
83
- payload.did_netid = bidRequest.userId.netId;
93
+ // fill userId params
94
+ if (bidRequest.userId) {
95
+ if (bidRequest.userId.netId) {
96
+ payload.did_netid = bidRequest.userId.netId;
97
+ }
98
+ if (bidRequest.userId.id5id) {
99
+ payload.did_id5 = bidRequest.userId.id5id.uid || '0';
100
+ if (bidRequest.userId.id5id.ext.linkType !== undefined) {
101
+ payload.did_id5_linktype = bidRequest.userId.id5id.ext.linkType;
102
+ }
103
+ }
104
+ let uId2 = deepAccess(bidRequest, 'userId.uid2.id');
105
+ if (uId2) {
106
+ payload.did_uid2 = uId2;
107
+ }
108
+ let sharedId = deepAccess(bidRequest, 'userId.sharedid.id');
109
+ if (sharedId) {
110
+ payload.did_sharedid = sharedId;
111
+ }
112
+ let pubcId = deepAccess(bidRequest, 'userId.pubcid');
113
+ if (pubcId) {
114
+ payload.did_pubcid = pubcId;
115
+ }
116
+ let crumbsPubcid = deepAccess(bidRequest, 'crumbs.pubcid');
117
+ if (crumbsPubcid) {
118
+ payload.did_cpubcid = crumbsPubcid;
119
+ }
120
+ }
121
+
122
+ if (bidRequest.schain) {
123
+ payload.schain = bidRequest.schain;
84
124
  }
85
- if (bidRequest.userId && bidRequest.userId.uid2) {
86
- payload.did_uid2 = bidRequest.userId.uid2;
125
+
126
+ if (payload.pfilter === undefined || !payload.pfilter.floorprice) {
127
+ let bidFloor = getBidFloor(bidRequest);
128
+ if (bidFloor > 0) {
129
+ if (payload.pfilter !== undefined) {
130
+ payload.pfilter.floorprice = bidFloor;
131
+ } else {
132
+ payload.pfilter = { 'floorprice': bidFloor };
133
+ }
134
+ // payload.bidFloor = bidFloor;
135
+ }
87
136
  }
88
137
 
89
138
  if (auctionId) {
@@ -94,6 +143,17 @@ export const spec = {
94
143
  }
95
144
 
96
145
  payload.media_types = convertMediaInfoForRequest(mediaTypesInfo);
146
+ if (mediaTypesInfo[VIDEO] !== undefined) {
147
+ payload.vctx = getVideoContext(bidRequest);
148
+ if (params.vastFormat !== undefined) {
149
+ payload.vf = params.vastFormat;
150
+ }
151
+ payload.vpl = {};
152
+ let videoParams = deepAccess(bidRequest, 'mediaTypes.video');
153
+ Object.keys(videoParams)
154
+ .filter(key => includes(VIDEO_ORTB_PARAMS, key))
155
+ .forEach(key => payload.vpl[key] = videoParams[key]);
156
+ }
97
157
 
98
158
  return {
99
159
  method: 'GET',
@@ -103,6 +163,8 @@ export const spec = {
103
163
  });
104
164
  },
105
165
  interpretResponse: function(serverResponse, bidRequest) {
166
+ logMessage('DSPx: serverResponse', serverResponse);
167
+ logMessage('DSPx: bidRequest', bidRequest);
106
168
  const bidResponses = [];
107
169
  const response = serverResponse.body;
108
170
  const crid = response.crid || 0;
@@ -126,13 +188,33 @@ export const spec = {
126
188
  advertiserDomains: response.adomain || []
127
189
  }
128
190
  };
191
+
192
+ if (response.vastUrl) {
193
+ bidResponse.vastUrl = response.vastUrl;
194
+ bidResponse.mediaType = 'video';
195
+ }
129
196
  if (response.vastXml) {
130
197
  bidResponse.vastXml = response.vastXml;
131
198
  bidResponse.mediaType = 'video';
132
- } else {
199
+ }
200
+ if (response.renderer) {
201
+ bidResponse.renderer = newRenderer(bidRequest, response);
202
+ }
203
+
204
+ if (response.videoCacheKey) {
205
+ bidResponse.videoCacheKey = response.videoCacheKey;
206
+ }
207
+
208
+ if (response.adTag) {
133
209
  bidResponse.ad = response.adTag;
134
210
  }
135
211
 
212
+ if (response.bid_appendix) {
213
+ Object.keys(response.bid_appendix).forEach(fieldName => {
214
+ bidResponse[fieldName] = response.bid_appendix[fieldName];
215
+ });
216
+ }
217
+
136
218
  bidResponses.push(bidResponse);
137
219
  }
138
220
  return bidResponses;
@@ -217,12 +299,22 @@ function isVideoRequest(bid) {
217
299
  * Get video sizes
218
300
  *
219
301
  * @param {BidRequest} bid - Bid request generated from ad slots
220
- * @returns {object} True if it's a video bid
302
+ * @returns {object}
221
303
  */
222
304
  function getVideoSizes(bid) {
223
305
  return parseSizes(deepAccess(bid, 'mediaTypes.video.playerSize') || bid.sizes);
224
306
  }
225
307
 
308
+ /**
309
+ * Get video context
310
+ *
311
+ * @param {BidRequest} bid - Bid request generated from ad slots
312
+ * @returns {object}
313
+ */
314
+ function getVideoContext(bid) {
315
+ return deepAccess(bid, 'mediaTypes.video.context') || 'unknown';
316
+ }
317
+
226
318
  /**
227
319
  * Get banner sizes
228
320
  *
@@ -296,4 +388,120 @@ function getMediaTypesInfo(bid) {
296
388
  return mediaTypesInfo;
297
389
  }
298
390
 
391
+ /**
392
+ * Get Bid Floor
393
+ * @param bid
394
+ * @returns {number|*}
395
+ */
396
+ function getBidFloor(bid) {
397
+ if (!isFn(bid.getFloor)) {
398
+ return deepAccess(bid, 'params.bidfloor', 0);
399
+ }
400
+
401
+ try {
402
+ const bidFloor = bid.getFloor({
403
+ currency: 'EUR',
404
+ mediaType: '*',
405
+ size: '*',
406
+ });
407
+ return bidFloor.floor;
408
+ } catch (_) {
409
+ return 0
410
+ }
411
+ }
412
+
413
+ /**
414
+ * Create a new renderer
415
+ *
416
+ * @param bidRequest
417
+ * @param response
418
+ * @returns {Renderer}
419
+ */
420
+ function newRenderer(bidRequest, response) {
421
+ logMessage('DSPx: newRenderer', bidRequest, response);
422
+ const renderer = Renderer.install({
423
+ id: response.renderer.id || response.bid_id,
424
+ url: (bidRequest.params && bidRequest.params.rendererUrl) || response.renderer.url,
425
+ config: response.renderer.options || deepAccess(bidRequest, 'renderer.options'),
426
+ loaded: false
427
+ });
428
+
429
+ try {
430
+ renderer.setRender(outstreamRender);
431
+ } catch (err) {
432
+ logWarn('Prebid Error calling setRender on renderer', err);
433
+ }
434
+ return renderer;
435
+ }
436
+
437
+ /**
438
+ * Outstream Render Function
439
+ *
440
+ * @param bid
441
+ */
442
+ function outstreamRender(bid) {
443
+ logMessage('DSPx: outstreamRender bid:', bid);
444
+ const embedCode = createOutstreamEmbedCode(bid);
445
+ try {
446
+ const inIframe = getBidIdParameter('iframe', bid.renderer.config);
447
+ if (inIframe && window.document.getElementById(inIframe).nodeName === 'IFRAME') {
448
+ const iframe = window.document.getElementById(inIframe);
449
+ let framedoc = iframe.contentDocument || (iframe.contentWindow && iframe.contentWindow.document);
450
+ framedoc.body.appendChild(embedCode);
451
+ if (typeof window.dspxRender === 'function') {
452
+ window.dspxRender(bid);
453
+ } else {
454
+ logError('[dspx][renderer] Error: dspxRender function is not found');
455
+ }
456
+ return;
457
+ }
458
+
459
+ const slot = getBidIdParameter('slot', bid.renderer.config) || bid.adUnitCode;
460
+ if (slot && window.document.getElementById(slot)) {
461
+ window.document.getElementById(slot).appendChild(embedCode);
462
+ if (typeof window.dspxRender === 'function') {
463
+ window.dspxRender(bid);
464
+ } else {
465
+ logError('[dspx][renderer] Error: dspxRender function is not found');
466
+ }
467
+ } else if (slot) {
468
+ logError('[dspx][renderer] Error: slot not found');
469
+ }
470
+ } catch (err) {
471
+ logError('[dspx][renderer] Error:' + err.message)
472
+ }
473
+ }
474
+
475
+ /**
476
+ * create Outstream Embed Code Node
477
+ *
478
+ * @param bid
479
+ * @returns {DocumentFragment}
480
+ */
481
+ function createOutstreamEmbedCode(bid) {
482
+ const fragment = window.document.createDocumentFragment();
483
+ let div = window.document.createElement('div');
484
+ div.innerHTML = deepAccess(bid, 'renderer.config.code', '');
485
+ fragment.appendChild(div);
486
+
487
+ // run scripts
488
+ var scripts = div.getElementsByTagName('script');
489
+ var scriptsClone = [];
490
+ for (var idx = 0; idx < scripts.length; idx++) {
491
+ scriptsClone.push(scripts[idx]);
492
+ }
493
+ for (var i = 0; i < scriptsClone.length; i++) {
494
+ var currentScript = scriptsClone[i];
495
+ var s = document.createElement('script');
496
+ for (var j = 0; j < currentScript.attributes.length; j++) {
497
+ var a = currentScript.attributes[j];
498
+ s.setAttribute(a.name, a.value);
499
+ }
500
+ s.appendChild(document.createTextNode(currentScript.innerHTML));
501
+ currentScript.parentNode.replaceChild(s, currentScript);
502
+ }
503
+
504
+ return fragment;
505
+ }
506
+
299
507
  registerBidder(spec);
@@ -2,10 +2,12 @@ import { parseUrl, logError } from '../src/utils.js';
2
2
  import { ajax } from '../src/ajax.js';
3
3
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
4
4
  import adapterManager from '../src/adapterManager.js';
5
- import { getStorageManager } from '../src/storageManager.js';
5
+ import {getStorageManager} from '../src/storageManager.js';
6
6
  import CONSTANTS from '../src/constants.json';
7
+ import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
7
8
 
8
- const storage = getStorageManager();
9
+ const MODULE_CODE = 'finteza';
10
+ const storage = getStorageManager({moduleType: MODULE_TYPE_ANALYTICS, moduleName: MODULE_CODE});
9
11
 
10
12
  const ANALYTICS_TYPE = 'endpoint';
11
13
  const FINTEZA_HOST = 'https://content.mql5.com/tr';
@@ -439,7 +441,7 @@ fntzAnalyticsAdapter.enableAnalytics = function (config) {
439
441
 
440
442
  adapterManager.registerAnalyticsAdapter({
441
443
  adapter: fntzAnalyticsAdapter,
442
- code: 'finteza'
444
+ code: MODULE_CODE,
443
445
  });
444
446
 
445
447
  export default fntzAnalyticsAdapter;