prebid.js 7.8.0 → 7.11.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 (483) hide show
  1. package/README.md +0 -2
  2. package/RELEASE_SCHEDULE.md +1 -1
  3. package/allowedModules.js +3 -0
  4. package/babelConfig.js +10 -4
  5. package/dist/33acrossBidAdapter.js +1 -1
  6. package/dist/adWMGAnalyticsAdapter.js +1 -1
  7. package/dist/adagioAnalyticsAdapter.js +1 -1
  8. package/dist/adagioBidAdapter.js +1 -1
  9. package/dist/adbookpspBidAdapter.js +1 -1
  10. package/dist/adgenerationBidAdapter.js +1 -1
  11. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  12. package/dist/adkernelBidAdapter.js +1 -1
  13. package/dist/adlooxAdServerVideo.js +1 -1
  14. package/dist/adlooxAnalyticsAdapter.js +1 -1
  15. package/dist/adlooxRtdProvider.js +1 -1
  16. package/dist/adnuntiusBidAdapter.js +1 -1
  17. package/dist/adomikAnalyticsAdapter.js +1 -1
  18. package/dist/adrelevantisBidAdapter.js +1 -1
  19. package/dist/adtelligentBidAdapter.js +1 -1
  20. package/dist/adtrgtmeBidAdapter.js +1 -0
  21. package/dist/adxcgAnalyticsAdapter.js +1 -1
  22. package/dist/adxcgBidAdapter.js +1 -1
  23. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  24. package/dist/adyoulikeBidAdapter.js +1 -1
  25. package/dist/ajaBidAdapter.js +1 -1
  26. package/dist/amxBidAdapter.js +1 -1
  27. package/dist/amxIdSystem.js +1 -1
  28. package/dist/analyticsAdapter.js +1 -0
  29. package/dist/andBeyondMediaBidAdapter.js +1 -0
  30. package/dist/aniviewBidAdapter.js +1 -1
  31. package/dist/appierAnalyticsAdapter.js +1 -1
  32. package/dist/appnexusBidAdapter.js +1 -1
  33. package/dist/asoBidAdapter.js +1 -1
  34. package/dist/atsAnalyticsAdapter.js +1 -1
  35. package/dist/audiencerunBidAdapter.js +1 -1
  36. package/dist/axonixBidAdapter.js +1 -1
  37. package/dist/bidglassBidAdapter.js +1 -1
  38. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  39. package/dist/big-richmediaBidAdapter.js +1 -1
  40. package/dist/bluebillywigBidAdapter.js +1 -1
  41. package/dist/boldwinBidAdapter.js +1 -1
  42. package/dist/bridgewellBidAdapter.js +1 -1
  43. package/dist/brightMountainMediaBidAdapter.js +1 -1
  44. package/dist/browsiRtdProvider.js +1 -1
  45. package/dist/byDataAnalyticsAdapter.js +1 -1
  46. package/dist/c1xBidAdapter.js +1 -0
  47. package/dist/cleanioRtdProvider.js +1 -1
  48. package/dist/concertAnalyticsAdapter.js +1 -1
  49. package/dist/concertBidAdapter.js +1 -1
  50. package/dist/connectadBidAdapter.js +1 -1
  51. package/dist/consentManagementUsp.js +1 -1
  52. package/dist/consumableBidAdapter.js +1 -1
  53. package/dist/conversantBidAdapter.js +1 -1
  54. package/dist/cpmstarBidAdapter.js +1 -1
  55. package/dist/craftBidAdapter.js +1 -1
  56. package/dist/criteoBidAdapter.js +1 -1
  57. package/dist/datablocksAnalyticsAdapter.js +1 -1
  58. package/dist/datawrkzBidAdapter.js +1 -0
  59. package/dist/debugging-standalone.js +1 -1
  60. package/dist/dependencies.json +171 -0
  61. package/dist/dspxBidAdapter.js +1 -1
  62. package/dist/eplanningAnalyticsAdapter.js +1 -1
  63. package/dist/eplanningBidAdapter.js +1 -1
  64. package/dist/finativeBidAdapter.js +1 -1
  65. package/dist/fintezaAnalyticsAdapter.js +1 -1
  66. package/dist/freewheel-sspBidAdapter.js +1 -1
  67. package/dist/getOrigin.js +1 -1
  68. package/dist/glimpseBidAdapter.js +1 -1
  69. package/dist/gmosspBidAdapter.js +1 -1
  70. package/dist/goldbachBidAdapter.js +1 -1
  71. package/dist/gridBidAdapter.js +1 -1
  72. package/dist/gridNMBidAdapter.js +1 -1
  73. package/dist/gumgumBidAdapter.js +1 -1
  74. package/dist/h12mediaBidAdapter.js +1 -1
  75. package/dist/hadronAnalyticsAdapter.js +1 -1
  76. package/dist/id5AnalyticsAdapter.js +1 -1
  77. package/dist/id5IdSystem.js +1 -1
  78. package/dist/impactifyBidAdapter.js +1 -1
  79. package/dist/improvedigitalBidAdapter.js +1 -1
  80. package/dist/imuIdSystem.js +1 -1
  81. package/dist/inmarBidAdapter.js +1 -1
  82. package/dist/insticatorBidAdapter.js +1 -1
  83. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  84. package/dist/ixBidAdapter.js +1 -1
  85. package/dist/jixieBidAdapter.js +1 -1
  86. package/dist/justpremiumBidAdapter.js +1 -1
  87. package/dist/kargoAnalyticsAdapter.js +1 -1
  88. package/dist/kargoBidAdapter.js +1 -1
  89. package/dist/konduitAnalyticsAdapter.js +1 -1
  90. package/dist/kueezBidAdapter.js +1 -1
  91. package/dist/lassoBidAdapter.js +1 -1
  92. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  93. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  94. package/dist/logicadBidAdapter.js +1 -1
  95. package/dist/loglyliftBidAdapter.js +1 -1
  96. package/dist/malltvAnalyticsAdapter.js +1 -1
  97. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  98. package/dist/marsmediaBidAdapter.js +1 -1
  99. package/dist/mediafuseBidAdapter.js +1 -1
  100. package/dist/mediakeysBidAdapter.js +1 -1
  101. package/dist/medianetAnalyticsAdapter.js +1 -1
  102. package/dist/mediasquareBidAdapter.js +1 -1
  103. package/dist/mgidBidAdapter.js +1 -1
  104. package/dist/minutemediaBidAdapter.js +1 -1
  105. package/dist/nextMillenniumBidAdapter.js +1 -1
  106. package/dist/nobidBidAdapter.js +1 -1
  107. package/dist/not-for-prod/prebid.js +182 -176
  108. package/dist/oguryBidAdapter.js +1 -1
  109. package/dist/onetagBidAdapter.js +1 -1
  110. package/dist/ooloAnalyticsAdapter.js +1 -1
  111. package/dist/openxAnalyticsAdapter.js +1 -1
  112. package/dist/openxBidAdapter.js +1 -1
  113. package/dist/openxOrtbBidAdapter.js +1 -1
  114. package/dist/optimonAnalyticsAdapter.js +1 -1
  115. package/dist/outbrainBidAdapter.js +1 -1
  116. package/dist/ozoneBidAdapter.js +1 -1
  117. package/dist/parrableIdSystem.js +1 -1
  118. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  119. package/dist/pixfutureBidAdapter.js +1 -1
  120. package/dist/prebid-core.js +1 -1
  121. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  122. package/dist/publinkIdSystem.js +1 -1
  123. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  124. package/dist/pubmaticBidAdapter.js +1 -1
  125. package/dist/pubperfAnalyticsAdapter.js +1 -1
  126. package/dist/pubstackAnalyticsAdapter.js +1 -1
  127. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  128. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  129. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  130. package/dist/pxyzBidAdapter.js +1 -1
  131. package/dist/quantcastBidAdapter.js +1 -1
  132. package/dist/readpeakBidAdapter.js +1 -1
  133. package/dist/realvuAnalyticsAdapter.js +1 -1
  134. package/dist/relaidoBidAdapter.js +1 -1
  135. package/dist/relevantAnalyticsAdapter.js +1 -1
  136. package/dist/rhythmoneBidAdapter.js +1 -1
  137. package/dist/riseBidAdapter.js +1 -1
  138. package/dist/rivrAnalyticsAdapter.js +1 -1
  139. package/dist/roxotAnalyticsAdapter.js +1 -1
  140. package/dist/rtbhouseBidAdapter.js +1 -1
  141. package/dist/rubiconAnalyticsAdapter.js +1 -1
  142. package/dist/rubiconBidAdapter.js +1 -1
  143. package/dist/scaleableAnalyticsAdapter.js +1 -1
  144. package/dist/seedingAllianceBidAdapter.js +1 -1
  145. package/dist/seedtagBidAdapter.js +1 -1
  146. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  147. package/dist/sharethroughBidAdapter.js +1 -1
  148. package/dist/shinezBidAdapter.js +1 -1
  149. package/dist/showheroes-bsBidAdapter.js +1 -1
  150. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  151. package/dist/smaatoBidAdapter.js +1 -1
  152. package/dist/smartadserverBidAdapter.js +1 -1
  153. package/dist/smartxBidAdapter.js +1 -1
  154. package/dist/smilewantedBidAdapter.js +1 -1
  155. package/dist/snigelBidAdapter.js +1 -0
  156. package/dist/sonobiAnalyticsAdapter.js +1 -1
  157. package/dist/sonobiBidAdapter.js +1 -1
  158. package/dist/sovrnAnalyticsAdapter.js +1 -1
  159. package/dist/sovrnBidAdapter.js +1 -1
  160. package/dist/sspBCBidAdapter.js +1 -1
  161. package/dist/staqAnalyticsAdapter.js +1 -1
  162. package/dist/sublimeBidAdapter.js +1 -1
  163. package/dist/synacormediaBidAdapter.js +1 -1
  164. package/dist/tappxBidAdapter.js +1 -1
  165. package/dist/targetVideoBidAdapter.js +1 -1
  166. package/dist/teadsBidAdapter.js +1 -1
  167. package/dist/terceptAnalyticsAdapter.js +1 -1
  168. package/dist/trionBidAdapter.js +1 -1
  169. package/dist/tripleliftBidAdapter.js +1 -1
  170. package/dist/trustpidSystem.js +1 -1
  171. package/dist/ttdBidAdapter.js +1 -1
  172. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  173. package/dist/underdogmediaBidAdapter.js +1 -1
  174. package/dist/undertoneBidAdapter.js +1 -1
  175. package/dist/userId.js +1 -1
  176. package/dist/vidazooBidAdapter.js +1 -1
  177. package/dist/videobyteBidAdapter.js +1 -1
  178. package/dist/visxBidAdapter.js +1 -1
  179. package/dist/vuukleBidAdapter.js +1 -1
  180. package/dist/widespaceBidAdapter.js +1 -1
  181. package/dist/winrBidAdapter.js +1 -1
  182. package/dist/yahoosspBidAdapter.js +1 -1
  183. package/dist/yieldmoBidAdapter.js +1 -1
  184. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  185. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  186. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  187. package/dist/zeta_global_sspBidAdapter.js +1 -1
  188. package/gulpHelpers.js +22 -55
  189. package/gulpfile.js +12 -5
  190. package/integrationExamples/gpt/1plusXRtdProviderExample.html +2 -4
  191. package/integrationExamples/gpt/airgridRtdProvider_example.html +1 -4
  192. package/integrationExamples/gpt/amp/remote.html +1 -1
  193. package/integrationExamples/gpt/blueconicRtdProvider_example.html +2 -4
  194. package/integrationExamples/gpt/hadronRtdProvider_example.html +1 -3
  195. package/integrationExamples/gpt/inskin_example.html +1 -3
  196. package/integrationExamples/gpt/permutiveRtdProvider_example.html +1 -1
  197. package/integrationExamples/gpt/prebidServer_example.html +1 -3
  198. package/integrationExamples/gpt/serverbidServer_example.html +1 -3
  199. package/integrationExamples/gpt/userId_example.html +1 -3
  200. package/integrationExamples/postbid/oas/postbid-config.js +5 -5
  201. package/karma.conf.maker.js +2 -13
  202. package/libraries/LIBRARIES.md +5 -0
  203. package/{src → libraries/analyticsAdapter}/AnalyticsAdapter.js +5 -6
  204. package/{src/adapters/analytics → libraries/analyticsAdapter/examples}/example.js +1 -1
  205. package/{src/adapters/analytics → libraries/analyticsAdapter/examples}/example2.js +1 -1
  206. package/modules/.submodules.json +0 -12
  207. package/modules/1plusXRtdProvider.js +1 -1
  208. package/modules/33acrossBidAdapter.js +3 -3
  209. package/modules/adWMGAnalyticsAdapter.js +1 -1
  210. package/modules/adagioAnalyticsAdapter.js +1 -1
  211. package/modules/adagioBidAdapter.js +3 -4
  212. package/modules/adgenerationBidAdapter.js +1 -1
  213. package/modules/adkernelAdnAnalyticsAdapter.js +1 -1
  214. package/modules/adkernelBidAdapter.js +2 -1
  215. package/modules/adlooxAnalyticsAdapter.js +1 -1
  216. package/modules/admixerBidAdapter.js +1 -1
  217. package/modules/adnowBidAdapter.js +1 -1
  218. package/modules/adnuntiusBidAdapter.js +3 -1
  219. package/modules/adomikAnalyticsAdapter.js +1 -1
  220. package/modules/adpod.js +1 -1
  221. package/modules/adrelevantisBidAdapter.js +2 -2
  222. package/modules/adriverBidAdapter.js +1 -1
  223. package/modules/adtargetBidAdapter.js +1 -1
  224. package/modules/adtelligentBidAdapter.js +4 -2
  225. package/modules/adtrgtmeBidAdapter.js +333 -0
  226. package/modules/adtrgtmeBidAdapter.md +69 -0
  227. package/modules/adtrueBidAdapter.js +1 -1
  228. package/modules/adxcgAnalyticsAdapter.js +1 -1
  229. package/modules/adxpremiumAnalyticsAdapter.js +2 -2
  230. package/modules/adyoulikeBidAdapter.js +12 -8
  231. package/modules/akamaiDapRtdProvider.js +2 -2
  232. package/modules/andBeyondMediaBidAdapter.js +202 -0
  233. package/modules/andBeyondMediaBidAdapter.md +79 -0
  234. package/modules/aniviewBidAdapter.js +2 -2
  235. package/modules/apacdexBidAdapter.js +3 -3
  236. package/modules/appierAnalyticsAdapter.js +1 -1
  237. package/modules/appnexusBidAdapter.js +9 -9
  238. package/modules/apstreamBidAdapter.js +2 -2
  239. package/modules/atsAnalyticsAdapter.js +1 -1
  240. package/modules/betweenBidAdapter.js +1 -1
  241. package/modules/bidwatchAnalyticsAdapter.js +71 -12
  242. package/modules/bizzclickBidAdapter.js +1 -1
  243. package/modules/bliinkBidAdapter.js +1 -1
  244. package/modules/boldwinBidAdapter.js +16 -7
  245. package/modules/boldwinBidAdapter.md +17 -0
  246. package/modules/brightMountainMediaBidAdapter.js +1 -1
  247. package/modules/browsiRtdProvider.js +26 -12
  248. package/modules/byDataAnalyticsAdapter.js +2 -2
  249. package/modules/c1xBidAdapter.js +209 -0
  250. package/modules/c1xBidAdapter.md +70 -0
  251. package/modules/cleanioRtdProvider.js +29 -0
  252. package/modules/cleanmedianetBidAdapter.js +1 -1
  253. package/modules/colossussspBidAdapter.js +2 -2
  254. package/modules/concertAnalyticsAdapter.js +1 -1
  255. package/modules/consentManagementUsp.js +2 -2
  256. package/modules/consumableBidAdapter.js +21 -3
  257. package/modules/cpmstarBidAdapter.js +23 -13
  258. package/modules/criteoBidAdapter.js +47 -5
  259. package/modules/cwireBidAdapter.js +1 -1
  260. package/modules/datablocksAnalyticsAdapter.js +1 -1
  261. package/modules/datablocksBidAdapter.js +1 -1
  262. package/modules/datawrkzBidAdapter.js +633 -0
  263. package/modules/datawrkzBidAdapter.md +160 -0
  264. package/modules/dfpAdServerVideo.js +2 -2
  265. package/modules/dgkeywordRtdProvider.js +1 -1
  266. package/modules/dspxBidAdapter.js +1 -1
  267. package/modules/e_volutionBidAdapter.js +3 -3
  268. package/modules/ebdrBidAdapter.js +1 -1
  269. package/modules/emx_digitalBidAdapter.js +1 -1
  270. package/modules/eplanningAnalyticsAdapter.js +1 -1
  271. package/modules/eplanningBidAdapter.js +3 -3
  272. package/modules/fabrickIdSystem.js +2 -2
  273. package/modules/fintezaAnalyticsAdapter.js +2 -2
  274. package/modules/freewheel-sspBidAdapter.js +1 -1
  275. package/modules/gamoshiBidAdapter.js +1 -1
  276. package/modules/getintentBidAdapter.js +1 -1
  277. package/modules/gjirafaBidAdapter.js +2 -2
  278. package/modules/goldbachBidAdapter.js +8 -8
  279. package/modules/gothamadsBidAdapter.js +2 -2
  280. package/modules/gridBidAdapter.js +1 -1
  281. package/modules/gridNMBidAdapter.js +1 -1
  282. package/modules/gumgumBidAdapter.js +3 -3
  283. package/modules/h12mediaBidAdapter.js +1 -1
  284. package/modules/hadronAnalyticsAdapter.js +3 -3
  285. package/modules/hadronRtdProvider.js +1 -1
  286. package/modules/id5AnalyticsAdapter.js +2 -2
  287. package/modules/impactifyBidAdapter.js +1 -1
  288. package/modules/improvedigitalBidAdapter.js +5 -2
  289. package/modules/imuIdSystem.js +40 -28
  290. package/modules/imuIdSystem.md +1 -0
  291. package/modules/inskinBidAdapter.js +1 -1
  292. package/modules/integr8BidAdapter.js +2 -2
  293. package/modules/intentIqIdSystem.js +2 -2
  294. package/modules/interactiveOffersBidAdapter.js +1 -1
  295. package/modules/invisiblyAnalyticsAdapter.js +1 -1
  296. package/modules/iqmBidAdapter.js +1 -1
  297. package/modules/ixBidAdapter.js +15 -15
  298. package/modules/kargoAnalyticsAdapter.js +1 -1
  299. package/modules/kargoBidAdapter.js +4 -5
  300. package/modules/konduitAnalyticsAdapter.js +1 -1
  301. package/modules/krushmediaBidAdapter.js +2 -2
  302. package/modules/kueezBidAdapter.js +2 -2
  303. package/modules/lassoBidAdapter.js +3 -3
  304. package/modules/livewrappedAnalyticsAdapter.js +4 -4
  305. package/modules/liveyieldAnalyticsAdapter.js +1 -1
  306. package/modules/lkqdBidAdapter.js +3 -3
  307. package/modules/loganBidAdapter.js +2 -2
  308. package/modules/luponmediaBidAdapter.js +3 -3
  309. package/modules/malltvAnalyticsAdapter.js +1 -1
  310. package/modules/malltvBidAdapter.js +2 -2
  311. package/modules/marsmediaAnalyticsAdapter.js +1 -1
  312. package/modules/mediafuseBidAdapter.js +8 -8
  313. package/modules/mediakeysBidAdapter.js +2 -2
  314. package/modules/medianetAnalyticsAdapter.js +1 -1
  315. package/modules/merkleIdSystem.js +2 -2
  316. package/modules/mgidBidAdapter.js +2 -2
  317. package/modules/microadBidAdapter.js +1 -1
  318. package/modules/mobfoxpbBidAdapter.js +2 -2
  319. package/modules/newspassidBidAdapter.js +1 -1
  320. package/modules/nextMillenniumBidAdapter.js +21 -2
  321. package/modules/nobidBidAdapter.js +3 -3
  322. package/modules/novatiqIdSystem.js +1 -1
  323. package/modules/oguryBidAdapter.js +1 -1
  324. package/modules/ooloAnalyticsAdapter.js +1 -1
  325. package/modules/open8BidAdapter.js +1 -1
  326. package/modules/openwebBidAdapter.js +1 -1
  327. package/modules/openxAnalyticsAdapter.js +6 -745
  328. package/modules/openxAnalyticsAdapter.md +4 -0
  329. package/modules/openxBidAdapter.js +3 -5
  330. package/modules/openxOrtbBidAdapter.js +8 -4
  331. package/modules/operaadsBidAdapter.js +1 -1
  332. package/modules/optimonAnalyticsAdapter.js +1 -1
  333. package/modules/ozoneBidAdapter.js +102 -271
  334. package/modules/ozoneBidAdapter.md +37 -0
  335. package/modules/pianoDmpAnalyticsAdapter.js +1 -1
  336. package/modules/pixfutureBidAdapter.js +1 -1
  337. package/modules/prebidServerBidAdapter/index.js +7 -7
  338. package/modules/prebidmanagerAnalyticsAdapter.js +2 -2
  339. package/modules/priceFloors.js +1 -1
  340. package/modules/pubmaticAnalyticsAdapter.js +2 -2
  341. package/modules/pubmaticBidAdapter.js +28 -8
  342. package/modules/pubperfAnalyticsAdapter.js +1 -1
  343. package/modules/pubstackAnalyticsAdapter.js +1 -1
  344. package/modules/pubwiseAnalyticsAdapter.js +2 -2
  345. package/modules/pubwiseBidAdapter.js +3 -3
  346. package/modules/pubxBidAdapter.js +1 -1
  347. package/modules/pubxaiAnalyticsAdapter.js +3 -3
  348. package/modules/pulsepointAnalyticsAdapter.js +1 -1
  349. package/modules/pulsepointBidAdapter.js +1 -1
  350. package/modules/quantcastIdSystem.js +1 -1
  351. package/modules/radsBidAdapter.js +1 -1
  352. package/modules/realvuAnalyticsAdapter.js +1 -1
  353. package/modules/relaidoBidAdapter.js +23 -18
  354. package/modules/relevantAnalyticsAdapter.js +1 -1
  355. package/modules/revcontentBidAdapter.js +1 -1
  356. package/modules/richaudienceBidAdapter.js +1 -1
  357. package/modules/riseBidAdapter.js +8 -5
  358. package/modules/riseBidAdapter.md +3 -1
  359. package/modules/rivrAnalyticsAdapter.js +1 -1
  360. package/modules/roxotAnalyticsAdapter.js +1 -1
  361. package/modules/rtbhouseBidAdapter.js +1 -1
  362. package/modules/rubiconAnalyticsAdapter.js +1 -1
  363. package/modules/rubiconBidAdapter.js +2 -2
  364. package/modules/scaleableAnalyticsAdapter.js +1 -1
  365. package/modules/schain.js +1 -1
  366. package/modules/sharethroughAnalyticsAdapter.js +1 -1
  367. package/modules/sharethroughBidAdapter.js +3 -3
  368. package/modules/shinezBidAdapter.js +2 -2
  369. package/modules/showheroes-bsBidAdapter.js +131 -49
  370. package/modules/showheroes-bsBidAdapter.md +49 -0
  371. package/modules/sigmoidAnalyticsAdapter.js +1 -1
  372. package/modules/sirdataRtdProvider.js +3 -3
  373. package/modules/sizeMappingV2.js +1 -1
  374. package/modules/smaatoBidAdapter.js +2 -2
  375. package/modules/smartxBidAdapter.js +2 -2
  376. package/modules/snigelBidAdapter.js +150 -0
  377. package/modules/snigelBidAdapter.md +46 -0
  378. package/modules/sonobiAnalyticsAdapter.js +2 -2
  379. package/modules/sonobiBidAdapter.js +3 -3
  380. package/modules/sovrnAnalyticsAdapter.js +1 -1
  381. package/modules/spotxBidAdapter.js +5 -5
  382. package/modules/sspBCBidAdapter.js +15 -18
  383. package/modules/staqAnalyticsAdapter.js +2 -2
  384. package/modules/synacormediaBidAdapter.js +1 -1
  385. package/modules/taboolaBidAdapter.js +1 -1
  386. package/modules/tappxBidAdapter.js +4 -4
  387. package/modules/targetVideoBidAdapter.js +1 -1
  388. package/modules/terceptAnalyticsAdapter.js +1 -1
  389. package/modules/theAdxBidAdapter.js +2 -2
  390. package/modules/tpmnBidAdapter.js +1 -1
  391. package/modules/trionBidAdapter.js +2 -2
  392. package/modules/tripleliftBidAdapter.js +46 -20
  393. package/modules/trustpidSystem.js +2 -2
  394. package/modules/ttdBidAdapter.js +41 -26
  395. package/modules/ttdBidAdapter.md +4 -10
  396. package/modules/ucfunnelAnalyticsAdapter.js +1 -1
  397. package/modules/underdogmediaBidAdapter.js +1 -1
  398. package/modules/userId/eids.js +5 -0
  399. package/modules/userId/index.js +11 -7
  400. package/modules/vdoaiBidAdapter.js +1 -1
  401. package/modules/vidazooBidAdapter.js +9 -5
  402. package/modules/videoheroesBidAdapter.js +1 -1
  403. package/modules/vidoomyBidAdapter.js +1 -1
  404. package/modules/visxBidAdapter.js +1 -1
  405. package/modules/vrtcalBidAdapter.js +1 -1
  406. package/modules/weboramaRtdProvider.js +3 -3
  407. package/modules/winrBidAdapter.js +1 -1
  408. package/modules/yahoosspBidAdapter.js +4 -3
  409. package/modules/yandexBidAdapter.js +1 -1
  410. package/modules/yieldmoBidAdapter.js +3 -3
  411. package/modules/yieldoneAnalyticsAdapter.js +1 -1
  412. package/modules/yieldoneBidAdapter.js +2 -2
  413. package/modules/yuktamediaAnalyticsAdapter.js +1 -1
  414. package/modules/zeta_global_sspAnalyticsAdapter.js +1 -1
  415. package/modules/zeta_global_sspBidAdapter.js +25 -22
  416. package/package.json +4 -3
  417. package/src/Renderer.js +1 -1
  418. package/src/adapterManager.js +3 -3
  419. package/src/adapters/bidderFactory.js +1 -0
  420. package/src/auction.js +2 -2
  421. package/src/bidfactory.js +1 -1
  422. package/src/config.js +7 -7
  423. package/src/native.js +53 -58
  424. package/src/sizeMapping.js +1 -1
  425. package/src/targeting.js +1 -1
  426. package/src/userSync.js +1 -1
  427. package/src/utils.js +1 -1
  428. package/test/mocks/analyticsStub.js +1 -1
  429. package/test/spec/AnalyticsAdapter_spec.js +1 -1
  430. package/test/spec/config_spec.js +4 -0
  431. package/test/spec/modules/adagioBidAdapter_spec.js +2 -0
  432. package/test/spec/modules/adnuntiusBidAdapter_spec.js +7 -3
  433. package/test/spec/modules/adtelligentBidAdapter_spec.js +1 -0
  434. package/test/spec/modules/adtrgtmeBidAdapter_spec.js +802 -0
  435. package/test/spec/modules/adyoulikeBidAdapter_spec.js +8 -3
  436. package/test/spec/modules/andBeyondMediaBidAdapter_spec.js +400 -0
  437. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +17 -1
  438. package/test/spec/modules/boldwinBidAdapter_spec.js +2 -1
  439. package/test/spec/modules/browsiRtdProvider_spec.js +40 -1
  440. package/test/spec/modules/c1xBidAdapter_spec.js +189 -0
  441. package/test/spec/modules/cleanioRtdProvider_spec.js +23 -0
  442. package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -1
  443. package/test/spec/modules/consumableBidAdapter_spec.js +139 -0
  444. package/test/spec/modules/cpmstarBidAdapter_spec.js +1 -1
  445. package/test/spec/modules/criteoBidAdapter_spec.js +169 -38
  446. package/test/spec/modules/datawrkzBidAdapter_spec.js +656 -0
  447. package/test/spec/modules/eids_spec.js +32 -0
  448. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +2 -2
  449. package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +2 -1
  450. package/test/spec/modules/improvedigitalBidAdapter_spec.js +4 -4
  451. package/test/spec/modules/imuIdSystem_spec.js +20 -4
  452. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +8 -3
  453. package/test/spec/modules/kargoBidAdapter_spec.js +11 -2
  454. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +2 -1
  455. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +17 -0
  456. package/test/spec/modules/openxAnalyticsAdapter_spec.js +6 -638
  457. package/test/spec/modules/openxOrtbBidAdapter_spec.js +32 -1
  458. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +2 -1
  459. package/test/spec/modules/ozoneBidAdapter_spec.js +367 -511
  460. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -0
  461. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +2 -1
  462. package/test/spec/modules/pubmaticBidAdapter_spec.js +111 -5
  463. package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +2 -1
  464. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +2 -1
  465. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +3 -3
  466. package/test/spec/modules/relaidoBidAdapter_spec.js +40 -33
  467. package/test/spec/modules/riseBidAdapter_spec.js +17 -0
  468. package/test/spec/modules/sharethroughBidAdapter_spec.js +10 -1
  469. package/test/spec/modules/showheroes-bsBidAdapter_spec.js +173 -2
  470. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +1 -1
  471. package/test/spec/modules/snigelBidAdapter_spec.js +296 -0
  472. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +2 -1
  473. package/test/spec/modules/sspBCBidAdapter_spec.js +2 -2
  474. package/test/spec/modules/tripleliftBidAdapter_spec.js +378 -10
  475. package/test/spec/modules/ttdBidAdapter_spec.js +113 -34
  476. package/test/spec/modules/userId_spec.js +38 -2
  477. package/test/spec/modules/vidazooBidAdapter_spec.js +39 -24
  478. package/test/spec/modules/yahoosspBidAdapter_spec.js +13 -0
  479. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -1
  480. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +61 -2
  481. package/test/spec/native_spec.js +96 -0
  482. package/test/spec/unit/core/bidderFactory_spec.js +27 -2
  483. package/webpack.conf.js +47 -11
