prebid.js 5.14.0 → 5.18.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 (397) hide show
  1. package/.devcontainer/Dockerfile +11 -0
  2. package/.devcontainer/devcontainer.json +27 -0
  3. package/.devcontainer/postCreate.sh +6 -0
  4. package/allowedModules.js +2 -1
  5. package/integrationExamples/gpt/afpExample.html +242 -0
  6. package/integrationExamples/gpt/afpGamExample.html +152 -0
  7. package/integrationExamples/gpt/weboramaRtdProvider_example.html +126 -0
  8. package/modules/.submodules.json +29 -27
  9. package/modules/33acrossBidAdapter.js +23 -20
  10. package/modules/a4gBidAdapter.js +3 -3
  11. package/modules/ablidaBidAdapter.js +2 -2
  12. package/modules/adWMGBidAdapter.js +4 -4
  13. package/modules/adagioAnalyticsAdapter.js +4 -4
  14. package/modules/adagioBidAdapter.js +85 -82
  15. package/modules/adbookpspBidAdapter.js +56 -54
  16. package/modules/adfBidAdapter.js +24 -16
  17. package/modules/adgenerationBidAdapter.js +42 -18
  18. package/modules/adhashBidAdapter.js +105 -0
  19. package/modules/adhashBidAdapter.md +1 -1
  20. package/modules/adkernelAdnAnalyticsAdapter.js +6 -6
  21. package/modules/adkernelAdnBidAdapter.js +23 -23
  22. package/modules/adkernelBidAdapter.js +49 -44
  23. package/modules/adlooxAdServerVideo.js +26 -26
  24. package/modules/adlooxAnalyticsAdapter.js +38 -35
  25. package/modules/adlooxRtdProvider.js +49 -46
  26. package/modules/admanBidAdapter.js +4 -4
  27. package/modules/admixerBidAdapter.js +13 -2
  28. package/modules/admixerIdSystem.js +4 -4
  29. package/modules/adnowBidAdapter.js +4 -4
  30. package/modules/adnuntiusBidAdapter.js +6 -5
  31. package/modules/adoceanBidAdapter.js +10 -10
  32. package/modules/adpartnerBidAdapter.js +3 -3
  33. package/modules/adpod.js +45 -42
  34. package/modules/adprimeBidAdapter.js +4 -4
  35. package/modules/adqueryBidAdapter.js +204 -0
  36. package/modules/adqueryBidAdapter.md +32 -0
  37. package/modules/adrelevantisBidAdapter.js +30 -27
  38. package/modules/adriverBidAdapter.js +13 -13
  39. package/modules/adtargetBidAdapter.js +24 -24
  40. package/modules/adtelligentBidAdapter.js +29 -29
  41. package/modules/adtrueBidAdapter.js +35 -35
  42. package/modules/aduptechBidAdapter.js +10 -10
  43. package/modules/advangelistsBidAdapter.js +14 -14
  44. package/modules/adxcgAnalyticsAdapter.js +5 -5
  45. package/modules/adxcgBidAdapter.js +56 -56
  46. package/modules/adxpremiumAnalyticsAdapter.js +17 -17
  47. package/modules/adyoulikeBidAdapter.js +11 -11
  48. package/modules/afpBidAdapter.js +166 -0
  49. package/modules/afpBidAdapter.md +348 -0
  50. package/modules/ajaBidAdapter.js +12 -12
  51. package/modules/akamaiDAPIdSystem.js +9 -9
  52. package/modules/aniviewBidAdapter.js +2 -2
  53. package/modules/aolBidAdapter.js +15 -14
  54. package/modules/apacdexBidAdapter.js +16 -16
  55. package/modules/appnexusBidAdapter.js +59 -59
  56. package/modules/apstreamBidAdapter.js +5 -5
  57. package/modules/asoBidAdapter.js +30 -30
  58. package/modules/astraoneBidAdapter.js +2 -2
  59. package/modules/atsAnalyticsAdapter.js +35 -30
  60. package/modules/audiencerunBidAdapter.js +15 -15
  61. package/modules/automatadBidAdapter.js +2 -2
  62. package/modules/axonixBidAdapter.js +7 -7
  63. package/modules/beachfrontBidAdapter.js +23 -23
  64. package/modules/beopBidAdapter.js +22 -22
  65. package/modules/bidViewabilityIO.js +7 -7
  66. package/modules/bidglassBidAdapter.js +8 -8
  67. package/modules/bidscubeBidAdapter.js +3 -3
  68. package/modules/bizzclickBidAdapter.js +10 -10
  69. package/modules/bliinkBidAdapter.js +58 -32
  70. package/modules/bliinkBidAdapter.md +29 -6
  71. package/modules/bluebillywigBidAdapter.js +30 -30
  72. package/modules/boldwinBidAdapter.js +4 -4
  73. package/modules/braveBidAdapter.js +5 -5
  74. package/modules/bridgewellBidAdapter.js +5 -5
  75. package/modules/brightMountainMediaBidAdapter.js +10 -10
  76. package/modules/brightcomBidAdapter.js +18 -18
  77. package/modules/britepoolIdSystem.js +7 -7
  78. package/modules/browsiRtdProvider.js +8 -8
  79. package/modules/bucksenseBidAdapter.js +9 -9
  80. package/modules/buzzoolaBidAdapter.js +4 -4
  81. package/modules/byDataAnalyticsAdapter.js +12 -12
  82. package/modules/ccxBidAdapter.js +38 -38
  83. package/modules/cleanmedianetBidAdapter.js +9 -9
  84. package/modules/clickforceBidAdapter.js +4 -4
  85. package/modules/cointrafficBidAdapter.js +4 -4
  86. package/modules/coinzillaBidAdapter.js +2 -2
  87. package/modules/colossussspBidAdapter.js +7 -3
  88. package/modules/concertAnalyticsAdapter.js +3 -3
  89. package/modules/concertBidAdapter.js +16 -17
  90. package/modules/connectadBidAdapter.js +13 -13
  91. package/modules/consentManagement.js +29 -28
  92. package/modules/consentManagementUsp.js +14 -14
  93. package/modules/consumableBidAdapter.js +3 -3
  94. package/modules/contentexchangeBidAdapter.js +5 -5
  95. package/modules/conversantBidAdapter.js +32 -31
  96. package/modules/cpmstarBidAdapter.js +8 -9
  97. package/modules/craftBidAdapter.js +10 -10
  98. package/modules/criteoBidAdapter.js +16 -16
  99. package/modules/criteoIdSystem.js +5 -5
  100. package/modules/currency.js +18 -18
  101. package/modules/cwireBidAdapter.js +272 -0
  102. package/modules/cwireBidAdapter.md +43 -0
  103. package/modules/datablocksBidAdapter.js +12 -12
  104. package/modules/deepintentBidAdapter.js +13 -13
  105. package/modules/dgkeywordRtdProvider.js +10 -11
  106. package/modules/districtmDMXBidAdapter.js +15 -15
  107. package/modules/dmdIdSystem.js +5 -5
  108. package/modules/docereeBidAdapter.js +9 -9
  109. package/modules/dspxBidAdapter.js +5 -5
  110. package/modules/ebdrBidAdapter.js +9 -9
  111. package/modules/emx_digitalBidAdapter.js +23 -23
  112. package/modules/enrichmentFpdModule.js +10 -9
  113. package/modules/eplanningAnalyticsAdapter.js +2 -2
  114. package/modules/eplanningBidAdapter.js +10 -10
  115. package/modules/etargetBidAdapter.js +4 -4
  116. package/modules/express.js +9 -10
  117. package/modules/fabrickIdSystem.js +6 -6
  118. package/modules/feedadBidAdapter.js +5 -5
  119. package/modules/fintezaAnalyticsAdapter.js +4 -4
  120. package/modules/flocIdSystem.js +5 -5
  121. package/modules/fluctBidAdapter.js +6 -5
  122. package/modules/freewheel-sspBidAdapter.js +6 -6
  123. package/modules/gamoshiBidAdapter.js +22 -22
  124. package/modules/gdprEnforcement.js +13 -14
  125. package/modules/getintentBidAdapter.js +3 -4
  126. package/modules/glimpseBidAdapter.js +160 -48
  127. package/modules/glimpseBidAdapter.md +11 -74
  128. package/modules/gmosspBidAdapter.js +17 -17
  129. package/modules/gnetBidAdapter.js +5 -5
  130. package/modules/googleAnalyticsAdapter.js +6 -6
  131. package/modules/gothamadsBidAdapter.js +9 -9
  132. package/modules/gptPreAuction.js +7 -7
  133. package/modules/gridBidAdapter.js +15 -16
  134. package/modules/gridNMBidAdapter.js +214 -63
  135. package/modules/growadvertisingBidAdapter.js +7 -8
  136. package/modules/gumgumBidAdapter.js +19 -13
  137. package/modules/h12mediaBidAdapter.js +12 -12
  138. package/modules/haloIdSystem.js +8 -8
  139. package/modules/hybridBidAdapter.js +7 -7
  140. package/modules/iasRtdProvider.js +79 -63
  141. package/modules/id5IdSystem.js +24 -24
  142. package/modules/idImportLibrary.js +35 -35
  143. package/modules/idxIdSystem.js +3 -3
  144. package/modules/impactifyBidAdapter.js +10 -10
  145. package/modules/improvedigitalBidAdapter.js +36 -36
  146. package/modules/imuIdSystem.js +6 -6
  147. package/modules/inmarBidAdapter.js +2 -2
  148. package/modules/innityBidAdapter.js +3 -3
  149. package/modules/inskinBidAdapter.js +14 -2
  150. package/modules/inskinBidAdapter.md +5 -4
  151. package/modules/instreamTracking.js +5 -5
  152. package/modules/integr8BidAdapter.js +4 -4
  153. package/modules/intentIqIdSystem.js +7 -7
  154. package/modules/interactiveOffersBidAdapter.js +5 -5
  155. package/modules/invibesBidAdapter.js +53 -19
  156. package/modules/invisiblyAnalyticsAdapter.js +5 -5
  157. package/modules/iqmBidAdapter.js +19 -19
  158. package/modules/iqzoneBidAdapter.js +5 -5
  159. package/modules/ixBidAdapter.js +73 -73
  160. package/modules/jixieBidAdapter.js +6 -6
  161. package/modules/justpremiumBidAdapter.js +5 -1
  162. package/modules/kargoBidAdapter.js +16 -9
  163. package/modules/kargoBidAdapter.md +20 -0
  164. package/modules/kinessoIdSystem.js +8 -8
  165. package/modules/koblerBidAdapter.js +12 -12
  166. package/modules/konduitAnalyticsAdapter.js +4 -4
  167. package/modules/konduitWrapper.js +14 -14
  168. package/modules/krushmediaBidAdapter.js +4 -4
  169. package/modules/kubientBidAdapter.js +5 -5
  170. package/modules/limelightDigitalBidAdapter.js +4 -4
  171. package/modules/liveIntentIdSystem.js +4 -5
  172. package/modules/livewrappedAnalyticsAdapter.js +27 -15
  173. package/modules/livewrappedBidAdapter.js +7 -7
  174. package/modules/liveyieldAnalyticsAdapter.js +13 -13
  175. package/modules/lockerdomeBidAdapter.js +2 -2
  176. package/modules/loganBidAdapter.js +4 -4
  177. package/modules/lotamePanoramaIdSystem.js +13 -13
  178. package/modules/lunamediahbBidAdapter.js +2 -2
  179. package/modules/madvertiseBidAdapter.js +3 -3
  180. package/modules/marsmediaBidAdapter.js +26 -26
  181. package/modules/mathildeadsBidAdapter.js +5 -5
  182. package/modules/mediaforceBidAdapter.js +11 -11
  183. package/modules/mediakeysBidAdapter.js +444 -53
  184. package/modules/mediakeysBidAdapter.md +108 -0
  185. package/modules/medianetAnalyticsAdapter.js +48 -125
  186. package/modules/medianetBidAdapter.js +38 -33
  187. package/modules/medianetRtdProvider.js +7 -7
  188. package/modules/merkleIdSystem.js +19 -19
  189. package/modules/mgidBidAdapter.js +50 -50
  190. package/modules/microadBidAdapter.js +3 -3
  191. package/modules/multibid/index.js +15 -13
  192. package/modules/mwOpenLinkIdSystem.js +7 -7
  193. package/modules/mytargetBidAdapter.js +112 -0
  194. package/modules/nativoBidAdapter.js +46 -31
  195. package/modules/nativoBidAdapter.md +0 -1
  196. package/modules/naveggIdSystem.js +3 -3
  197. package/modules/nextMillenniumBidAdapter.js +6 -6
  198. package/modules/nextrollBidAdapter.js +375 -0
  199. package/modules/nobidBidAdapter.js +12 -11
  200. package/modules/novatiqIdSystem.js +8 -8
  201. package/modules/oguryBidAdapter.js +22 -6
  202. package/modules/oneVideoBidAdapter.js +20 -20
  203. package/modules/onomagicBidAdapter.js +16 -16
  204. package/modules/ooloAnalyticsAdapter.js +13 -13
  205. package/modules/openwebBidAdapter.js +26 -26
  206. package/modules/openxAnalyticsAdapter.js +33 -33
  207. package/modules/openxBidAdapter.js +29 -29
  208. package/modules/operaadsBidAdapter.js +53 -53
  209. package/modules/optimeraRtdProvider.js +9 -9
  210. package/modules/optoutBidAdapter.js +3 -3
  211. package/modules/orbidderBidAdapter.js +3 -3
  212. package/modules/outbrainBidAdapter.js +13 -13
  213. package/modules/ozoneBidAdapter.js +131 -131
  214. package/modules/padsquadBidAdapter.js +4 -4
  215. package/modules/parrableIdSystem.js +17 -17
  216. package/modules/pixfutureBidAdapter.js +45 -25
  217. package/modules/pixfutureBidAdapter.md +127 -0
  218. package/modules/prebidServerBidAdapter/index.js +109 -105
  219. package/modules/prebidmanagerAnalyticsAdapter.js +7 -7
  220. package/modules/priceFloors.js +47 -47
  221. package/modules/proxistoreBidAdapter.js +6 -8
  222. package/modules/pubCommonId.js +11 -11
  223. package/modules/pubProvidedIdSystem.js +3 -3
  224. package/modules/publinkIdSystem.js +23 -7
  225. package/modules/publinkIdSystem.md +7 -2
  226. package/modules/pubmaticAnalyticsAdapter.js +16 -16
  227. package/modules/pubmaticBidAdapter.js +109 -93
  228. package/modules/pubmaticBidAdapter.md +1 -1
  229. package/modules/pubperfAnalyticsAdapter.js +3 -3
  230. package/modules/pubwiseAnalyticsAdapter.js +6 -6
  231. package/modules/pubwiseBidAdapter.js +23 -23
  232. package/modules/pubxBidAdapter.js +2 -2
  233. package/modules/pubxaiAnalyticsAdapter.js +7 -7
  234. package/modules/pulsepointBidAdapter.js +13 -13
  235. package/modules/pxyzBidAdapter.js +7 -7
  236. package/modules/quantcastBidAdapter.js +16 -16
  237. package/modules/radsBidAdapter.js +5 -5
  238. package/modules/realvuAnalyticsAdapter.js +5 -7
  239. package/modules/reconciliationRtdProvider.js +6 -6
  240. package/modules/relaidoBidAdapter.js +44 -38
  241. package/modules/resetdigitalBidAdapter.js +3 -4
  242. package/modules/revcontentBidAdapter.js +9 -9
  243. package/modules/rhythmoneBidAdapter.js +17 -16
  244. package/modules/richaudienceBidAdapter.js +9 -9
  245. package/modules/riseBidAdapter.js +26 -26
  246. package/modules/riseBidAdapter.md +1 -3
  247. package/modules/roxotAnalyticsAdapter.js +14 -14
  248. package/modules/rtbhouseBidAdapter.js +7 -7
  249. package/modules/rtbsapeBidAdapter.js +3 -4
  250. package/modules/rtdModule/index.js +3 -3
  251. package/modules/rubiconAnalyticsAdapter.js +82 -82
  252. package/modules/rubiconBidAdapter.js +72 -68
  253. package/modules/scaleableAnalyticsAdapter.js +2 -2
  254. package/modules/seedingAllianceBidAdapter.js +231 -0
  255. package/modules/seedtagBidAdapter.js +10 -10
  256. package/modules/sharedIdSystem.js +11 -11
  257. package/modules/sharethroughAnalyticsAdapter.js +8 -8
  258. package/modules/sharethroughBidAdapter.js +20 -27
  259. package/modules/showheroes-bsBidAdapter.js +23 -23
  260. package/modules/sigmoidAnalyticsAdapter.js +4 -5
  261. package/modules/sirdataRtdProvider.js +34 -34
  262. package/modules/sizeMappingV2.js +39 -39
  263. package/modules/slimcutBidAdapter.js +121 -0
  264. package/modules/smaatoBidAdapter.js +44 -44
  265. package/modules/smartadserverBidAdapter.js +7 -7
  266. package/modules/smartxBidAdapter.js +72 -72
  267. package/modules/smartyadsBidAdapter.js +2 -2
  268. package/modules/smilewantedBidAdapter.js +6 -6
  269. package/modules/sonobiAnalyticsAdapter.js +23 -23
  270. package/modules/sortableAnalyticsAdapter.js +5 -5
  271. package/modules/sortableBidAdapter.js +28 -28
  272. package/modules/sovrnAnalyticsAdapter.js +5 -5
  273. package/modules/sovrnBidAdapter.js +22 -22
  274. package/modules/spotxBidAdapter.js +97 -83
  275. package/modules/sspBCBidAdapter.js +216 -21
  276. package/modules/sspBCBidAdapter.md +1 -1
  277. package/modules/staqAnalyticsAdapter.js +9 -9
  278. package/modules/stroeerCoreBidAdapter.js +16 -16
  279. package/modules/sublimeBidAdapter.js +6 -6
  280. package/modules/talkadsBidAdapter.js +129 -0
  281. package/modules/talkadsBidAdapter.md +60 -0
  282. package/modules/tapadIdSystem.js +3 -3
  283. package/modules/tappxBidAdapter.js +63 -64
  284. package/modules/teadsBidAdapter.js +20 -20
  285. package/modules/telariaBidAdapter.js +17 -17
  286. package/modules/temedyaBidAdapter.js +4 -4
  287. package/modules/terceptAnalyticsAdapter.js +4 -4
  288. package/modules/theAdxBidAdapter.js +16 -16
  289. package/modules/timeoutRtdProvider.js +15 -15
  290. package/modules/tpmnBidAdapter.js +3 -3
  291. package/modules/trionBidAdapter.js +15 -15
  292. package/modules/tripleliftBidAdapter.js +27 -24
  293. package/modules/truereachBidAdapter.js +4 -4
  294. package/modules/trustxBidAdapter.js +22 -18
  295. package/modules/ucfunnelBidAdapter.js +3 -3
  296. package/modules/uid2IdSystem.js +6 -6
  297. package/modules/underdogmediaBidAdapter.js +4 -4
  298. package/modules/unicornBidAdapter.js +15 -15
  299. package/modules/unifiedIdSystem.js +4 -4
  300. package/modules/unrulyBidAdapter.js +16 -16
  301. package/modules/userId/eids.js +9 -9
  302. package/modules/userId/index.js +37 -35
  303. package/modules/validationFpdModule/index.js +15 -15
  304. package/modules/vdoaiBidAdapter.js +2 -2
  305. package/modules/verizonMediaIdSystem.js +5 -5
  306. package/modules/vidazooBidAdapter.js +5 -5
  307. package/modules/videobyteBidAdapter.js +24 -24
  308. package/modules/videoreachBidAdapter.js +7 -7
  309. package/modules/vidoomyBidAdapter.js +105 -22
  310. package/modules/viewdeosDXBidAdapter.js +17 -17
  311. package/modules/visxBidAdapter.js +21 -29
  312. package/modules/voxBidAdapter.js +7 -7
  313. package/modules/vuukleBidAdapter.js +2 -2
  314. package/modules/waardexBidAdapter.js +26 -26
  315. package/modules/weboramaRtdProvider.js +174 -0
  316. package/modules/weboramaRtdProvider.md +70 -0
  317. package/modules/winrBidAdapter.js +27 -27
  318. package/modules/wipesBidAdapter.js +2 -2
  319. package/modules/yahoosspBidAdapter.js +637 -0
  320. package/modules/yahoosspBidAdapter.md +795 -0
  321. package/modules/yieldlabBidAdapter.js +57 -12
  322. package/modules/yieldlabBidAdapter.md +16 -1
  323. package/modules/yieldliftBidAdapter.js +9 -9
  324. package/modules/yieldmoBidAdapter.js +64 -50
  325. package/modules/yieldoneAnalyticsAdapter.js +6 -6
  326. package/modules/yieldoneBidAdapter.js +11 -11
  327. package/modules/yuktamediaAnalyticsAdapter.js +15 -15
  328. package/modules/zeotapIdPlusIdSystem.js +2 -2
  329. package/modules/zetaBidAdapter.js +6 -6
  330. package/modules/zeta_global_sspBidAdapter.js +14 -14
  331. package/package.json +1 -1
  332. package/src/AnalyticsAdapter.js +6 -6
  333. package/src/Renderer.js +10 -8
  334. package/src/adapterManager.js +45 -42
  335. package/src/adloader.js +6 -6
  336. package/src/ajax.js +8 -9
  337. package/src/auction.js +26 -23
  338. package/src/bidfactory.js +2 -2
  339. package/src/config.js +52 -50
  340. package/src/cpmBucketManager.js +2 -2
  341. package/src/prebid.js +85 -81
  342. package/src/storageManager.js +5 -5
  343. package/src/targeting.js +25 -26
  344. package/src/userSync.js +35 -22
  345. package/src/videoCache.js +2 -2
  346. package/test/.eslintrc.js +2 -1
  347. package/test/spec/modules/adfBidAdapter_spec.js +55 -0
  348. package/test/spec/modules/adgenerationBidAdapter_spec.js +121 -50
  349. package/test/spec/modules/adhashBidAdapter_spec.js +155 -0
  350. package/test/spec/modules/adnuntiusBidAdapter_spec.js +68 -0
  351. package/test/spec/modules/adqueryBidAdapter_spec.js +185 -0
  352. package/test/spec/modules/afpBidAdapter_spec.js +306 -0
  353. package/test/spec/modules/atsAnalyticsAdapter_spec.js +37 -2
  354. package/test/spec/modules/bliinkBidAdapter_spec.js +87 -36
  355. package/test/spec/modules/colossussspBidAdapter_spec.js +14 -6
  356. package/test/spec/modules/cwireBidAdapter_spec.js +246 -0
  357. package/test/spec/modules/eplanningBidAdapter_spec.js +3 -3
  358. package/test/spec/modules/glimpseBidAdapter_spec.js +302 -204
  359. package/test/spec/modules/gridBidAdapter_spec.js +38 -2
  360. package/test/spec/modules/gridNMBidAdapter_spec.js +121 -47
  361. package/test/spec/modules/gumgumBidAdapter_spec.js +27 -6
  362. package/test/spec/modules/iasRtdProvider_spec.js +71 -6
  363. package/test/spec/modules/inskinBidAdapter_spec.js +10 -1
  364. package/test/spec/modules/invibesBidAdapter_spec.js +114 -2
  365. package/test/spec/modules/justpremiumBidAdapter_spec.js +16 -2
  366. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +33 -7
  367. package/test/spec/modules/mediakeysBidAdapter_spec.js +406 -51
  368. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +39 -7
  369. package/test/spec/modules/medianetBidAdapter_spec.js +62 -1
  370. package/test/spec/modules/mytargetBidAdapter_spec.js +199 -0
  371. package/test/spec/modules/nativoBidAdapter_spec.js +50 -3
  372. package/test/spec/modules/nextrollBidAdapter_spec.js +290 -0
  373. package/test/spec/modules/nobidBidAdapter_spec.js +65 -1
  374. package/test/spec/modules/oguryBidAdapter_spec.js +120 -7
  375. package/test/spec/modules/publinkIdSystem_spec.js +42 -12
  376. package/test/spec/modules/pubmaticBidAdapter_spec.js +217 -1
  377. package/test/spec/modules/relaidoBidAdapter_spec.js +21 -20
  378. package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +100 -81
  379. package/test/spec/modules/rubiconAnalyticsSchema.json +5 -2
  380. package/test/spec/modules/seedingAllianceAdapter_spec.js +186 -0
  381. package/test/spec/modules/sharethroughBidAdapter_spec.js +156 -136
  382. package/test/spec/modules/slimcutBidAdapter_spec.js +200 -0
  383. package/test/spec/modules/spotxBidAdapter_spec.js +36 -0
  384. package/test/spec/modules/sspBCBidAdapter_spec.js +210 -62
  385. package/test/spec/modules/talkadsBidAdapter_spec.js +231 -0
  386. package/test/spec/modules/tappxBidAdapter_spec.js +39 -3
  387. package/test/spec/modules/tripleliftBidAdapter_spec.js +2 -0
  388. package/test/spec/modules/trustxBidAdapter_spec.js +35 -2
  389. package/test/spec/modules/unicornBidAdapter_spec.js +4 -4
  390. package/test/spec/modules/visxBidAdapter_spec.js +48 -4
  391. package/test/spec/modules/weboramaRtdProvider_spec.js +288 -0
  392. package/test/spec/modules/yahoosspBidAdapter_spec.js +1332 -0
  393. package/test/spec/modules/yieldlabBidAdapter_spec.js +65 -1
  394. package/test/spec/modules/yieldmoBidAdapter_spec.js +30 -9
  395. package/test/spec/unit/pbjs_api_spec.js +4 -0
  396. package/test/spec/userSync_spec.js +30 -2
  397. package/modules/turktelekomBidAdapter.md +0 -49
@@ -0,0 +1,174 @@
1
+ /**
2
+ * This module adds Weborama provider to the real time data module
3
+ * The {@link module:modules/realTimeData} module is required
4
+ * The module will fetch contextual data (page-centric) from Weborama server
5
+ * @module modules/weboramaRtdProvider
6
+ * @requires module:modules/realTimeData
7
+ */
8
+
9
+ /**
10
+ * @typedef {Object} ModuleParams
11
+ * @property {WeboCtxConf} weboCtxConf
12
+ */
13
+
14
+ /**
15
+ * @typedef {Object} WeboCtxConf
16
+ * @property {string} token required token to be used on bigsea contextual API requests
17
+ * @property {?string} targetURL specify the target url instead use the referer
18
+ * @property {?boolean} setTargeting if true will set the GAM targeting
19
+ * @property {?object} defaultProfile to be used if the profile is not found
20
+ */
21
+
22
+ import { deepSetValue, logError, tryAppendQueryString, logMessage } from '../src/utils.js';
23
+ import {submodule} from '../src/hook.js';
24
+ import {ajax} from '../src/ajax.js';
25
+ import {config} from '../src/config.js';
26
+
27
+ /** @type {string} */
28
+ const MODULE_NAME = 'realTimeData';
29
+ /** @type {string} */
30
+ const SUBMODULE_NAME = 'weborama';
31
+ /** @type {string} */
32
+ const WEBO_CTX = 'webo_ctx';
33
+ /** @type {string} */
34
+ const WEBO_DS = 'webo_ds';
35
+
36
+ /** @type {null|Object} */
37
+ let _bigseaContextualProfile = null;
38
+
39
+ /** function that provides ad server targeting data to RTD-core
40
+ * @param {Array} adUnitsCodes
41
+ * @param {Object} moduleConfig
42
+ * @returns {Object} target data
43
+ */
44
+ function getTargetingData(adUnitsCodes, moduleConfig) {
45
+ moduleConfig = moduleConfig || {};
46
+ const moduleParams = moduleConfig.params || {};
47
+ const weboCtxConf = moduleParams.weboCtxConf || {};
48
+ const defaultContextualProfiles = weboCtxConf.defaultProfile || {}
49
+ const profile = _bigseaContextualProfile || defaultContextualProfiles;
50
+
51
+ if (weboCtxConf.setOrtb2) {
52
+ const ortb2 = config.getConfig('ortb2') || {};
53
+ if (profile[WEBO_CTX]) {
54
+ deepSetValue(ortb2, 'site.ext.data.webo_ctx', profile[WEBO_CTX]);
55
+ }
56
+ if (profile[WEBO_DS]) {
57
+ deepSetValue(ortb2, 'site.ext.data.webo_ds', profile[WEBO_DS]);
58
+ }
59
+ config.setConfig({ortb2: ortb2});
60
+ }
61
+
62
+ if (weboCtxConf.setTargeting === false) {
63
+ return {};
64
+ }
65
+
66
+ try {
67
+ const formattedProfile = profile;
68
+ const r = adUnitsCodes.reduce((rp, adUnitCode) => {
69
+ if (adUnitCode) {
70
+ rp[adUnitCode] = formattedProfile;
71
+ }
72
+ return rp;
73
+ }, {});
74
+ return r;
75
+ } catch (e) {
76
+ logError('unable to format weborama rtd targeting data', e);
77
+ return {};
78
+ }
79
+ }
80
+
81
+ /** set bigsea contextual profile on module state
82
+ * if the profile is empty, will store the default profile
83
+ * @param {null|Object} data
84
+ * @returns {void}
85
+ */
86
+ export function setBigseaContextualProfile(data) {
87
+ if (data && Object.keys(data).length > 0) {
88
+ _bigseaContextualProfile = data;
89
+ }
90
+ }
91
+
92
+ /** onSuccess callback type
93
+ * @callback successCallback
94
+ * @param {null|Object} data
95
+ * @returns {void}
96
+ */
97
+
98
+ /** onDone callback type
99
+ * @callback doneCallback
100
+ * @returns {void}
101
+ */
102
+
103
+ /** Fetch Bigsea Contextual Profile
104
+ * @param {WeboCtxConf} weboCtxConf
105
+ * @param {successCallback} onSuccess callback
106
+ * @param {doneCallback} onDone callback
107
+ * @returns {void}
108
+ */
109
+ function fetchContextualProfile(weboCtxConf, onSuccess, onDone) {
110
+ const targetURL = weboCtxConf.targetURL || document.URL;
111
+ const token = weboCtxConf.token;
112
+
113
+ let queryString = '';
114
+ queryString = tryAppendQueryString(queryString, 'token', token);
115
+ queryString = tryAppendQueryString(queryString, 'url', targetURL);
116
+
117
+ const url = 'https://ctx.weborama.com/api/profile?' + queryString;
118
+
119
+ ajax(url, {
120
+ success: function (response, req) {
121
+ if (req.status === 200) {
122
+ try {
123
+ const data = JSON.parse(response);
124
+ onSuccess(data);
125
+ onDone();
126
+ } catch (e) {
127
+ onDone();
128
+ logError('unable to parse weborama data', e);
129
+ }
130
+ } else if (req.status === 204) {
131
+ onDone();
132
+ }
133
+ },
134
+ error: function () {
135
+ onDone();
136
+ logError('unable to get weborama data');
137
+ }
138
+ },
139
+ null,
140
+ {
141
+ method: 'GET',
142
+ withCredentials: false,
143
+ });
144
+ }
145
+
146
+ /** Initialize module
147
+ * @param {object} moduleConfig
148
+ * @return {boolean} true if module was initialized with success
149
+ */
150
+ function init(moduleConfig) {
151
+ _bigseaContextualProfile = null;
152
+
153
+ moduleConfig = moduleConfig || {};
154
+ const moduleParams = moduleConfig.params || {};
155
+ const weboCtxConf = moduleParams.weboCtxConf || {};
156
+
157
+ if (weboCtxConf.token) {
158
+ fetchContextualProfile(weboCtxConf, setBigseaContextualProfile,
159
+ () => logMessage('fetchContextualProfile on init is done'));
160
+ } else {
161
+ logError('missing param "token" for weborama rtd module initialization');
162
+ return false;
163
+ }
164
+
165
+ return true;
166
+ }
167
+
168
+ export const weboramaSubmodule = {
169
+ name: SUBMODULE_NAME,
170
+ init: init,
171
+ getTargetingData: getTargetingData,
172
+ };
173
+
174
+ submodule(MODULE_NAME, weboramaSubmodule);
@@ -0,0 +1,70 @@
1
+ # Weborama Real-Time Data Submodule
2
+
3
+ ```
4
+ Module Name: Weborama Rtd Provider
5
+ Module Type: Rtd Provider
6
+ Maintainer: prebid-support@weborama.com
7
+ ```
8
+
9
+ # Description
10
+
11
+ Weborama provides a Semantic AI Contextual API that classifies in Real-time a web page seen by a web user within generic and custom topics. It enables publishers to better monetize their inventory and unlock it to programmatic.
12
+
13
+ ORTB2 compliant and FPD support for Prebid versions < 4.29
14
+
15
+ Contact prebid-support@weborama.com for information.
16
+
17
+ ### Publisher Usage
18
+
19
+ Compile the Weborama RTD module into your Prebid build:
20
+
21
+ `gulp build --modules=rtdModule,weboramaRtdProvider`
22
+
23
+ Add the Weborama RTD provider to your Prebid config.
24
+
25
+ ```javascript
26
+ pbjs.setConfig(
27
+ ...
28
+ realTimeData: {
29
+ auctionDelay: 1000,
30
+ dataProviders: [
31
+ {
32
+ name: "weborama",
33
+ waitForIt: true,
34
+ params: {
35
+ weboCtxConf: {
36
+ setTargeting: true,
37
+ token: "<<token provided by weborama>>",
38
+ targetURL: "..." // default is document.URL
39
+ }
40
+ }
41
+ }
42
+ ]
43
+ }
44
+ ...
45
+ }
46
+ ```
47
+
48
+ ### Parameter Descriptions for the Weborama Configuration Section
49
+
50
+ | Name |Type | Description | Notes |
51
+ | :------------ | :------------ | :------------ |:------------ |
52
+ | name | String | Real time data module name | Mandatory. Always 'Weborama' |
53
+ | waitForIt | Boolean | Mandatory. Required to ensure that the auction is delayed until prefetch is complete | Optional. Defaults to false but recommended to true |
54
+ | params | Object | | Optional |
55
+ | params.weboCtxConf | Object | Weborama Contextual Configuration | Optional |
56
+ | params.weboCtxConf.token | String | Security Token provided by Weborama, unique per client | Mandatory |
57
+ | params.weboCtxConf.targetURL | String | Url to be profiled in the contextual api | Optional. Defaults to `document.URL` |
58
+ | params.weboCtxConf.defaultProfile | Object | default value of the profile to be used when there are no response from contextual api (such as timeout)| Optional. Default is `{}` |
59
+ | params.weboCtxConf.setTargeting|Boolean|If true, will use the contextual profile to set the gam targeting of all adunits managed by prebid.js| Optional. Default is *true*.|
60
+ | params.weboCtxConf.setOrtb2|Boolean|If true, will use the contextual profile to set the ortb2 configuration on `site.ext.data`| Optional. Default is *false*.|
61
+
62
+ ### Testing
63
+
64
+ To view an example of available segments returned by Weborama's backends:
65
+
66
+ `gulp serve --modules=rtdModule,weboramaRtdProvider,appnexusBidAdapter`
67
+
68
+ and then point your browser at:
69
+
70
+ `http://localhost:9999/integrationExamples/gpt/weboramaRtdProvider_example.html`
@@ -1,4 +1,4 @@
1
- import * as utils from '../src/utils.js';
1
+ import { convertCamelToUnderscore, isArray, isNumber, isPlainObject, deepAccess, logError, convertTypes, getParameterByName, getBidRequest, isEmpty, transformBidderParamKeywords, isFn } from '../src/utils.js';
2
2
  import { config } from '../src/config.js';