@@ -0,0 +1,202 @@
1
+ import { isFn, deepAccess, logMessage, logError } from '../src/utils.js';
2
+
3
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
4
+ import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
5
+ import { config } from '../src/config.js';
6
+
7
+ const BIDDER_CODE = 'beyondmedia';
8
+ const AD_URL = 'https://backend.andbeyond.media/pbjs';
9
+ const SYNC_URL = 'https://cookies.andbeyond.media';
10
+
11
+ function isBidResponseValid(bid) {
12
+ if (!bid.requestId || !bid.cpm || !bid.creativeId || !bid.ttl || !bid.currency) {
13
+ return false;
14
+ }
15
+
16
+ switch (bid.mediaType) {
17
+ case BANNER:
18
+ return Boolean(bid.width && bid.height && bid.ad);
19
+ case VIDEO:
20
+ return Boolean(bid.vastUrl || bid.vastXml);
21
+ case NATIVE:
22
+ return Boolean(bid.native && bid.native.impressionTrackers && bid.native.impressionTrackers.length);
23
+ default:
24
+ return false;
25
+ }
26
+ }
27
+
28
+ function getPlacementReqData(bid) {
29
+ const { params, bidId, mediaTypes } = bid;
30
+ const schain = bid.schain || {};
31
+ const { placementId } = params;
32
+ const bidfloor = getBidFloor(bid);
33
+
34
+ const placement = {
35
+ bidId,
36
+ schain,
37
+ bidfloor
38
+ };
39
+
40
+ placement.placementId = placementId;
41
+ placement.type = 'publisher';
42
+
43
+ if (mediaTypes && mediaTypes[BANNER]) {
44
+ placement.adFormat = BANNER;
45
+ placement.sizes = mediaTypes[BANNER].sizes;
46
+ } else if (mediaTypes && mediaTypes[VIDEO]) {
47
+ placement.adFormat = VIDEO;
48
+ placement.playerSize = mediaTypes[VIDEO].playerSize;
49
+ placement.minduration = mediaTypes[VIDEO].minduration;
50
+ placement.maxduration = mediaTypes[VIDEO].maxduration;
51
+ placement.mimes = mediaTypes[VIDEO].mimes;
52
+ placement.protocols = mediaTypes[VIDEO].protocols;
53
+ placement.startdelay = mediaTypes[VIDEO].startdelay;
54
+ placement.placement = mediaTypes[VIDEO].placement;
55
+ placement.skip = mediaTypes[VIDEO].skip;
56
+ placement.skipafter = mediaTypes[VIDEO].skipafter;
57
+ placement.minbitrate = mediaTypes[VIDEO].minbitrate;
58
+ placement.maxbitrate = mediaTypes[VIDEO].maxbitrate;
59
+ placement.delivery = mediaTypes[VIDEO].delivery;
60
+ placement.playbackmethod = mediaTypes[VIDEO].playbackmethod;
61
+ placement.api = mediaTypes[VIDEO].api;
62
+ placement.linearity = mediaTypes[VIDEO].linearity;
63
+ } else if (mediaTypes && mediaTypes[NATIVE]) {
64
+ placement.native = mediaTypes[NATIVE];
65
+ placement.adFormat = NATIVE;
66
+ }
67
+
68
+ return placement;
69
+ }
70
+
71
+ function getBidFloor(bid) {
72
+ if (!isFn(bid.getFloor)) {
73
+ return deepAccess(bid, 'params.bidfloor', 0);
74
+ }
75
+
76
+ try {
77
+ const bidFloor = bid.getFloor({
78
+ currency: 'USD',
79
+ mediaType: '*',
80
+ size: '*',
81
+ });
82
+ return bidFloor.floor;
83
+ } catch (err) {
84
+ logError(err);
85
+ return 0;
86
+ }
87
+ }
88
+
89
+ export const spec = {
90
+ code: BIDDER_CODE,
91
+ supportedMediaTypes: [BANNER, VIDEO, NATIVE],
92
+
93
+ isBidRequestValid: (bid = {}) => {
94
+ const { params, bidId, mediaTypes } = bid;
95
+ let valid = Boolean(bidId && params && params.placementId);
96
+
97
+ if (mediaTypes && mediaTypes[BANNER]) {
98
+ valid = valid && Boolean(mediaTypes[BANNER] && mediaTypes[BANNER].sizes);
99
+ } else if (mediaTypes && mediaTypes[VIDEO]) {
100
+ valid = valid && Boolean(mediaTypes[VIDEO] && mediaTypes[VIDEO].playerSize);
101
+ } else if (mediaTypes && mediaTypes[NATIVE]) {
102
+ valid = valid && Boolean(mediaTypes[NATIVE]);
103
+ }
104
+
105
+ return valid;
106
+ },
107
+
108
+ buildRequests: (validBidRequests = [], bidderRequest = {}) => {
109
+ let deviceWidth = 0;
110
+ let deviceHeight = 0;
111
+
112
+ let winLocation;
113
+ try {
114
+ const winTop = window.top;
115
+ deviceWidth = winTop.screen.width;
116
+ deviceHeight = winTop.screen.height;
117
+ winLocation = winTop.location;
118
+ } catch (e) {
119
+ logMessage(e);
120
+ winLocation = window.location;
121
+ }
122
+
123
+ const refferUrl = bidderRequest.refererInfo && bidderRequest.refererInfo.page;
124
+ let refferLocation;
125
+ try {
126
+ refferLocation = refferUrl && new URL(refferUrl);
127
+ } catch (e) {
128
+ logMessage(e);
129
+ }
130
+
131
+ let location = refferLocation || winLocation;
132
+ const language = (navigator && navigator.language) ? navigator.language.split('-')[0] : '';
133
+ const host = location.host;
134
+ const page = location.pathname;
135
+ const secure = location.protocol === 'https:' ? 1 : 0;
136
+ const placements = [];
137
+ const request = {
138
+ deviceWidth,
139
+ deviceHeight,
140
+ language,
141
+ secure,
142
+ host,
143
+ page,
144
+ placements,
145
+ coppa: config.getConfig('coppa') === true ? 1 : 0,
146
+ ccpa: bidderRequest.uspConsent || undefined,
147
+ gdpr: bidderRequest.gdprConsent || undefined,
148
+ tmax: config.getConfig('bidderTimeout')
149
+ };
150
+
151
+ const len = validBidRequests.length;
152
+ for (let i = 0; i < len; i++) {
153
+ const bid = validBidRequests[i];
154
+ placements.push(getPlacementReqData(bid));
155
+ }
156
+
157
+ return {
158
+ method: 'POST',
159
+ url: AD_URL,
160
+ data: request
161
+ };
162
+ },
163
+
164
+ interpretResponse: (serverResponse) => {
165
+ let response = [];
166
+ for (let i = 0; i < serverResponse.body.length; i++) {
167
+ let resItem = serverResponse.body[i];
168
+ if (isBidResponseValid(resItem)) {
169
+ const advertiserDomains = resItem.adomain && resItem.adomain.length ? resItem.adomain : [];
170
+ resItem.meta = { ...resItem.meta, advertiserDomains };
171
+
172
+ response.push(resItem);
173
+ }
174
+ }
175
+ return response;
176
+ },
177
+
178
+ getUserSyncs: (syncOptions, serverResponses, gdprConsent, uspConsent) => {
179
+ let syncType = syncOptions.iframeEnabled ? 'iframe' : 'image';
180
+ let syncUrl = SYNC_URL + `/${syncType}?pbjs=1`;
181
+ if (gdprConsent && gdprConsent.consentString) {
182
+ if (typeof gdprConsent.gdprApplies === 'boolean') {
183
+ syncUrl += `&gdpr=${Number(gdprConsent.gdprApplies)}&gdpr_consent=${gdprConsent.consentString}`;
184
+ } else {
185
+ syncUrl += `&gdpr=0&gdpr_consent=${gdprConsent.consentString}`;
186
+ }
187
+ }
188
+ if (uspConsent && uspConsent.consentString) {
189
+ syncUrl += `&ccpa_consent=${uspConsent.consentString}`;
190
+ }
191
+
192
+ const coppa = config.getConfig('coppa') ? 1 : 0;
193
+ syncUrl += `&coppa=${coppa}`;
194
+
195
+ return [{
196
+ type: syncType,
197
+ url: syncUrl
198
+ }];
199
+ }
200
+ };
201
+
202
+ registerBidder(spec);
@@ -0,0 +1,79 @@
1
+ # Overview
2
+
3
+ ```
4
+ Module Name: AndBeyond.Media Bidder Adapter
5
+ Module Type: AndBeyond.Media Bidder Adapter
6
+ Maintainer: sysengg@andbeyond.media
7
+ ```
8
+
9
+ # Description
10
+
11
+ Connects to AndBeyond.Media exchange for bids.
12
+ AndBeyond.Media bid adapter supports Banner, Video (instream and outstream) and Native.
13
+
14
+ # Test Parameters
15
+ ```
16
+ var adUnits = [
17
+ // Will return static test banner
18
+ {
19
+ code: 'adunit1',
20
+ mediaTypes: {
21
+ banner: {
22
+ sizes: [ [300, 250], [320, 50] ],
23
+ }
24
+ },
25
+ bids: [
26
+ {
27
+ bidder: 'beyondmedia',
28
+ params: {
29
+ placementId: 'testBanner',
30
+ }
31
+ }
32
+ ]
33
+ },
34
+ {
35
+ code: 'addunit2',
36
+ mediaTypes: {
37
+ video: {
38
+ playerSize: [ [640, 480] ],
39
+ context: 'instream',
40
+ minduration: 5,
41
+ maxduration: 60,
42
+ }
43
+ },
44
+ bids: [
45
+ {
46
+ bidder: 'beyondmedia',
47
+ params: {
48
+ placementId: 'testVideo',
49
+ }
50
+ }
51
+ ]
52
+ },
53
+ {
54
+ code: 'addunit3',
55
+ mediaTypes: {
56
+ native: {
57
+ title: {
58
+ required: true
59
+ },
60
+ body: {
61
+ required: true
62
+ },
63
+ icon: {
64
+ required: true,
65
+ size: [64, 64]
66
+ }
67
+ }
68
+ },
69
+ bids: [
70
+ {
71
+ bidder: 'beyondmedia',
72
+ params: {
73
+ placementId: 'testNative',
74
+ }
75
+ }
76
+ ]
77
+ }
78
+ ];
79
+ ```
@@ -203,7 +203,7 @@ function interpretResponse(serverResponse, bidRequest) {
203
203
  let xml = new window.DOMParser().parseFromString(xmlStr, 'text/xml');
204
204
  if (xml && xml.getElementsByTagName('parsererror').length == 0) {
205
205
  let cpmData = getCpmData(xml);
206
- if (cpmData && cpmData.cpm > 0) {
206
+ if (cpmData.cpm > 0) {
207
207
  bidResponse.requestId = bidRequest.data.bidId;
208
208
  bidResponse.ad = '';
209
209
  bidResponse.cpm = cpmData.cpm;
@@ -306,7 +306,7 @@ function getUserSyncs(syncOptions, serverResponses) {
306
306
  export const spec = {
307
307
  code: BIDDER_CODE,
308
308
  gvlid: GVLID,
309
- aliases: ['avantisvideo', 'selectmediavideo', 'vidcrunch', 'openwebvideo', 'didnavideo', 'ottadvisors'],
309
+ aliases: ['avantisvideo', 'selectmediavideo', 'vidcrunch', 'openwebvideo', 'didnavideo', 'ottadvisors', 'pgammedia'],
310
310
  supportedMediaTypes: [VIDEO, BANNER],
311
311
  isBidRequestValid,
312
312
  buildRequests,
@@ -103,7 +103,7 @@ export const spec = {
103
103
 
104
104
  var pageUrl = _extractTopWindowUrlFromBidderRequest(bidderRequest);
105
105
  payload.site = {};
106
- payload.site.page = pageUrl
106
+ payload.site.page = pageUrl;
107
107
  payload.site.referrer = _extractTopWindowReferrerFromBidderRequest(bidderRequest);
108
108
  // TODO: does it make sense to fall back to window.location for the domain?
109
109
  payload.site.hostname = bidderRequest.refererInfo?.domain || parseDomain(pageUrl);
@@ -124,12 +124,12 @@ export const spec = {
124
124
 
125
125
  // Apply schain.
126
126
  if (schain) {
127
- payload.schain = schain
127
+ payload.schain = schain;
128
128
  }
129
129
 
130
130
  // Apply eids.
131
131
  if (eids) {
132
- payload.eids = eids
132
+ payload.eids = eids;
133
133
  }
134
134
 
135
135
  // Apply geo
@@ -1,5 +1,5 @@
1
1
  import {ajax} from '../src/ajax.js';
2
- import adapter from '../src/AnalyticsAdapter.js';
2
+ import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
3
3
  import CONSTANTS from '../src/constants.json';
4
4
  import adapterManager from '../src/adapterManager.js';
5
5
  import {getGlobal} from '../src/prebidGlobal.js';
@@ -215,7 +215,7 @@ export const spec = {
215
215
  payload['iab_support'] = {
216
216
  omidpn: 'Appnexus',
217
217
  omidpv: '$prebid.version$'
218
- }
218
+ };
219
219
  }
220
220
 
221
221
  if (member > 0) {
@@ -223,7 +223,7 @@ export const spec = {
223
223
  }
224
224
 
225
225
  if (appDeviceObjBid) {
226
- payload.device = appDeviceObj
226
+ payload.device = appDeviceObj;
227
227
  }
228
228
  if (appIdObjBid) {
229
229
  payload.app = appIdObj;
@@ -265,7 +265,7 @@ export const spec = {
265
265
  }
266
266
 
267
267
  if (bidderRequest && bidderRequest.uspConsent) {
268
- payload.us_privacy = bidderRequest.uspConsent
268
+ payload.us_privacy = bidderRequest.uspConsent;
269
269
  }
270
270
 
271
271
  if (bidderRequest && bidderRequest.refererInfo) {
@@ -275,7 +275,7 @@ export const spec = {
275
275
  rd_top: bidderRequest.refererInfo.reachedTop,
276
276
  rd_ifs: bidderRequest.refererInfo.numIframes,
277
277
  rd_stk: bidderRequest.refererInfo.stack.map((url) => encodeURIComponent(url)).join(',')
278
- }
278
+ };
279
279
  let pubPageUrl = bidderRequest.refererInfo.canonicalUrl;
280
280
  if (isStr(pubPageUrl) && pubPageUrl !== '') {
281
281
  refererinfo.rd_can = pubPageUrl;
@@ -410,7 +410,7 @@ export const spec = {
410
410
  if (includes(s2sCfg.bidders, adUnit.bids[0].bidder)) {
411
411
  s2sEndpointUrl = deepAccess(s2sCfg, 'endpoint.p1Consent');
412
412
  }
413
- })
413
+ });
414
414
  }
415
415
 
416
416
  if (s2sEndpointUrl && s2sEndpointUrl.match('/openrtb2/prebid')) {
@@ -455,7 +455,7 @@ export const spec = {
455
455
  reloadViewabilityScriptWithCorrectParameters(bid);
456
456
  }
457
457
  }
458
- }
458
+ };
459
459
 
460
460
  function isPopulatedArray(arr) {
461
461
  return !!(isArray(arr) && arr.length > 0);
@@ -473,7 +473,7 @@ function reloadViewabilityScriptWithCorrectParameters(bid) {
473
473
  if (viewJsPayload) {
474
474
  let prebidParams = 'pbjs_adid=' + bid.adId + ';pbjs_auc=' + bid.adUnitCode;
475
475
 
476
- let jsTrackerSrc = getViewabilityScriptUrlFromPayload(viewJsPayload)
476
+ let jsTrackerSrc = getViewabilityScriptUrlFromPayload(viewJsPayload);
477
477
 
478
478
  let newJsTrackerSrc = jsTrackerSrc.replace('dom_id=%native_dom_id%', prebidParams);
479
479
 
@@ -567,7 +567,7 @@ function formatRequest(payload, bidderRequest) {
567
567
  if (getParameterByName('apn_test').toUpperCase() === 'TRUE' || config.getConfig('apn_test') === true) {
568
568
  options.customHeaders = {
569
569
  'X-Is-Test': 1
570
- }
570
+ };
571
571
  }
572
572
 
573
573
  if (payload.tags.length > MAX_IMPS_PER_REQUEST) {
@@ -805,7 +805,7 @@ function bidToTag(bid) {
805
805
  tag.code = bid.params.invCode;
806
806
  }
807
807
  tag.allow_smaller_sizes = bid.params.allowSmallerSizes || false;
808
- tag.use_pmt_rule = bid.params.usePaymentRule || false
808
+ tag.use_pmt_rule = bid.params.usePaymentRule || false;
809
809
  tag.prebid = true;
810
810
  tag.disable_psa = true;
811
811
  let bidFloor = getBidFloor(bid);
@@ -267,7 +267,7 @@ var dsuModule = (function() {
267
267
 
268
268
  return {
269
269
  readOrCreateDsu: readOrCreateDsu
270
- }
270
+ };
271
271
  })();
272
272
 
273
273
  function serializeSizes(sizes) {
@@ -343,7 +343,7 @@ function getBids(bids) {
343
343
  const bidId = bid.bidId;
344
344
 
345
345
  let mediaType = '';
346
- const mediaTypes = Object.keys(bid.mediaTypes)
346
+ const mediaTypes = Object.keys(bid.mediaTypes);
347
347
  switch (mediaTypes[0]) {
348
348
  case 'video':
349
349
  mediaType = 'v';
@@ -1,5 +1,5 @@
1
1
  import { logError, logInfo } from '../src/utils.js';
2
- import adapter from '../src/AnalyticsAdapter.js';
2
+ import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
3
3
  import CONSTANTS from '../src/constants.json';
4
4
  import adaptermanager from '../src/adapterManager.js';
5
5
  import {ajax} from '../src/ajax.js';
@@ -90,7 +90,7 @@ export const spec = {
90
90
  }
91
91
  }
92
92
 
93
- requests.push({data: params})
93
+ requests.push({data: params});
94
94
  })
95
95
  return {
96
96
  method: 'POST',
@@ -1,4 +1,4 @@
1
- import adapter from '../src/AnalyticsAdapter.js';
1
+ import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
2
2
  import adapterManager from '../src/adapterManager.js';
3
3
  import CONSTANTS from '../src/constants.json';
4
4
  import { ajax } from '../src/ajax.js';
@@ -10,10 +10,14 @@ const {
10
10
  EVENTS: {
11
11
  AUCTION_END,
12
12
  BID_WON,
13
+ BID_RESPONSE,
14
+ BID_REQUESTED,
13
15
  }
14
16
  } = CONSTANTS;
15
17
 
18
+ let saveEvents = {}
16
19
  let allEvents = {}
20
+ let auctionEnd = {}
17
21
  let initOptions = {}
18
22
  let endpoint = 'https://default'
19
23
  let objectToSearchForBidderCode = ['bidderRequests', 'bidsReceived', 'noBids']
@@ -22,38 +26,87 @@ function getAdapterNameForAlias(aliasName) {
22
26
  return adapterManager.aliasRegistry[aliasName] || aliasName;
23
27
  }
24
28
 
25
- function setOriginalBidder(arg) {
29
+ function cleanArgObject(arg, removead) {
30
+ if (typeof arg['bidderCode'] == 'string') { arg['originalBidder'] = getAdapterNameForAlias(arg['bidderCode']); }
31
+ if (typeof arg['creativeId'] == 'number') {
32
+ arg['creativeId'] = arg['creativeId'].toString();
33
+ }
34
+ if (removead && typeof arg['ad'] != 'undefined') {
35
+ arg['ad'] = 'emptied';
36
+ }
37
+ if (typeof arg['gdprConsent'] != 'undefined' && typeof arg['gdprConsent']['vendorData'] != 'undefined') {
38
+ arg['gdprConsent']['vendorData'] = 'emptied';
39
+ }
40
+ return arg;
41
+ }
42
+
43
+ function cleanArgs(arg, removead) {
26
44
  Object.keys(arg).forEach(key => {
27
- arg[key]['originalBidder'] = getAdapterNameForAlias(arg[key]['bidderCode']);
28
- if (typeof arg[key]['creativeId'] == 'number') { arg[key]['creativeId'] = arg[key]['creativeId'].toString(); }
45
+ arg[key] = cleanArgObject(arg[key], removead);
29
46
  });
30
47
  return arg
31
48
  }
32
49
 
33
- function checkBidderCode(args) {
50
+ function checkBidderCode(args, removead) {
34
51
  if (typeof args == 'object') {
35
52
  for (let i = 0; i < objectToSearchForBidderCode.length; i++) {
36
- if (typeof args[objectToSearchForBidderCode[i]] == 'object') { args[objectToSearchForBidderCode[i]] = setOriginalBidder(args[objectToSearchForBidderCode[i]]) }
53
+ if (typeof args[objectToSearchForBidderCode[i]] == 'object') { args[objectToSearchForBidderCode[i]] = cleanArgs(args[objectToSearchForBidderCode[i]], removead) }
37
54
  }
38
55
  }
39
56
  if (typeof args['bidderCode'] == 'string') { args['originalBidder'] = getAdapterNameForAlias(args['bidderCode']); } else if (typeof args['bidder'] == 'string') { args['originalBidder'] = getAdapterNameForAlias(args['bidder']); }
40
57
  if (typeof args['creativeId'] == 'number') { args['creativeId'] = args['creativeId'].toString(); }
58
+
41
59
  return args
42
60
  }
43
61
 
44
62
  function addEvent(eventType, args) {
45
- if (allEvents[eventType] == undefined) { allEvents[eventType] = [] }
46
- if (eventType && args) { args = checkBidderCode(args); }
47
- allEvents[eventType].push(args);
63
+ let argsCleaned;
64
+ if (eventType && args) {
65
+ if (allEvents[eventType] == undefined) { allEvents[eventType] = [] }
66
+ if (saveEvents[eventType] == undefined) { saveEvents[eventType] = [] }
67
+ argsCleaned = checkBidderCode(JSON.parse(JSON.stringify(args)), false);
68
+ allEvents[eventType].push(argsCleaned);
69
+ saveEvents[eventType].push(argsCleaned);
70
+ argsCleaned = checkBidderCode(JSON.parse(JSON.stringify(args)), true);
71
+ if (['auctionend', 'bidtimeout'].includes(eventType.toLowerCase())) {
72
+ if (auctionEnd[eventType] == undefined) { auctionEnd[eventType] = [] }
73
+ auctionEnd[eventType].push(argsCleaned);
74
+ }
75
+ }
48
76
  }
49
77
 
50
78
  function handleBidWon(args) {
51
- if (typeof allEvents.bidRequested == 'object' && allEvents.bidRequested.length > 0 && allEvents.bidRequested[0].gdprConsent) { args.gdpr = allEvents.bidRequested[0].gdprConsent; }
79
+ args = cleanArgObject(JSON.parse(JSON.stringify(args)), true);
80
+ let increment = args['cpm'];
81
+ if (typeof saveEvents['auctionEnd'] == 'object') {
82
+ for (let i = 0; i < saveEvents['auctionEnd'].length; i++) {
83
+ let tmpAuction = saveEvents['auctionEnd'][i];
84
+ if (tmpAuction['auctionId'] == args['auctionId'] && typeof tmpAuction['bidsReceived'] == 'object') {
85
+ for (let j = 0; j < tmpAuction['bidsReceived'].length; j++) {
86
+ let tmpBid = tmpAuction['bidsReceived'][j];
87
+ if (tmpBid['transactionId'] == args['transactionId'] && tmpBid['adId'] != args['adId']) {
88
+ if (args['cpm'] < tmpBid['cpm']) {
89
+ increment = 0;
90
+ } else if (increment > args['cpm'] - tmpBid['cpm']) {
91
+ increment = args['cpm'] - tmpBid['cpm'];
92
+ }
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ args['cpmIncrement'] = increment;
99
+ if (typeof saveEvents.bidRequested == 'object' && saveEvents.bidRequested.length > 0 && saveEvents.bidRequested[0].gdprConsent) { args.gdpr = saveEvents.bidRequested[0].gdprConsent; }
52
100
  ajax(endpoint + '.bidwatch.io/analytics/bid_won', null, JSON.stringify(args), {method: 'POST', withCredentials: true});
53
101
  }
54
102
 
55
103
  function handleAuctionEnd() {
56
- ajax(endpoint + '.bidwatch.io/analytics/auctions', null, JSON.stringify(allEvents), {method: 'POST', withCredentials: true});
104
+ ajax(endpoint + '.bidwatch.io/analytics/auctions', null, JSON.stringify(auctionEnd), {method: 'POST', withCredentials: true});
105
+ auctionEnd = {}
106
+ if (typeof allEvents['bidResponse'] != 'undefined') {
107
+ for (let i = 0; i < allEvents['bidResponse'].length; i++) { ajax(endpoint + '.bidwatch.io/analytics/creatives', null, JSON.stringify(allEvents['bidResponse'][i]), {method: 'POST', withCredentials: true}); }
108
+ }
109
+ allEvents = {}
57
110
  }
58
111
 
59
112
  let bidwatchAnalytics = Object.assign(adapter({url, analyticsType}), {
@@ -61,14 +114,20 @@ let bidwatchAnalytics = Object.assign(adapter({url, analyticsType}), {
61
114
  eventType,
62
115
  args
63
116
  }) {
64
- addEvent(eventType, args);
65
117
  switch (eventType) {
66
118
  case AUCTION_END:
119
+ addEvent(eventType, args);
67
120
  handleAuctionEnd();
68
121
  break;
69
122
  case BID_WON:
70
123
  handleBidWon(args);
71
124
  break;
125
+ case BID_RESPONSE:
126
+ addEvent(eventType, args);
127
+ break;
128
+ case BID_REQUESTED:
129
+ addEvent(eventType, args);
130
+ break;
72
131
  }
73
132
  }});
74
133
 
@@ -256,7 +256,7 @@ const addNativeParameters = bidRequest => {
256
256
  wmin = sizes[0];
257
257
  hmin = sizes[1];
258
258
  }
259
- asset[props.name] = {}
259
+ asset[props.name] = {};
260
260
  if (bidParams.len) asset[props.name]['len'] = bidParams.len;
261
261
  if (props.type) asset[props.name]['type'] = props.type;
262
262
  if (wmin) asset[props.name]['wmin'] = wmin;
@@ -96,7 +96,7 @@ export function getKeywords() {
96
96
  * @return {({cpm, netRevenue: boolean, requestId, width: number, currency, ttl: number, creativeId, height: number}&{mediaType: string, vastXml})|null}
97
97
  */
98
98
  export const buildBid = (bidResponse) => {
99
- const mediaType = deepAccess(bidResponse, 'creative.media_type')
99
+ const mediaType = deepAccess(bidResponse, 'creative.media_type');
100
100
  if (!mediaType) return null;
101
101
 
102
102
  let bid;
@@ -46,7 +46,7 @@ export const spec = {
46
46
  supportedMediaTypes: [BANNER, VIDEO, NATIVE],
47
47
 
48
48
  isBidRequestValid: (bid) => {
49
- return Boolean(bid.bidId && bid.params && bid.params.placementId);
49
+ return Boolean(bid.bidId && bid.params && (bid.params.placementId || bid.params.endpointId));
50
50
  },
51
51
 
52
52
  buildRequests: (validBidRequests = [], bidderRequest) => {
@@ -57,7 +57,7 @@ export const spec = {
57
57
  let location;
58
58
  // TODO: this odd try-catch block was copied in several adapters; it doesn't seem to be correct for cross-origin
59
59
  try {
60
- location = new URL(bidderRequest.refererInfo.page)
60
+ location = new URL(bidderRequest.refererInfo.page);
61
61
  winTop = window.top;
62
62
  } catch (e) {
63
63
  location = winTop.location;
@@ -78,23 +78,23 @@ export const spec = {
78
78
  request.ccpa = bidderRequest.uspConsent;
79
79
  }
80
80
  if (bidderRequest.gdprConsent) {
81
- request.gdpr = bidderRequest.gdprConsent
81
+ request.gdpr = bidderRequest.gdprConsent;
82
82
  }
83
83
  }
84
84
  const len = validBidRequests.length;
85
85
 
86
86
  for (let i = 0; i < len; i++) {
87
87
  let bid = validBidRequests[i];
88
- const { mediaTypes } = bid;
88
+ const { mediaTypes, params } = bid;
89
89
  const placement = {};
90
90
  let sizes;
91
91
  if (mediaTypes) {
92
92
  if (mediaTypes[BANNER] && mediaTypes[BANNER].sizes) {
93
93
  placement.adFormat = BANNER;
94
- sizes = mediaTypes[BANNER].sizes
94
+ sizes = mediaTypes[BANNER].sizes;
95
95
  } else if (mediaTypes[VIDEO] && mediaTypes[VIDEO].playerSize) {
96
96
  placement.adFormat = VIDEO;
97
- sizes = mediaTypes[VIDEO].playerSize
97
+ sizes = mediaTypes[VIDEO].playerSize;
98
98
  placement.minduration = mediaTypes[VIDEO].minduration;
99
99
  placement.maxduration = mediaTypes[VIDEO].maxduration;
100
100
  placement.mimes = mediaTypes[VIDEO].mimes;
@@ -114,9 +114,18 @@ export const spec = {
114
114
  placement.native = mediaTypes[NATIVE];
115
115
  }
116
116
  }
117
+
118
+ const { placementId, endpointId } = params;
119
+ if (placementId) {
120
+ placement.placementId = placementId;
121
+ placement.type = 'publisher';
122
+ } else if (endpointId) {
123
+ placement.endpointId = endpointId;
124
+ placement.type = 'network';
125
+ }
126
+
117
127
  placements.push({
118
128
  ...placement,
119
- placementId: bid.params.placementId,
120
129
  bidId: bid.bidId,
121
130
  sizes: sizes || [],
122
131
  wPlayer: sizes ? sizes[0] : 0,