3
3
  import { registerBidder } from '../src/adapters/bidderFactory.js';
4
4
  import { BANNER } from '../src/mediaTypes.js';
@@ -139,16 +139,16 @@ export const spec = {
139
139
  Object.keys(userObjBid.params.user)
140
140
  .filter((param) => includes(USER_PARAMS, param))
141
141
  .forEach((param) => {
142
- let uparam = utils.convertCamelToUnderscore(param);
142
+ let uparam = convertCamelToUnderscore(param);
143
143
  if (
144
144
  param === 'segments' &&
145
- utils.isArray(userObjBid.params.user[param])
145
+ isArray(userObjBid.params.user[param])
146
146
  ) {
147
147
  let segs = [];
148
148
  userObjBid.params.user[param].forEach((val) => {
149
- if (utils.isNumber(val)) {
149
+ if (isNumber(val)) {
150
150
  segs.push({ id: val });
151
- } else if (utils.isPlainObject(val)) {
151
+ } else if (isPlainObject(val)) {
152
152
  segs.push(val);
153
153
  }
154
154
  });
@@ -228,12 +228,12 @@ export const spec = {
228
228
  if (bidRequests[0].userId) {
229
229
  let eids = [];
230
230
 
231
- addUserId(eids, utils.deepAccess(bidRequests[0], `userId.flocId.id`), 'chrome.com', null);
232
- addUserId(eids, utils.deepAccess(bidRequests[0], `userId.criteoId`), 'criteo.com', null);
233
- addUserId(eids, utils.deepAccess(bidRequests[0], `userId.netId`), 'netid.de', null);
234
- addUserId(eids, utils.deepAccess(bidRequests[0], `userId.idl_env`), 'liveramp.com', null);
235
- addUserId(eids, utils.deepAccess(bidRequests[0], `userId.tdid`), 'adserver.org', 'TDID');
236
- addUserId(eids, utils.deepAccess(bidRequests[0], `userId.uid2.id`), 'uidapi.com', 'UID2');
231
+ addUserId(eids, deepAccess(bidRequests[0], `userId.flocId.id`), 'chrome.com', null);
232
+ addUserId(eids, deepAccess(bidRequests[0], `userId.criteoId`), 'criteo.com', null);
233
+ addUserId(eids, deepAccess(bidRequests[0], `userId.netId`), 'netid.de', null);
234
+ addUserId(eids, deepAccess(bidRequests[0], `userId.idl_env`), 'liveramp.com', null);
235
+ addUserId(eids, deepAccess(bidRequests[0], `userId.tdid`), 'adserver.org', 'TDID');
236
+ addUserId(eids, deepAccess(bidRequests[0], `userId.uid2.id`), 'uidapi.com', 'UID2');
237
237
 
238
238
  if (eids.length) {
239
239
  payload.eids = eids;
@@ -262,7 +262,7 @@ export const spec = {
262
262
  if (serverResponse && serverResponse.error) {
263
263
  errorMessage += `: ${serverResponse.error}`;
264
264
  }
265
- utils.logError(errorMessage);
265
+ logError(errorMessage);
266
266
  return bids;
267
267
  }
268
268
 
@@ -297,12 +297,12 @@ export const spec = {
297
297
  },
298
298
 
299
299
  transformBidParams: function (params, isOpenRtb) {
300
- params = utils.convertTypes(
300
+ params = convertTypes(
301
301
  {
302
302
  member: 'string',
303
303
  invCode: 'string',
304
304
  placementId: 'number',
305
- keywords: utils.transformBidderParamKeywords,
305
+ keywords: transformBidderParamKeywords,
306
306
  publisherId: 'number',
307
307
  },
308
308
  params
@@ -322,7 +322,7 @@ export const spec = {
322
322
  }
323
323
 
324
324
  Object.keys(params).forEach((paramKey) => {
325
- let convertedKey = utils.convertCamelToUnderscore(paramKey);
325
+ let convertedKey = convertCamelToUnderscore(paramKey);
326
326
  if (convertedKey !== paramKey) {
327
327
  params[convertedKey] = params[paramKey];
328
328
  delete params[paramKey];
@@ -335,7 +335,7 @@ export const spec = {
335
335
  };
336
336
 
337
337
  function isPopulatedArray(arr) {
338
- return !!(utils.isArray(arr) && arr.length > 0);
338
+ return !!(isArray(arr) && arr.length > 0);
339
339
  }
340
340
 
341
341
  function deleteValues(keyPairObj) {
@@ -352,7 +352,7 @@ function hasPurpose1Consent(bidderRequest) {
352
352
  bidderRequest.gdprConsent.apiVersion === 2
353
353
  ) {
354
354
  result = !!(
355
- utils.deepAccess(
355
+ deepAccess(
356
356
  bidderRequest.gdprConsent,
357
357
  'vendorData.purpose.consents.1'
358
358
  ) === true
@@ -375,7 +375,7 @@ function formatRequest(payload, bidderRequest) {
375
375
  }
376
376
 
377
377
  if (
378
- utils.getParameterByName('apn_test').toUpperCase() === 'TRUE' ||
378
+ getParameterByName('apn_test').toUpperCase() === 'TRUE' ||
379
379
  config.getConfig('apn_test') === true
380
380
  ) {
381
381
  options.customHeaders = {
@@ -403,7 +403,7 @@ function formatRequest(payload, bidderRequest) {
403
403
  * @return Bid
404
404
  */
405
405
  function newBid(serverBid, rtbBid, bidderRequest) {
406
- const bidRequest = utils.getBidRequest(serverBid.uuid, [bidderRequest]);
406
+ const bidRequest = getBidRequest(serverBid.uuid, [bidderRequest]);
407
407
  const bid = {
408
408
  adType: rtbBid.ad_type,
409
409
  requestId: serverBid.uuid,
@@ -463,7 +463,7 @@ function newBid(serverBid, rtbBid, bidderRequest) {
463
463
  });
464
464
  }
465
465
  } catch (error) {
466
- utils.logError('Error assigning ad', error);
466
+ logError('Error assigning ad', error);
467
467
  }
468
468
  return bid;
469
469
  }
@@ -502,8 +502,8 @@ function bidToTag(bid) {
502
502
  if (bid.params.externalImpId) {
503
503
  tag.external_imp_id = bid.params.externalImpId;
504
504
  }
505
- if (!utils.isEmpty(bid.params.keywords)) {
506
- let keywords = utils.transformBidderParamKeywords(bid.params.keywords);
505
+ if (!isEmpty(bid.params.keywords)) {
506
+ let keywords = transformBidderParamKeywords(bid.params.keywords);
507
507
 
508
508
  if (keywords.length > 0) {
509
509
  keywords.forEach(deleteValues);
@@ -511,7 +511,7 @@ function bidToTag(bid) {
511
511
  tag.keywords = keywords;
512
512
  }
513
513
 
514
- let gpid = utils.deepAccess(bid, 'ortb2Imp.ext.data.pbadslot');
514
+ let gpid = deepAccess(bid, 'ortb2Imp.ext.data.pbadslot');
515
515
  if (gpid) {
516
516
  tag.gpid = gpid;
517
517
  }
@@ -531,9 +531,9 @@ function transformSizes(requestSizes) {
531
531
  let sizeObj = {};
532
532
 
533
533
  if (
534
- utils.isArray(requestSizes) &&
534
+ isArray(requestSizes) &&
535
535
  requestSizes.length === 2 &&
536
- !utils.isArray(requestSizes[0])
536
+ !isArray(requestSizes[0])
537
537
  ) {
538
538
  sizeObj.width = parseInt(requestSizes[0], 10);
539
539
  sizeObj.height = parseInt(requestSizes[1], 10);
@@ -596,7 +596,7 @@ function addUserId(eids, id, source, rti) {
596
596
  }
597
597
 
598
598
  function getBidFloor(bid) {
599
- if (!utils.isFn(bid.getFloor)) {
599
+ if (!isFn(bid.getFloor)) {
600
600
  return (bid.params.reserve) ? bid.params.reserve : null;
601
601
  }
602
602
 
@@ -605,7 +605,7 @@ function getBidFloor(bid) {
605
605
  mediaType: '*',
606
606
  size: '*'
607
607
  });
608
- if (utils.isPlainObject(floor) && !isNaN(floor.floor) && floor.currency === 'USD') {
608
+ if (isPlainObject(floor) && !isNaN(floor.floor) && floor.currency === 'USD') {
609
609
  return floor.floor;
610
610
  }
611
611
  return null;
@@ -1,4 +1,4 @@
1
- import * as utils from '../src/utils.js';
1
+ import { logWarn } from '../src/utils.js';
2
2
  import {config} from '../src/config.js';
3
3
  import {registerBidder} from '../src/adapters/bidderFactory.js';
4
4
  import {BANNER} from '../src/mediaTypes.js';
@@ -13,7 +13,7 @@ function isBidRequestValid(bid) {
13
13
  case !!(bid.params.asid):
14
14
  break;
15
15
  default:
16
- utils.logWarn(`isBidRequestValid Error. ${bid.params}, please check your implementation.`);
16
+ logWarn(`isBidRequestValid Error. ${bid.params}, please check your implementation.`);
17
17
  return false;
18
18
  }
19
19
  return true;