prebid.js 7.53.0 → 8.0.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 (706) hide show
  1. package/.github/workflows/codeql-analysis.yml +2 -2
  2. package/dist/1plusXRtdProvider.js +1 -1
  3. package/dist/33acrossBidAdapter.js +1 -1
  4. package/dist/33acrossIdSystem.js +1 -1
  5. package/dist/adWMGAnalyticsAdapter.js +1 -1
  6. package/dist/adWMGBidAdapter.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/adfBidAdapter.js +1 -1
  11. package/dist/adgenerationBidAdapter.js +1 -1
  12. package/dist/adhashBidAdapter.js +1 -1
  13. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  14. package/dist/adkernelAdnBidAdapter.js +1 -1
  15. package/dist/adkernelBidAdapter.js +1 -1
  16. package/dist/adlooxAdServerVideo.js +1 -1
  17. package/dist/adlooxAnalyticsAdapter.js +1 -1
  18. package/dist/adlooxRtdProvider.js +1 -1
  19. package/dist/adomikAnalyticsAdapter.js +1 -1
  20. package/dist/adprimeBidAdapter.js +1 -1
  21. package/dist/adqueryBidAdapter.js +1 -1
  22. package/dist/adrelevantisBidAdapter.js +1 -1
  23. package/dist/adtrgtmeBidAdapter.js +1 -1
  24. package/dist/adtrueBidAdapter.js +1 -1
  25. package/dist/aduptechBidAdapter.js +1 -1
  26. package/dist/advangelistsBidAdapter.js +1 -1
  27. package/dist/adxcgAnalyticsAdapter.js +1 -1
  28. package/dist/adxcgBidAdapter.js +1 -1
  29. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  30. package/dist/adyoulikeBidAdapter.js +1 -1
  31. package/dist/afpBidAdapter.js +1 -1
  32. package/dist/aidemBidAdapter.js +1 -1
  33. package/dist/airgridRtdProvider.js +1 -1
  34. package/dist/ajaBidAdapter.js +1 -1
  35. package/dist/amxBidAdapter.js +1 -1
  36. package/dist/amxIdSystem.js +1 -1
  37. package/dist/analyticsAdapter.js +1 -1
  38. package/dist/apacdexBidAdapter.js +1 -1
  39. package/dist/appierAnalyticsAdapter.js +1 -1
  40. package/dist/appnexusBidAdapter.js +1 -1
  41. package/dist/appnexusKeywords.js +1 -0
  42. package/dist/asoBidAdapter.js +1 -1
  43. package/dist/astraoneBidAdapter.js +1 -1
  44. package/dist/atsAnalyticsAdapter.js +1 -1
  45. package/dist/audiencerunBidAdapter.js +1 -1
  46. package/dist/automatadBidAdapter.js +1 -1
  47. package/dist/axonixBidAdapter.js +1 -1
  48. package/dist/beachfrontBidAdapter.js +1 -1
  49. package/dist/beopBidAdapter.js +1 -1
  50. package/dist/betweenBidAdapter.js +1 -1
  51. package/dist/bidViewability.js +1 -1
  52. package/dist/bidglassBidAdapter.js +1 -1
  53. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  54. package/dist/big-richmediaBidAdapter.js +1 -1
  55. package/dist/bizzclickBidAdapter.js +1 -1
  56. package/dist/bluebillywigBidAdapter.js +1 -1
  57. package/dist/braveBidAdapter.js +1 -1
  58. package/dist/bridgewellBidAdapter.js +1 -1
  59. package/dist/brightMountainMediaBidAdapter.js +1 -1
  60. package/dist/browsiBidAdapter.js +1 -1
  61. package/dist/byDataAnalyticsAdapter.js +1 -1
  62. package/dist/cadentApertureMXBidAdapter.js +1 -0
  63. package/dist/carodaBidAdapter.js +1 -1
  64. package/dist/categoryTranslationMapping.js +1 -0
  65. package/dist/ccxBidAdapter.js +1 -1
  66. package/dist/chtnwBidAdapter.js +1 -1
  67. package/dist/cleanmedianetBidAdapter.js +1 -1
  68. package/dist/codefuelBidAdapter.js +1 -1
  69. package/dist/colossussspBidAdapter.js +1 -1
  70. package/dist/concertAnalyticsAdapter.js +1 -1
  71. package/dist/concertBidAdapter.js +1 -1
  72. package/dist/connectIdSystem.js +1 -1
  73. package/dist/connectadBidAdapter.js +1 -1
  74. package/dist/consentManagement.js +1 -1
  75. package/dist/consentManagementGpp.js +1 -1
  76. package/dist/consentManagementUsp.js +1 -1
  77. package/dist/consumableBidAdapter.js +1 -1
  78. package/dist/conversantAnalyticsAdapter.js +1 -1
  79. package/dist/conversantBidAdapter.js +1 -1
  80. package/dist/craftBidAdapter.js +1 -1
  81. package/dist/criteoBidAdapter.js +1 -1
  82. package/dist/criteoIdSystem.js +1 -1
  83. package/dist/currency.js +1 -1
  84. package/dist/cwireBidAdapter.js +1 -1
  85. package/dist/dailyhuntBidAdapter.js +1 -1
  86. package/dist/datablocksAnalyticsAdapter.js +1 -1
  87. package/dist/datablocksBidAdapter.js +1 -1
  88. package/dist/datawrkzBidAdapter.js +1 -1
  89. package/dist/debugging-standalone.js +1 -1
  90. package/dist/debugging.js +1 -1
  91. package/dist/deltaprojectsBidAdapter.js +1 -1
  92. package/dist/dependencies.json +58 -14
  93. package/dist/dfpAdServerVideo.js +1 -1
  94. package/dist/dianomiBidAdapter.js +1 -1
  95. package/dist/displayioBidAdapter.js +1 -1
  96. package/dist/dspxBidAdapter.js +1 -1
  97. package/dist/ebdrBidAdapter.js +1 -1
  98. package/dist/eplanningAnalyticsAdapter.js +1 -1
  99. package/dist/eplanningBidAdapter.js +1 -1
  100. package/dist/etargetBidAdapter.js +1 -1
  101. package/dist/euidIdSystem.js +1 -1
  102. package/dist/feedadBidAdapter.js +1 -1
  103. package/dist/finativeBidAdapter.js +1 -1
  104. package/dist/fintezaAnalyticsAdapter.js +1 -1
  105. package/dist/fluctBidAdapter.js +1 -1
  106. package/dist/freewheel-sspBidAdapter.js +1 -1
  107. package/dist/ftrackIdSystem.js +1 -1
  108. package/dist/gamoshiBidAdapter.js +1 -1
  109. package/dist/gdprEnforcement.js +1 -1
  110. package/dist/genericAnalyticsAdapter.js +1 -1
  111. package/dist/gmosspBidAdapter.js +1 -1
  112. package/dist/gnetBidAdapter.js +1 -1
  113. package/dist/goldbachBidAdapter.js +1 -1
  114. package/dist/gothamadsBidAdapter.js +1 -1
  115. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  116. package/dist/greenbidsRtdProvider.js +1 -1
  117. package/dist/gridBidAdapter.js +1 -1
  118. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  119. package/dist/gumgumBidAdapter.js +1 -1
  120. package/dist/h12mediaBidAdapter.js +1 -1
  121. package/dist/hadronAnalyticsAdapter.js +1 -1
  122. package/dist/holidBidAdapter.js +1 -1
  123. package/dist/hybridBidAdapter.js +1 -1
  124. package/dist/hypelabBidAdapter.js +1 -0
  125. package/dist/id5AnalyticsAdapter.js +1 -1
  126. package/dist/id5IdSystem.js +1 -1
  127. package/dist/imdsBidAdapter.js +1 -0
  128. package/dist/impactifyBidAdapter.js +1 -1
  129. package/dist/improvedigitalBidAdapter.js +1 -1
  130. package/dist/insticatorBidAdapter.js +1 -1
  131. package/dist/interactiveOffersBidAdapter.js +1 -1
  132. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  133. package/dist/ixBidAdapter.js +1 -1
  134. package/dist/justpremiumBidAdapter.js +1 -1
  135. package/dist/kargoAnalyticsAdapter.js +1 -1
  136. package/dist/kargoBidAdapter.js +1 -1
  137. package/dist/keywords.js +1 -0
  138. package/dist/kinessoIdSystem.js +1 -1
  139. package/dist/koblerBidAdapter.js +1 -1
  140. package/dist/konduitAnalyticsAdapter.js +1 -1
  141. package/dist/kueezBidAdapter.js +1 -1
  142. package/dist/kueezRtbBidAdapter.js +1 -1
  143. package/dist/kulturemediaBidAdapter.js +1 -1
  144. package/dist/lassoBidAdapter.js +1 -1
  145. package/dist/lifestreetBidAdapter.js +1 -1
  146. package/dist/limelightDigitalBidAdapter.js +1 -1
  147. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  148. package/dist/liveIntentIdSystem.js +1 -1
  149. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  150. package/dist/livewrappedBidAdapter.js +1 -1
  151. package/dist/logicadBidAdapter.js +1 -1
  152. package/dist/loglyliftBidAdapter.js +1 -1
  153. package/dist/lotamePanoramaIdSystem.js +1 -1
  154. package/dist/luponmediaBidAdapter.js +1 -1
  155. package/dist/magniteAnalyticsAdapter.js +1 -1
  156. package/dist/malltvAnalyticsAdapter.js +1 -1
  157. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  158. package/dist/marsmediaBidAdapter.js +1 -1
  159. package/dist/mediaforceBidAdapter.js +1 -1
  160. package/dist/mediafuseBidAdapter.js +1 -1
  161. package/dist/mediakeysBidAdapter.js +1 -1
  162. package/dist/medianetAnalyticsAdapter.js +1 -1
  163. package/dist/medianetBidAdapter.js +1 -1
  164. package/dist/mediasniperBidAdapter.js +1 -1
  165. package/dist/mediasquareBidAdapter.js +1 -1
  166. package/dist/mgidBidAdapter.js +1 -1
  167. package/dist/microadBidAdapter.js +1 -1
  168. package/dist/minutemediaBidAdapter.js +1 -1
  169. package/dist/minutemediaplusBidAdapter.js +1 -1
  170. package/dist/newspassidBidAdapter.js +1 -1
  171. package/dist/nextMillenniumBidAdapter.js +1 -1
  172. package/dist/nexx360BidAdapter.js +1 -1
  173. package/dist/not-for-prod/prebid.js +293 -323
  174. package/dist/objectGuard.js +1 -1
  175. package/dist/oguryBidAdapter.js +1 -1
  176. package/dist/onetagBidAdapter.js +1 -1
  177. package/dist/ooloAnalyticsAdapter.js +1 -1
  178. package/dist/operaadsBidAdapter.js +1 -1
  179. package/dist/optidigitalBidAdapter.js +1 -1
  180. package/dist/optimonAnalyticsAdapter.js +1 -1
  181. package/dist/orbidderBidAdapter.js +1 -1
  182. package/dist/ortbConverter.js +1 -1
  183. package/dist/otmBidAdapter.js +1 -1
  184. package/dist/outbrainBidAdapter.js +1 -1
  185. package/dist/oxxionAnalyticsAdapter.js +1 -1
  186. package/dist/oxxionRtdProvider.js +1 -1
  187. package/dist/ozoneBidAdapter.js +1 -1
  188. package/dist/padsquadBidAdapter.js +1 -1
  189. package/dist/parrableIdSystem.js +1 -1
  190. package/dist/pbsExtensions.js +1 -1
  191. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  192. package/dist/pixfutureBidAdapter.js +1 -1
  193. package/dist/prebid-core.js +2 -2
  194. package/dist/prebidServerBidAdapter.js +1 -1
  195. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  196. package/dist/priceFloors.js +1 -1
  197. package/dist/prismaBidAdapter.js +1 -1
  198. package/dist/proxistoreBidAdapter.js +1 -1
  199. package/dist/pubgeniusBidAdapter.js +1 -1
  200. package/dist/publinkIdSystem.js +1 -1
  201. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  202. package/dist/pubmaticBidAdapter.js +1 -1
  203. package/dist/pubperfAnalyticsAdapter.js +1 -1
  204. package/dist/pubstackAnalyticsAdapter.js +1 -1
  205. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  206. package/dist/pubwiseBidAdapter.js +1 -1
  207. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  208. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  209. package/dist/pxyzBidAdapter.js +1 -1
  210. package/dist/quantcastBidAdapter.js +1 -1
  211. package/dist/quantcastIdSystem.js +1 -1
  212. package/dist/rasBidAdapter.js +1 -1
  213. package/dist/readpeakBidAdapter.js +1 -1
  214. package/dist/relaidoBidAdapter.js +1 -1
  215. package/dist/relevantAnalyticsAdapter.js +1 -1
  216. package/dist/retailspotBidAdapter.js +1 -1
  217. package/dist/revcontentBidAdapter.js +1 -1
  218. package/dist/rhythmoneBidAdapter.js +1 -1
  219. package/dist/richaudienceBidAdapter.js +1 -1
  220. package/dist/riseBidAdapter.js +1 -1
  221. package/dist/rivrAnalyticsAdapter.js +1 -1
  222. package/dist/roxotAnalyticsAdapter.js +1 -1
  223. package/dist/rtbhouseBidAdapter.js +1 -1
  224. package/dist/rtdModule.js +1 -1
  225. package/dist/rubiconBidAdapter.js +1 -1
  226. package/dist/s2sTesting.js +1 -1
  227. package/dist/saambaaBidAdapter.js +1 -1
  228. package/dist/scaleableAnalyticsAdapter.js +1 -1
  229. package/dist/schain.js +1 -1
  230. package/dist/seedingAllianceBidAdapter.js +1 -1
  231. package/dist/seedtagBidAdapter.js +1 -1
  232. package/dist/sharedIdSystem.js +1 -1
  233. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  234. package/dist/sharethroughBidAdapter.js +1 -1
  235. package/dist/shinezBidAdapter.js +1 -1
  236. package/dist/showheroes-bsBidAdapter.js +1 -1
  237. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  238. package/dist/sizeMapping.js +1 -0
  239. package/dist/slimcutBidAdapter.js +1 -1
  240. package/dist/smaatoBidAdapter.js +1 -1
  241. package/dist/smartadserverBidAdapter.js +1 -1
  242. package/dist/smartxBidAdapter.js +1 -1
  243. package/dist/smartytechBidAdapter.js +1 -1
  244. package/dist/smilewantedBidAdapter.js +1 -1
  245. package/dist/sonobiAnalyticsAdapter.js +1 -1
  246. package/dist/sonobiBidAdapter.js +1 -1
  247. package/dist/sovrnAnalyticsAdapter.js +1 -1
  248. package/dist/sovrnBidAdapter.js +1 -1
  249. package/dist/sspBCBidAdapter.js +1 -1
  250. package/dist/staqAnalyticsAdapter.js +1 -1
  251. package/dist/stvBidAdapter.js +1 -1
  252. package/dist/sublimeBidAdapter.js +1 -1
  253. package/dist/taboolaBidAdapter.js +1 -1
  254. package/dist/tapadIdSystem.js +1 -1
  255. package/dist/tappxBidAdapter.js +1 -1
  256. package/dist/targetVideoBidAdapter.js +1 -1
  257. package/dist/teadsBidAdapter.js +1 -1
  258. package/dist/teadsIdSystem.js +1 -1
  259. package/dist/telariaBidAdapter.js +1 -1
  260. package/dist/terceptAnalyticsAdapter.js +1 -1
  261. package/dist/theAdxBidAdapter.js +1 -1
  262. package/dist/topicsFpdModule.js +1 -1
  263. package/dist/trionBidAdapter.js +1 -1
  264. package/dist/tripleliftBidAdapter.js +1 -1
  265. package/dist/ttdBidAdapter.js +1 -1
  266. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  267. package/dist/uid2IdSystem.js +1 -1
  268. package/dist/underdogmediaBidAdapter.js +1 -1
  269. package/dist/undertoneBidAdapter.js +1 -1
  270. package/dist/unicornBidAdapter.js +1 -1
  271. package/dist/unrulyBidAdapter.js +1 -1
  272. package/dist/userId.js +1 -1
  273. package/dist/utiqSystem.js +1 -0
  274. package/dist/vibrantmediaBidAdapter.js +1 -1
  275. package/dist/vidazooBidAdapter.js +1 -1
  276. package/dist/videobyteBidAdapter.js +1 -1
  277. package/dist/videojsVideoProvider.js +1 -1
  278. package/dist/videoreachBidAdapter.js +1 -1
  279. package/dist/visxBidAdapter.js +1 -1
  280. package/dist/vrtcalBidAdapter.js +1 -1
  281. package/dist/vuukleBidAdapter.js +1 -1
  282. package/dist/weboramaRtdProvider.js +1 -1
  283. package/dist/widespaceBidAdapter.js +1 -1
  284. package/dist/winrBidAdapter.js +1 -1
  285. package/dist/xeBidAdapter.js +1 -1
  286. package/dist/yahoosspBidAdapter.js +1 -1
  287. package/dist/yieldliftBidAdapter.js +1 -1
  288. package/dist/yieldmoBidAdapter.js +1 -1
  289. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  290. package/dist/yieldoneBidAdapter.js +1 -1
  291. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  292. package/dist/zetaBidAdapter.js +1 -1
  293. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  294. package/dist/zeta_global_sspBidAdapter.js +1 -1
  295. package/libraries/analyticsAdapter/AnalyticsAdapter.js +1 -7
  296. package/libraries/appnexusKeywords/anKeywords.js +140 -0
  297. package/libraries/categoryTranslationMapping/index.js +100 -0
  298. package/libraries/keywords/keywords.js +31 -0
  299. package/libraries/objectGuard/objectGuard.js +2 -11
  300. package/libraries/ortbConverter/processors/default.js +3 -4
  301. package/modules/.submodules.json +1 -1
  302. package/modules/1plusXRtdProvider.js +4 -14
  303. package/modules/33acrossBidAdapter.js +11 -11
  304. package/modules/adWMGBidAdapter.js +2 -1
  305. package/modules/adagioBidAdapter.js +18 -30
  306. package/modules/adbookpspBidAdapter.js +1 -1
  307. package/modules/addefendBidAdapter.js +1 -0
  308. package/modules/adfBidAdapter.js +3 -3
  309. package/modules/adgenerationBidAdapter.js +1 -1
  310. package/modules/adhashBidAdapter.js +56 -34
  311. package/modules/adkernelAdnBidAdapter.js +5 -6
  312. package/modules/adkernelBidAdapter.js +5 -5
  313. package/modules/adprimeBidAdapter.js +2 -1
  314. package/modules/adqueryBidAdapter.js +1 -0
  315. package/modules/adrelevantisBidAdapter.js +3 -24
  316. package/modules/adtrueBidAdapter.js +2 -2
  317. package/modules/aduptechBidAdapter.js +2 -1
  318. package/modules/advangelistsBidAdapter.js +0 -1
  319. package/modules/adxcgBidAdapter.js +1 -1
  320. package/modules/adyoulikeBidAdapter.js +1 -1
  321. package/modules/afpBidAdapter.js +2 -2
  322. package/modules/aidemBidAdapter.js +16 -3
  323. package/modules/airgridRtdProvider.js +24 -53
  324. package/modules/ajaBidAdapter.js +1 -1
  325. package/modules/alkimiBidAdapter.js +2 -1
  326. package/modules/amxBidAdapter.js +1 -0
  327. package/modules/apacdexBidAdapter.js +3 -3
  328. package/modules/appnexusBidAdapter.js +16 -114
  329. package/modules/apstreamBidAdapter.js +1 -0
  330. package/modules/asoBidAdapter.js +1 -1
  331. package/modules/astraoneBidAdapter.js +1 -1
  332. package/modules/audiencerunBidAdapter.js +2 -1
  333. package/modules/automatadBidAdapter.js +5 -5
  334. package/modules/beachfrontBidAdapter.js +0 -1
  335. package/modules/beopBidAdapter.js +20 -17
  336. package/modules/betweenBidAdapter.js +2 -1
  337. package/modules/bizzclickBidAdapter.js +9 -6
  338. package/modules/bliinkBidAdapter.js +1 -0
  339. package/modules/bluebillywigBidAdapter.js +2 -2
  340. package/modules/braveBidAdapter.js +9 -7
  341. package/modules/browsiBidAdapter.js +3 -3
  342. package/modules/{emx_digitalBidAdapter.js → cadentApertureMXBidAdapter.js} +61 -56
  343. package/modules/{emx_digitalBidAdapter.md → cadentApertureMXBidAdapter.md} +6 -6
  344. package/modules/carodaBidAdapter.js +1 -0
  345. package/modules/ccxBidAdapter.js +1 -1
  346. package/modules/cleanmedianetBidAdapter.js +3 -3
  347. package/modules/codefuelBidAdapter.js +1 -1
  348. package/modules/colossussspBidAdapter.js +1 -1
  349. package/modules/concertBidAdapter.js +1 -1
  350. package/modules/connectadBidAdapter.js +1 -0
  351. package/modules/conversantAnalyticsAdapter.js +2 -0
  352. package/modules/conversantBidAdapter.js +22 -6
  353. package/modules/craftBidAdapter.js +6 -28
  354. package/modules/criteoBidAdapter.js +12 -9
  355. package/modules/currency.js +3 -3
  356. package/modules/dailyhuntBidAdapter.js +2 -2
  357. package/modules/datablocksBidAdapter.js +10 -8
  358. package/modules/datawrkzBidAdapter.js +0 -6
  359. package/modules/deltaprojectsBidAdapter.js +12 -3
  360. package/modules/dianomiBidAdapter.js +1 -1
  361. package/modules/discoveryBidAdapter.js +1 -0
  362. package/modules/displayioBidAdapter.js +2 -1
  363. package/modules/dspxBidAdapter.js +1 -0
  364. package/modules/ebdrBidAdapter.js +3 -2
  365. package/modules/etargetBidAdapter.js +1 -2
  366. package/modules/feedadBidAdapter.js +1 -1
  367. package/modules/finativeBidAdapter.js +8 -8
  368. package/modules/fluctBidAdapter.js +1 -2
  369. package/modules/gamoshiBidAdapter.js +3 -3
  370. package/modules/gdprEnforcement.js +0 -15
  371. package/modules/genericAnalyticsAdapter.js +0 -5
  372. package/modules/glomexBidAdapter.js +1 -0
  373. package/modules/gmosspBidAdapter.js +1 -1
  374. package/modules/gnetBidAdapter.js +1 -1
  375. package/modules/goldbachBidAdapter.js +7 -45
  376. package/modules/gothamadsBidAdapter.js +4 -3
  377. package/modules/gridBidAdapter.js +20 -421
  378. package/modules/gumgumBidAdapter.js +1 -2
  379. package/modules/h12mediaBidAdapter.js +1 -1
  380. package/modules/holidBidAdapter.js +8 -13
  381. package/modules/hybridBidAdapter.js +2 -2
  382. package/modules/hypelabBidAdapter.js +153 -0
  383. package/modules/hypelabBidAdapter.md +38 -0
  384. package/modules/{synacormediaBidAdapter.js → imdsBidAdapter.js} +11 -8
  385. package/modules/{synacormediaBidAdapter.md → imdsBidAdapter.md} +5 -5
  386. package/modules/impactifyBidAdapter.js +6 -6
  387. package/modules/improvedigitalBidAdapter.js +1 -2
  388. package/modules/innityBidAdapter.js +1 -0
  389. package/modules/insticatorBidAdapter.js +1 -1
  390. package/modules/interactiveOffersBidAdapter.js +5 -4
  391. package/modules/iqmBidAdapter.js +1 -0
  392. package/modules/ixBidAdapter.js +74 -75
  393. package/modules/jixieBidAdapter.js +1 -0
  394. package/modules/kargoBidAdapter.js +1 -1
  395. package/modules/koblerBidAdapter.js +2 -1
  396. package/modules/kueezBidAdapter.js +1 -1
  397. package/modules/kueezRtbBidAdapter.js +1 -0
  398. package/modules/kulturemediaBidAdapter.js +7 -7
  399. package/modules/lassoBidAdapter.js +2 -1
  400. package/modules/limelightDigitalBidAdapter.js +1 -1
  401. package/modules/livewrappedBidAdapter.js +2 -2
  402. package/modules/logicadBidAdapter.js +2 -1
  403. package/modules/loglyliftBidAdapter.js +2 -1
  404. package/modules/luponmediaBidAdapter.js +16 -4
  405. package/modules/magniteAnalyticsAdapter.js +61 -72
  406. package/modules/malltvBidAdapter.js +1 -0
  407. package/modules/mediaforceBidAdapter.js +2 -1
  408. package/modules/mediafuseBidAdapter.js +45 -62
  409. package/modules/mediagoBidAdapter.js +1 -0
  410. package/modules/mediakeysBidAdapter.js +3 -5
  411. package/modules/medianetBidAdapter.js +2 -1
  412. package/modules/mediasniperBidAdapter.js +1 -2
  413. package/modules/mediasquareBidAdapter.js +2 -1
  414. package/modules/microadBidAdapter.js +1 -9
  415. package/modules/minutemediaBidAdapter.js +2 -2
  416. package/modules/minutemediaplusBidAdapter.js +3 -2
  417. package/modules/newspassidBidAdapter.js +6 -4
  418. package/modules/nextMillenniumBidAdapter.js +10 -9
  419. package/modules/oguryBidAdapter.js +5 -5
  420. package/modules/onetagBidAdapter.js +2 -1
  421. package/modules/operaadsBidAdapter.js +2 -2
  422. package/modules/optidigitalBidAdapter.js +2 -2
  423. package/modules/orbidderBidAdapter.js +2 -1
  424. package/modules/otmBidAdapter.js +2 -2
  425. package/modules/outbrainBidAdapter.js +9 -11
  426. package/modules/oxxionRtdProvider.js +7 -29
  427. package/modules/ozoneBidAdapter.js +2 -1
  428. package/modules/padsquadBidAdapter.js +2 -2
  429. package/modules/pixfutureBidAdapter.js +12 -36
  430. package/modules/prebidServerBidAdapter/index.js +1 -3
  431. package/modules/prebidServerBidAdapter/ortbConverter.js +34 -5
  432. package/modules/priceFloors.js +7 -7
  433. package/modules/prismaBidAdapter.js +4 -3
  434. package/modules/proxistoreBidAdapter.js +2 -1
  435. package/modules/pubgeniusBidAdapter.js +5 -5
  436. package/modules/pubmaticAnalyticsAdapter.js +31 -12
  437. package/modules/pubmaticBidAdapter.js +6 -4
  438. package/modules/pubwiseBidAdapter.js +6 -5
  439. package/modules/pxyzBidAdapter.js +4 -4
  440. package/modules/rasBidAdapter.js +4 -2
  441. package/modules/readpeakBidAdapter.js +1 -1
  442. package/modules/relaidoBidAdapter.js +2 -1
  443. package/modules/resetdigitalBidAdapter.js +1 -0
  444. package/modules/revcontentBidAdapter.js +6 -7
  445. package/modules/rhythmoneBidAdapter.js +0 -2
  446. package/modules/richaudienceBidAdapter.js +6 -4
  447. package/modules/riseBidAdapter.js +1 -1
  448. package/modules/rtbhouseBidAdapter.js +5 -5
  449. package/modules/rtbsapeBidAdapter.js +1 -0
  450. package/modules/rubiconBidAdapter.js +8 -11
  451. package/modules/saambaaBidAdapter.js +0 -1
  452. package/modules/seedingAllianceBidAdapter.js +6 -7
  453. package/modules/seedtagBidAdapter.js +1 -1
  454. package/modules/sharethroughBidAdapter.js +1 -1
  455. package/modules/shinezBidAdapter.js +435 -435
  456. package/modules/showheroes-bsBidAdapter.js +1 -1
  457. package/{src → modules}/sizeMapping.js +46 -32
  458. package/modules/slimcutBidAdapter.js +2 -2
  459. package/modules/smaatoBidAdapter.js +16 -3
  460. package/modules/smartadserverBidAdapter.js +1 -1
  461. package/modules/smarticoBidAdapter.js +1 -0
  462. package/modules/smartytechBidAdapter.js +0 -1
  463. package/modules/smilewantedBidAdapter.js +2 -2
  464. package/modules/sonobiBidAdapter.js +2 -1
  465. package/modules/sspBCBidAdapter.js +1 -1
  466. package/modules/stroeerCoreBidAdapter.js +1 -0
  467. package/modules/sublimeBidAdapter.js +1 -0
  468. package/modules/taboolaBidAdapter.js +3 -3
  469. package/modules/talkadsBidAdapter.js +1 -0
  470. package/modules/tappxBidAdapter.js +1 -1
  471. package/modules/teadsBidAdapter.js +1 -2
  472. package/modules/telariaBidAdapter.js +1 -1
  473. package/modules/theAdxBidAdapter.js +1 -1
  474. package/modules/topicsFpdModule.js +4 -1
  475. package/modules/tpmnBidAdapter.js +1 -0
  476. package/modules/truereachBidAdapter.js +1 -0
  477. package/modules/ttdBidAdapter.js +3 -3
  478. package/modules/underdogmediaBidAdapter.js +0 -1
  479. package/modules/unicornBidAdapter.js +1 -1
  480. package/modules/unrulyBidAdapter.js +1 -1
  481. package/modules/userId/eids.js +3 -3
  482. package/modules/userId/eids.md +1 -1
  483. package/modules/userId/index.js +2 -19
  484. package/modules/userId/userId.md +12 -10
  485. package/modules/utiqSystem.js +129 -0
  486. package/modules/{trustpidSystem.md → utiqSystem.md} +7 -7
  487. package/modules/vdoaiBidAdapter.js +1 -0
  488. package/modules/vibrantmediaBidAdapter.js +1 -1
  489. package/modules/vidazooBidAdapter.js +3 -2
  490. package/modules/videobyteBidAdapter.js +0 -1
  491. package/modules/videoheroesBidAdapter.js +2 -0
  492. package/modules/videojsVideoProvider.js +2 -0
  493. package/modules/videoreachBidAdapter.js +2 -1
  494. package/modules/vlybyBidAdapter.js +1 -0
  495. package/modules/voxBidAdapter.js +2 -0
  496. package/modules/vrtcalBidAdapter.js +6 -1
  497. package/modules/winrBidAdapter.js +4 -25
  498. package/modules/xeBidAdapter.js +2 -1
  499. package/modules/yieldliftBidAdapter.js +2 -2
  500. package/modules/yieldmoBidAdapter.js +1 -0
  501. package/modules/yieldoneBidAdapter.js +1 -1
  502. package/modules/zetaBidAdapter.js +4 -9
  503. package/modules/zeta_global_sspBidAdapter.js +1 -1
  504. package/package.json +1 -1
  505. package/src/activities/activities.js +5 -0
  506. package/src/activities/redactor.js +36 -8
  507. package/src/adapterManager.js +31 -20
  508. package/src/adapters/bidderFactory.js +41 -91
  509. package/src/auction.js +5 -21
  510. package/src/constants.json +1 -2
  511. package/src/utils.js +2 -34
  512. package/test/fixtures/fixtures.js +0 -7
  513. package/test/pages/banner.html +1 -0
  514. package/test/pages/bidderSettings.html +1 -0
  515. package/test/pages/consent_mgt_gdpr.html +1 -0
  516. package/test/pages/currency.html +1 -0
  517. package/test/pages/instream.html +1 -0
  518. package/test/pages/multiple_bidders.html +1 -1
  519. package/test/pages/native.html +1 -0
  520. package/test/pages/outstream.html +4 -1
  521. package/test/spec/activities/redactor_spec.js +10 -2
  522. package/test/spec/appnexusKeywords_spec.js +70 -0
  523. package/test/spec/auctionmanager_spec.js +11 -22
  524. package/test/spec/keywords_spec.js +102 -0
  525. package/test/spec/modules/1plusXRtdProvider_spec.js +17 -18
  526. package/test/spec/modules/33acrossBidAdapter_spec.js +49 -73
  527. package/test/spec/modules/adagioBidAdapter_spec.js +15 -24
  528. package/test/spec/modules/adbookpspBidAdapter_spec.js +5 -0
  529. package/test/spec/modules/adfBidAdapter_spec.js +4 -1
  530. package/test/spec/modules/adhashBidAdapter_spec.js +18 -2
  531. package/test/spec/modules/adkernelAdnBidAdapter_spec.js +1 -3
  532. package/test/spec/modules/adrelevantisBidAdapter_spec.js +0 -9
  533. package/test/spec/modules/adriverBidAdapter_spec.js +0 -9
  534. package/test/spec/modules/adtrueBidAdapter_spec.js +11 -7
  535. package/test/spec/modules/aduptechBidAdapter_spec.js +26 -8
  536. package/test/spec/modules/advangelistsBidAdapter_spec.js +0 -1
  537. package/test/spec/modules/adxcgBidAdapter_spec.js +4 -1
  538. package/test/spec/modules/adyoulikeBidAdapter_spec.js +50 -10
  539. package/test/spec/modules/afpBidAdapter_spec.js +5 -1
  540. package/test/spec/modules/aidemBidAdapter_spec.js +10 -2
  541. package/test/spec/modules/airgridRtdProvider_spec.js +9 -59
  542. package/test/spec/modules/apacdexBidAdapter_spec.js +2 -2
  543. package/test/spec/modules/appnexusBidAdapter_spec.js +100 -27
  544. package/test/spec/modules/astraoneBidAdapter_spec.js +5 -1
  545. package/test/spec/modules/beachfrontBidAdapter_spec.js +0 -1
  546. package/test/spec/modules/big-richmediaBidAdapter_spec.js +0 -10
  547. package/test/spec/modules/bluebillywigBidAdapter_spec.js +12 -10
  548. package/test/spec/modules/browsiBidAdapter_spec.js +6 -3
  549. package/test/spec/modules/{emx_digitalBidAdapter_spec.js → cadentApertureMXBidAdapter_spec.js} +16 -16
  550. package/test/spec/modules/ccxBidAdapter_spec.js +1 -1
  551. package/test/spec/modules/cleanmedianetBidAdapter_spec.js +2 -2
  552. package/test/spec/modules/codefuelBidAdapter_spec.js +10 -1
  553. package/test/spec/modules/colossussspBidAdapter_spec.js +1 -1
  554. package/test/spec/modules/concertBidAdapter_spec.js +5 -1
  555. package/test/spec/modules/conversantBidAdapter_spec.js +7 -2
  556. package/test/spec/modules/criteoBidAdapter_spec.js +78 -8
  557. package/test/spec/modules/currency_spec.js +12 -12
  558. package/test/spec/modules/datawrkzBidAdapter_spec.js +0 -4
  559. package/test/spec/modules/dianomiBidAdapter_spec.js +1 -1
  560. package/test/spec/modules/etargetBidAdapter_spec.js +35 -8
  561. package/test/spec/modules/euidIdSystem_spec.js +0 -7
  562. package/test/spec/modules/feedadBidAdapter_spec.js +5 -1
  563. package/test/spec/modules/finativeBidAdapter_spec.js +0 -12
  564. package/test/spec/modules/fluctBidAdapter_spec.js +0 -2
  565. package/test/spec/modules/gamoshiBidAdapter_spec.js +5 -2
  566. package/test/spec/modules/gmosspBidAdapter_spec.js +5 -1
  567. package/test/spec/modules/gnetBidAdapter_spec.js +5 -1
  568. package/test/spec/modules/goldbachBidAdapter_spec.js +0 -10
  569. package/test/spec/modules/gridBidAdapter_spec.js +42 -302
  570. package/test/spec/modules/hybridBidAdapter_spec.js +5 -1
  571. package/test/spec/modules/hypelabBidAdapter_spec.js +281 -0
  572. package/test/spec/modules/{synacormediaBidAdapter_spec.js → imdsBidAdapter_spec.js} +19 -19
  573. package/test/spec/modules/improvedigitalBidAdapter_spec.js +6 -1
  574. package/test/spec/modules/insticatorBidAdapter_spec.js +6 -2
  575. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +1 -1
  576. package/test/spec/modules/ivsBidAdapter_spec.js +0 -2
  577. package/test/spec/modules/ixBidAdapter_spec.js +8 -3
  578. package/test/spec/modules/kargoBidAdapter_spec.js +3 -3
  579. package/test/spec/modules/koblerBidAdapter_spec.js +13 -2
  580. package/test/spec/modules/kulturemediaBidAdapter_spec.js +0 -1
  581. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +21 -5
  582. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +1 -1
  583. package/test/spec/modules/livewrappedBidAdapter_spec.js +5 -6
  584. package/test/spec/modules/loglyliftBidAdapter_spec.js +10 -0
  585. package/test/spec/modules/luponmediaBidAdapter_spec.js +23 -2
  586. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +93 -1
  587. package/test/spec/modules/mediaforceBidAdapter_spec.js +11 -3
  588. package/test/spec/modules/mediafuseBidAdapter_spec.js +2 -6
  589. package/test/spec/modules/mediakeysBidAdapter_spec.js +6 -2
  590. package/test/spec/modules/medianetBidAdapter_spec.js +86 -17
  591. package/test/spec/modules/mediasniperBidAdapter_spec.js +1 -1
  592. package/test/spec/modules/mediasquareBidAdapter_spec.js +5 -5
  593. package/test/spec/modules/microadBidAdapter_spec.js +7 -3
  594. package/test/spec/modules/minutemediaplusBidAdapter_spec.js +7 -3
  595. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +2 -2
  596. package/test/spec/modules/nexx360BidAdapter_spec.js +0 -1
  597. package/test/spec/modules/oguryBidAdapter_spec.js +2 -1
  598. package/test/spec/modules/onetagBidAdapter_spec.js +5 -1
  599. package/test/spec/modules/openxBidAdapter_spec.js +1 -1
  600. package/test/spec/modules/operaadsBidAdapter_spec.js +5 -5
  601. package/test/spec/modules/optidigitalBidAdapter_spec.js +0 -2
  602. package/test/spec/modules/orbidderBidAdapter_spec.js +12 -4
  603. package/test/spec/modules/outbrainBidAdapter_spec.js +5 -0
  604. package/test/spec/modules/oxxionRtdProvider_spec.js +3 -2
  605. package/test/spec/modules/prebidServerBidAdapter_spec.js +114 -32
  606. package/test/spec/modules/priceFloors_spec.js +7 -25
  607. package/test/spec/modules/pubgeniusBidAdapter_spec.js +2 -1
  608. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +7 -0
  609. package/test/spec/modules/pubmaticBidAdapter_spec.js +41 -32
  610. package/test/spec/modules/pubwiseBidAdapter_spec.js +10 -6
  611. package/test/spec/modules/relaidoBidAdapter_spec.js +6 -2
  612. package/test/spec/modules/revcontentBidAdapter_spec.js +0 -10
  613. package/test/spec/modules/richaudienceBidAdapter_spec.js +5 -1
  614. package/test/spec/modules/rubiconBidAdapter_spec.js +26 -7
  615. package/test/spec/modules/scatteredBidAdapter_spec.js +0 -2
  616. package/test/spec/modules/seedingAllianceAdapter_spec.js +0 -13
  617. package/test/spec/modules/seedtagBidAdapter_spec.js +5 -1
  618. package/test/spec/modules/sharethroughBidAdapter_spec.js +6 -2
  619. package/test/spec/modules/sizeMapping_spec.js +342 -0
  620. package/test/spec/modules/slimcutBidAdapter_spec.js +0 -1
  621. package/test/spec/modules/smaatoBidAdapter_spec.js +3 -2
  622. package/test/spec/modules/smartadserverBidAdapter_spec.js +15 -3
  623. package/test/spec/modules/smilewantedBidAdapter_spec.js +25 -6
  624. package/test/spec/modules/sspBCBidAdapter_spec.js +4 -4
  625. package/test/spec/modules/taboolaBidAdapter_spec.js +10 -12
  626. package/test/spec/modules/teadsBidAdapter_spec.js +7 -0
  627. package/test/spec/modules/terceptAnalyticsAdapter_spec.js +0 -1
  628. package/test/spec/modules/ttdBidAdapter_spec.js +13 -5
  629. package/test/spec/modules/uid2IdSystem_spec.js +0 -10
  630. package/test/spec/modules/underdogmediaBidAdapter_spec.js +0 -1
  631. package/test/spec/modules/utiqSystem_spec.js +188 -0
  632. package/test/spec/modules/vidazooBidAdapter_spec.js +6 -2
  633. package/test/spec/modules/videobyteBidAdapter_spec.js +0 -1
  634. package/test/spec/modules/vrtcalBidAdapter_spec.js +9 -2
  635. package/test/spec/modules/winrBidAdapter_spec.js +0 -9
  636. package/test/spec/modules/xeBidAdapter_spec.js +6 -2
  637. package/test/spec/unit/core/adapterManager_spec.js +69 -115
  638. package/test/spec/unit/core/bidderFactory_spec.js +80 -152
  639. package/test/spec/unit/core/targeting_spec.js +0 -6
  640. package/test/spec/utils_spec.js +21 -90
  641. package/dist/aolBidAdapter.js +0 -1
  642. package/dist/captifyRtdProvider.js +0 -1
  643. package/dist/emx_digitalBidAdapter.js +0 -1
  644. package/dist/glimpseBidAdapter.js +0 -1
  645. package/dist/googleAnalyticsAdapter.js +0 -1
  646. package/dist/inmarBidAdapter.js +0 -1
  647. package/dist/inskinBidAdapter.js +0 -1
  648. package/dist/liveyieldAnalyticsAdapter.js +0 -1
  649. package/dist/mass.js +0 -1
  650. package/dist/openxAnalyticsAdapter.js +0 -1
  651. package/dist/openxOrtbBidAdapter.js +0 -1
  652. package/dist/pubCommonId.js +0 -1
  653. package/dist/realvuAnalyticsAdapter.js +0 -1
  654. package/dist/rubiconAnalyticsAdapter.js +0 -1
  655. package/dist/synacormediaBidAdapter.js +0 -1
  656. package/dist/trustpidSystem.js +0 -1
  657. package/dist/viewability.js +0 -1
  658. package/dist/zeusPrimeRtdProvider.js +0 -21
  659. package/integrationExamples/gpt/captifyRtdProvider_example.html +0 -167
  660. package/integrationExamples/mass/index.html +0 -132
  661. package/modules/aolBidAdapter.js +0 -462
  662. package/modules/aolBidAdapter.md +0 -46
  663. package/modules/captifyRtdProvider.js +0 -146
  664. package/modules/captifyRtdProvider.md +0 -68
  665. package/modules/conversantAnalyticsAdapter.md +0 -46
  666. package/modules/conversantBidAdapter.md +0 -46
  667. package/modules/glimpseBidAdapter.js +0 -198
  668. package/modules/glimpseBidAdapter.md +0 -37
  669. package/modules/googleAnalyticsAdapter.js +0 -298
  670. package/modules/googleAnalyticsAdapter.md +0 -38
  671. package/modules/inmarBidAdapter.js +0 -132
  672. package/modules/inmarBidAdapter.md +0 -44
  673. package/modules/inskinBidAdapter.js +0 -391
  674. package/modules/inskinBidAdapter.md +0 -31
  675. package/modules/liveyieldAnalyticsAdapter.js +0 -454
  676. package/modules/liveyieldAnalyticsAdapter.md +0 -45
  677. package/modules/mass.js +0 -184
  678. package/modules/mass.md +0 -137
  679. package/modules/openxAnalyticsAdapter.js +0 -27
  680. package/modules/openxAnalyticsAdapter.md +0 -135
  681. package/modules/openxOrtbBidAdapter.js +0 -238
  682. package/modules/openxOrtbBidAdapter.md +0 -108
  683. package/modules/pubCommonId.js +0 -303
  684. package/modules/pubCommonId.md +0 -37
  685. package/modules/realvuAnalyticsAdapter.js +0 -976
  686. package/modules/realvuAnalyticsAdapter.md +0 -9
  687. package/modules/rubiconAnalyticsAdapter.js +0 -938
  688. package/modules/trustpidSystem.js +0 -143
  689. package/modules/viewability.js +0 -9
  690. package/modules/zeusPrimeRtdProvider.js +0 -37
  691. package/modules/zeusPrimeRtdProvider.md +0 -63
  692. package/test/spec/modules/aolBidAdapter_spec.js +0 -890
  693. package/test/spec/modules/captifyRtdProvider_spec.js +0 -253
  694. package/test/spec/modules/glimpseBidAdapter_spec.js +0 -422
  695. package/test/spec/modules/googleAnalyticsAdapter_spec.js +0 -27
  696. package/test/spec/modules/inmarBidAdapter_spec.js +0 -242
  697. package/test/spec/modules/inskinBidAdapter_spec.js +0 -386
  698. package/test/spec/modules/liveyieldAnalyticsAdapter_spec.js +0 -704
  699. package/test/spec/modules/mass_spec.js +0 -141
  700. package/test/spec/modules/openxAnalyticsAdapter_spec.js +0 -21
  701. package/test/spec/modules/openxOrtbBidAdapter_spec.js +0 -1615
  702. package/test/spec/modules/pubCommonId_spec.js +0 -353
  703. package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +0 -2540
  704. package/test/spec/modules/rubiconAnalyticsSchema.json +0 -494
  705. package/test/spec/modules/trustpidSystem_spec.js +0 -237
  706. package/test/spec/sizeMapping_spec.js +0 -341
@@ -12,7 +12,7 @@ import {
12
12
  getUniqueIdentifierStr,
13
13
  getUserConfiguredParams,
14
14
  groupBy,
15
- isArray,
15
+ isArray, isPlainObject,
16
16
  isValidMediaTypes,
17
17
  logError,
18
18
  logInfo,
@@ -22,7 +22,6 @@ import {
22
22
  shuffle,
23
23
  timestamp,
24
24
  } from './utils.js';
25
- import {processAdUnitsForLabels} from './sizeMapping.js';
26
25
  import {decorateAdUnitsWithNativeParams, nativeAdapters} from './native.js';
27
26
  import {newBidder} from './adapters/bidderFactory.js';
28
27
  import {ajaxBuilder} from './ajax.js';
@@ -42,7 +41,7 @@ import {ACTIVITY_FETCH_BIDS, ACTIVITY_REPORT_ANALYTICS} from './activities/activ
42
41
  import {ACTIVITY_PARAM_ANL_CONFIG, ACTIVITY_PARAM_S2S_NAME, activityParamsBuilder} from './activities/params.js';
43
42
  import {redactor} from './activities/redactor.js';
44
43
 
45
- const PBS_ADAPTER_NAME = 'pbsBidAdapter';
44
+ export const PBS_ADAPTER_NAME = 'pbsBidAdapter';
46
45
  export const PARTITIONS = {
47
46
  CLIENT: 'client',
48
47
  SERVER: 'server'
@@ -69,6 +68,12 @@ var _analyticsRegistry = {};
69
68
 
70
69
  const activityParams = activityParamsBuilder((alias) => adapterManager.resolveAlias(alias));
71
70
 
71
+ export function s2sActivityParams(s2sConfig) {
72
+ return activityParams(MODULE_TYPE_PREBID, PBS_ADAPTER_NAME, {
73
+ [ACTIVITY_PARAM_S2S_NAME]: s2sConfig.configName
74
+ });
75
+ }
76
+
72
77
  /**
73
78
  * @typedef {object} LabelDescriptor
74
79
  * @property {boolean} labelAll describes whether or not this object expects all labels to match, or any label to match
@@ -205,7 +210,7 @@ export let coppaDataHandler = {
205
210
  * they should be exposed under `adUnit.bids[].mediaTypes`.
206
211
  */
207
212
  export const setupAdUnitMediaTypes = hook('sync', (adUnits, labels) => {
208
- return processAdUnitsForLabels(adUnits, labels);
213
+ return adUnits;
209
214
  }, 'setupAdUnitMediaTypes')
210
215
 
211
216
  /**
@@ -250,8 +255,13 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a
250
255
  decorateAdUnitsWithNativeParams(adUnits);
251
256
  }
252
257
 
253
- // filter out bidders that cannot participate in the auction
254
- adUnits.forEach(au => au.bids = au.bids.filter((bid) => !bid.bidder || dep.isAllowed(ACTIVITY_FETCH_BIDS, activityParams(MODULE_TYPE_BIDDER, bid.bidder))))
258
+ adUnits.forEach(au => {
259
+ if (!isPlainObject(au.mediaTypes)) {
260
+ au.mediaTypes = {};
261
+ }
262
+ // filter out bidders that cannot participate in the auction
263
+ au.bids = au.bids.filter((bid) => !bid.bidder || dep.isAllowed(ACTIVITY_FETCH_BIDS, activityParams(MODULE_TYPE_BIDDER, bid.bidder)))
264
+ });
255
265
 
256
266
  adUnits = setupAdUnitMediaTypes(adUnits, labels);
257
267
 
@@ -267,9 +277,13 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a
267
277
  const ortb2 = ortb2Fragments.global || {};
268
278
  const bidderOrtb2 = ortb2Fragments.bidder || {};
269
279
 
270
- function addOrtb2(bidderRequest) {
271
- const redact = dep.redact(activityParams(MODULE_TYPE_BIDDER, bidderRequest.bidderCode));
272
- const fpd = Object.freeze(redact.ortb2(mergeDeep({}, ortb2, bidderOrtb2[bidderRequest.bidderCode])));
280
+ function addOrtb2(bidderRequest, s2sActivityParams) {
281
+ const redact = dep.redact(
282
+ s2sActivityParams != null
283
+ ? s2sActivityParams
284
+ : activityParams(MODULE_TYPE_BIDDER, bidderRequest.bidderCode)
285
+ );
286
+ const fpd = Object.freeze(redact.ortb2(mergeDeep({source: {tid: auctionId}}, ortb2, bidderOrtb2[bidderRequest.bidderCode])));
273
287
  bidderRequest.ortb2 = fpd;
274
288
  bidderRequest.bids = bidderRequest.bids.map((bid) => {
275
289
  bid.ortb2 = fpd;
@@ -278,14 +292,9 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a
278
292
  return bidderRequest;
279
293
  }
280
294
 
281
- function isS2SAllowed(s2sConfig) {
282
- return dep.isAllowed(ACTIVITY_FETCH_BIDS, activityParams(MODULE_TYPE_PREBID, PBS_ADAPTER_NAME, {
283
- [ACTIVITY_PARAM_S2S_NAME]: s2sConfig.configName
284
- }));
285
- }
286
-
287
295
  _s2sConfigs.forEach(s2sConfig => {
288
- if (s2sConfig && s2sConfig.enabled && isS2SAllowed(s2sConfig)) {
296
+ const s2sParams = s2sActivityParams(s2sConfig);
297
+ if (s2sConfig && s2sConfig.enabled && dep.isAllowed(ACTIVITY_FETCH_BIDS, s2sParams)) {
289
298
  let {adUnits: adUnitsS2SCopy, hasModuleBids} = getAdUnitCopyForPrebidServer(adUnits, s2sConfig);
290
299
 
291
300
  // uniquePbsTid is so we know which server to send which bids to during the callBids function
@@ -305,7 +314,7 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a
305
314
  src: CONSTANTS.S2S.SRC,
306
315
  refererInfo,
307
316
  metrics,
308
- });
317
+ }, s2sParams);
309
318
  if (bidderRequest.bids.length !== 0) {
310
319
  bidRequests.push(bidderRequest);
311
320
  }
@@ -622,9 +631,11 @@ function invokeBidderMethod(bidder, method, spec, fn, ...params) {
622
631
  }
623
632
 
624
633
  function tryCallBidderMethod(bidder, method, param) {
625
- const target = getBidderMethod(bidder, method);
626
- if (target != null) {
627
- invokeBidderMethod(bidder, method, ...target, param);
634
+ if (param?.src !== CONSTANTS.S2S.SRC) {
635
+ const target = getBidderMethod(bidder, method);
636
+ if (target != null) {
637
+ invokeBidderMethod(bidder, method, ...target, param);
638
+ }
628
639
  }
629
640
  }
630
641
 
@@ -8,28 +8,24 @@ import {isValidVideoBid} from '../video.js';
8
8
  import CONSTANTS from '../constants.json';
9
9
  import * as events from '../events.js';
10
10
  import {includes} from '../polyfill.js';
11
- import {ajax} from '../ajax.js';
12
11
  import {
13
- deepAccess,
14
12
  delayExecution,
15
- flatten,
16
13
  isArray,
17
14
  isPlainObject,
18
15
  logError,
19
- logWarn,
16
+ logWarn, memoize,
20
17
  parseQueryStringParameters,
21
18
  parseSizesInput,
22
- timestamp,
23
19
  uniques
24
20
  } from '../utils.js';
25
- import {ADPOD} from '../mediaTypes.js';
26
- import {getHook, hook} from '../hook.js';
27
- import {getCoreStorageManager} from '../storageManager.js';
21
+ import {hook} from '../hook.js';
28
22
  import {auctionManager} from '../auctionManager.js';
29
23
  import {bidderSettings} from '../bidderSettings.js';
30
24
  import {useMetrics} from '../utils/perfMetrics.js';
31
-
32
- export const storage = getCoreStorageManager('bidderFactory');
25
+ import {isActivityAllowed} from '../activities/rules.js';
26
+ import {activityParams} from '../activities/activityParams.js';
27
+ import {MODULE_TYPE_BIDDER} from '../activities/modules.js';
28
+ import {ACTIVITY_TRANSMIT_TID} from '../activities/activities.js';
33
29
 
34
30
  /**
35
31
  * This file aims to support Adapters during the Prebid 0.x -> 1.x transition.
@@ -155,8 +151,6 @@ export const storage = getCoreStorageManager('bidderFactory');
155
151
  // common params for all mediaTypes
156
152
  const COMMON_BID_RESPONSE_KEYS = ['cpm', 'ttl', 'creativeId', 'netRevenue', 'currency'];
157
153
 
158
- const DEFAULT_REFRESHIN_DAYS = 1;
159
-
160
154
  /**
161
155
  * Register a bidder with prebid, using the given spec.
162
156
  *
@@ -190,6 +184,38 @@ export function registerBidder(spec) {
190
184
  }
191
185
  }
192
186
 
187
+ function guardTids(bidderCode) {
188
+ if (isActivityAllowed(ACTIVITY_TRANSMIT_TID, activityParams(MODULE_TYPE_BIDDER, bidderCode))) {
189
+ return {
190
+ bidRequest: (br) => br,
191
+ bidderRequest: (br) => br
192
+ };
193
+ }
194
+ function get(target, prop, receiver) {
195
+ if (['transactionId', 'auctionId'].includes(prop)) {
196
+ return null;
197
+ }
198
+ return Reflect.get(target, prop, receiver);
199
+ }
200
+ const bidRequest = memoize((br) => new Proxy(br, {get}), (arg) => arg.bidId)
201
+ /**
202
+ * Return a view on bidd(er) requests where auctionId/transactionId are nulled if the bidder is not allowed `transmitTid`.
203
+ *
204
+ * Because both auctionId and transactionId are used for Prebid's own internal bookkeeping, we cannot simply erase them
205
+ * from request objects; and because request objects are quite complex and not easily cloneable, we hide the IDs
206
+ * with a proxy instead. This should be used only around the adapter logic.
207
+ */
208
+ return {
209
+ bidRequest,
210
+ bidderRequest: (br) => new Proxy(br, {
211
+ get(target, prop, receiver) {
212
+ if (prop === 'bids') return br.bids.map(bidRequest);
213
+ return get(target, prop, receiver);
214
+ }
215
+ })
216
+ }
217
+ }
218
+
193
219
  /**
194
220
  * Make a new bidder from the given spec. This is exported mainly for testing.
195
221
  * Adapters will probably find it more convenient to use registerBidder instead.
@@ -206,6 +232,7 @@ export function newBidder(spec) {
206
232
  if (!Array.isArray(bidderRequest.bids)) {
207
233
  return;
208
234
  }
235
+ const tidGuard = guardTids(bidderRequest.bidderCode);
209
236
 
210
237
  const adUnitCodesHandled = {};
211
238
  function addBidWithCode(adUnitCode, bid) {
@@ -231,7 +258,7 @@ export function newBidder(spec) {
231
258
  }
232
259
 
233
260
  const validBidRequests = adapterMetrics(bidderRequest)
234
- .measureTime('validate', () => bidderRequest.bids.filter(filterAndWarn));
261
+ .measureTime('validate', () => bidderRequest.bids.filter((br) => filterAndWarn(tidGuard.bidRequest(br))));
235
262
 
236
263
  if (validBidRequests.length === 0) {
237
264
  afterAllResponses();
@@ -246,7 +273,7 @@ export function newBidder(spec) {
246
273
  }
247
274
  });
248
275
 
249
- processBidderRequests(spec, validBidRequests, bidderRequest, ajax, configEnabledCallback, {
276
+ processBidderRequests(spec, validBidRequests.map(tidGuard.bidRequest), tidGuard.bidderRequest(bidderRequest), ajax, configEnabledCallback, {
250
277
  onRequest: requestObject => events.emit(CONSTANTS.EVENTS.BEFORE_BIDDER_HTTP, bidderRequest, requestObject),
251
278
  onResponse: (resp) => {
252
279
  onTimelyResponse(spec.code);
@@ -486,83 +513,6 @@ export const registerSyncInner = hook('async', function(spec, responses, gdprCon
486
513
  export const addComponentAuction = hook('sync', (adUnitCode, fledgeAuctionConfig) => {
487
514
  }, 'addComponentAuction');
488
515
 
489
- export function preloadBidderMappingFile(fn, adUnits) {
490
- if (FEATURES.VIDEO) {
491
- if (!config.getConfig('adpod.brandCategoryExclusion')) {
492
- return fn.call(this, adUnits);
493
- }
494
-
495
- let adPodBidders = adUnits
496
- .filter((adUnit) => deepAccess(adUnit, 'mediaTypes.video.context') === ADPOD)
497
- .map((adUnit) => adUnit.bids.map((bid) => bid.bidder))
498
- .reduce(flatten, [])
499
- .filter(uniques);
500
-
501
- adPodBidders.forEach(bidder => {
502
- let bidderSpec = adapterManager.getBidAdapter(bidder);
503
- if (bidderSpec.getSpec().getMappingFileInfo) {
504
- let info = bidderSpec.getSpec().getMappingFileInfo();
505
- let refreshInDays = (info.refreshInDays) ? info.refreshInDays : DEFAULT_REFRESHIN_DAYS;
506
- let key = (info.localStorageKey) ? info.localStorageKey : bidderSpec.getSpec().code;
507
- let mappingData = storage.getDataFromLocalStorage(key);
508
- try {
509
- mappingData = mappingData ? JSON.parse(mappingData) : undefined;
510
- if (!mappingData || timestamp() > mappingData.lastUpdated + refreshInDays * 24 * 60 * 60 * 1000) {
511
- ajax(info.url,
512
- {
513
- success: (response) => {
514
- try {
515
- response = JSON.parse(response);
516
- let mapping = {
517
- lastUpdated: timestamp(),
518
- mapping: response.mapping
519
- }
520
- storage.setDataInLocalStorage(key, JSON.stringify(mapping));
521
- } catch (error) {
522
- logError(`Failed to parse ${bidder} bidder translation mapping file`);
523
- }
524
- },
525
- error: () => {
526
- logError(`Failed to load ${bidder} bidder translation file`)
527
- }
528
- },
529
- );
530
- }
531
- } catch (error) {
532
- logError(`Failed to parse ${bidder} bidder translation mapping file`);
533
- }
534
- }
535
- });
536
- fn.call(this, adUnits);
537
- } else {
538
- return fn.call(this, adUnits)
539
- }
540
- }
541
-
542
- getHook('checkAdUnitSetup').before(preloadBidderMappingFile);
543
-
544
- /**
545
- * Reads the data stored in localstorage and returns iab subcategory
546
- * @param {string} bidderCode bidderCode
547
- * @param {string} category bidders category
548
- */
549
- export function getIabSubCategory(bidderCode, category) {
550
- let bidderSpec = adapterManager.getBidAdapter(bidderCode);
551
- if (bidderSpec.getSpec().getMappingFileInfo) {
552
- let info = bidderSpec.getSpec().getMappingFileInfo();
553
- let key = (info.localStorageKey) ? info.localStorageKey : bidderSpec.getBidderCode();
554
- let data = storage.getDataFromLocalStorage(key);
555
- if (data) {
556
- try {
557
- data = JSON.parse(data);
558
- } catch (error) {
559
- logError(`Failed to parse ${bidderCode} mapping data stored in local storage`);
560
- }
561
- return (data.mapping[category]) ? data.mapping[category] : null;
562
- }
563
- }
564
- }
565
-
566
516
  // check that the bid has a width and height set
567
517
  function validBidSize(adUnitCode, bid, {index = auctionManager.index} = {}) {
568
518
  if ((bid.width || parseInt(bid.width, 10) === 0) && (bid.height || parseInt(bid.height, 10) === 0)) {
package/src/auction.js CHANGED
@@ -92,7 +92,6 @@ import adapterManager from './adapterManager.js';
92
92
  import CONSTANTS from './constants.json';
93
93
  import {GreedyPromise} from './utils/promise.js';
94
94
  import {useMetrics} from './utils/perfMetrics.js';
95
- import {createBid} from './bidfactory.js';
96
95
  import {adjustCpm} from './utils/cpm.js';
97
96
  import {getGlobal} from './prebidGlobal.js';
98
97
 
@@ -494,26 +493,11 @@ export function auctionCallbacks(auctionDone, auctionInstance, {index = auctionM
494
493
 
495
494
  function rejectBidResponse(adUnitCode, bid, reason) {
496
495
  return handleBidResponse(adUnitCode, bid, (done) => {
497
- // return a "NO_BID" replacement that the caller can decide to continue with
498
- // TODO: remove this in v8; see https://github.com/prebid/Prebid.js/issues/8956
499
- const noBid = createBid(CONSTANTS.STATUS.NO_BID, bid.getIdentifiers?.());
500
- Object.assign(noBid, Object.fromEntries(Object.entries(bid).filter(([k]) => !noBid.hasOwnProperty(k) && ![
501
- 'ad',
502
- 'adUrl',
503
- 'vastXml',
504
- 'vastUrl',
505
- 'native',
506
- ].includes(k))));
507
- noBid.status = CONSTANTS.BID_STATUS.BID_REJECTED;
508
- noBid.cpm = 0;
509
-
510
496
  bid.rejectionReason = reason;
511
497
  logWarn(`Bid from ${bid.bidder || 'unknown bidder'} was rejected: ${reason}`, bid)
512
498
  events.emit(CONSTANTS.EVENTS.BID_REJECTED, bid);
513
499
  auctionInstance.addBidRejected(bid);
514
500
  done();
515
-
516
- return noBid;
517
501
  })
518
502
  }
519
503
 
@@ -552,12 +536,12 @@ export function auctionCallbacks(auctionDone, auctionInstance, {index = auctionM
552
536
  waitFor((bidderRequest && bidderRequest.bidderRequestId) || '', addBidResponse.call({
553
537
  dispatch: acceptBidResponse,
554
538
  }, adUnitCode, bid, (() => {
555
- let rejection;
539
+ let rejected = false;
556
540
  return (reason) => {
557
- if (rejection == null) {
558
- rejection = rejectBidResponse(adUnitCode, bid, reason);
541
+ if (!rejected) {
542
+ rejectBidResponse(adUnitCode, bid, reason);
543
+ rejected = true;
559
544
  }
560
- return rejection;
561
545
  }
562
546
  })()));
563
547
  }
@@ -581,8 +565,8 @@ export function addBidToAuction(auctionInstance, bidResponse) {
581
565
  setupBidTargeting(bidResponse);
582
566
 
583
567
  useMetrics(bidResponse.metrics).timeSince('addBidResponse', 'addBidResponse.total');
584
- events.emit(CONSTANTS.EVENTS.BID_RESPONSE, bidResponse);
585
568
  auctionInstance.addBidReceived(bidResponse);
569
+ events.emit(CONSTANTS.EVENTS.BID_RESPONSE, bidResponse);
586
570
 
587
571
  doCallbacksIfTimedout(auctionInstance, bidResponse);
588
572
  }
@@ -11,8 +11,7 @@
11
11
  },
12
12
  "DEBUG_MODE": "pbjs_debug",
13
13
  "STATUS": {
14
- "GOOD": 1,
15
- "NO_BID": 2
14
+ "GOOD": 1
16
15
  },
17
16
  "CB": {
18
17
  "TYPE": {
package/src/utils.js CHANGED
@@ -1,9 +1,10 @@
1
- import { config } from './config.js';
1
+ import {config} from './config.js';
2
2
  import clone from 'just-clone';
3
3
  import {find, includes} from './polyfill.js';
4
4
  import CONSTANTS from './constants.json';
5
5
  import {GreedyPromise} from './utils/promise.js';
6
6
  import {getGlobal} from './prebidGlobal.js';
7
+
7
8
  export { default as deepAccess } from 'dlv/index.js';
8
9
  export { dset as deepSetValue } from 'dset';
9
10
 
@@ -1067,39 +1068,6 @@ export function pick(obj, properties) {
1067
1068
  }, {});
1068
1069
  }
1069
1070
 
1070
- /**
1071
- * Converts an object of arrays (either strings or numbers) into an array of objects containing key and value properties
1072
- * normally read from bidder params
1073
- * eg { foo: ['bar', 'baz'], fizz: ['buzz'] }
1074
- * becomes [{ key: 'foo', value: ['bar', 'baz']}, {key: 'fizz', value: ['buzz']}]
1075
- * @param {Object} keywords object of arrays representing keyvalue pairs
1076
- * @param {string} paramName name of parent object (eg 'keywords') containing keyword data, used in error handling
1077
- */
1078
- export function transformBidderParamKeywords(keywords, paramName = 'keywords') {
1079
- let arrs = [];
1080
-
1081
- _each(keywords, (v, k) => {
1082
- if (isArray(v)) {
1083
- let values = [];
1084
- _each(v, (val) => {
1085
- val = getValueString(paramName + '.' + k, val);
1086
- if (val || val === '') { values.push(val); }
1087
- });
1088
- v = values;
1089
- } else {
1090
- v = getValueString(paramName + '.' + k, v);
1091
- if (isStr(v)) {
1092
- v = [v];
1093
- } else {
1094
- return;
1095
- } // unsuported types - don't send a key
1096
- }
1097
- arrs.push({key: k, value: v});
1098
- });
1099
-
1100
- return arrs;
1101
- }
1102
-
1103
1071
  /**
1104
1072
  * Try to convert a value to a type.
1105
1073
  * If it can't be done, the value will be returned.
@@ -797,13 +797,6 @@ export function getAdUnits() {
797
797
  'aId': 3080
798
798
  }
799
799
  },
800
- {
801
- 'bidder': 'aol',
802
- 'params': {
803
- 'network': '112345.45',
804
- 'placement': 12345
805
- }
806
- },
807
800
  {
808
801
  'bidder': 'sovrn',
809
802
  'params': {
@@ -57,6 +57,7 @@
57
57
  });
58
58
 
59
59
  pbjs.que.push(function () {
60
+ pbjs.setConfig({enableTIDs: true});
60
61
  pbjs.addAdUnits(adUnits);
61
62
  pbjs.requestBids({ bidsBackHandler: sendAdServerRequest });
62
63
  });
@@ -67,6 +67,7 @@
67
67
  });
68
68
 
69
69
  pbjs.que.push(function () {
70
+ pbjs.setConfig({enableTIDs: true});
70
71
  pbjs.addAdUnits(adUnits);
71
72
  pbjs.bidderSettings = {
72
73
  appnexus: {
@@ -146,6 +146,7 @@
146
146
  pbjs.que.push(function () {
147
147
  pbjs.addAdUnits(adUnits);
148
148
  pbjs.setConfig({
149
+ enableTIDs: true,
149
150
  consentManagement: {
150
151
  gdpr: {
151
152
  cmpApi: 'static',
@@ -77,6 +77,7 @@
77
77
 
78
78
  pbjs.que.push(function() {
79
79
  pbjs.setConfig({
80
+ enableTIDs: true,
80
81
  "currency": {
81
82
  "adServerCurrency": "GBP",
82
83
  "granularityMultiplier": 1,
@@ -60,6 +60,7 @@
60
60
 
61
61
  pbjs.addAdUnits(videoAdUnit);
62
62
  pbjs.setConfig({
63
+ enableTIDs: true,
63
64
  debug: true,
64
65
  cache: {
65
66
  url: 'https://prebid.adnxs.com/pbc/v1/cache'
@@ -72,7 +72,7 @@
72
72
  }
73
73
  }]
74
74
  }];
75
-
75
+ pbjs.setConfig({enableTIDs: true});
76
76
  pbjs.addAdUnits(adUnits);
77
77
  pbjs.requestBids({
78
78
  timeout: PREBID_TIMEOUT,
@@ -83,6 +83,7 @@
83
83
  });
84
84
 
85
85
  pbjs.que.push(function () {
86
+ pbjs.setConfig({enableTIDs: true});
86
87
  pbjs.addAdUnits(adUnits);
87
88
  pbjs.requestBids({ bidsBackHandler: sendAdServerRequest });
88
89
  });
@@ -61,7 +61,10 @@
61
61
  googletag.cmd = googletag.cmd || [];
62
62
 
63
63
  pbjs.que.push(function () {
64
- pbjs.setConfig({ debug: true });
64
+ pbjs.setConfig({
65
+ enableTIDs: true,
66
+ debug: true
67
+ });
65
68
  pbjs.addAdUnits(outstreamVideoAdUnit);
66
69
  pbjs.bidderSettings = {
67
70
  appnexus: {
@@ -7,7 +7,7 @@ import {
7
7
  import {ACTIVITY_PARAM_COMPONENT_NAME, ACTIVITY_PARAM_COMPONENT_TYPE} from '../../../src/activities/params.js';
8
8
  import {
9
9
  ACTIVITY_TRANSMIT_EIDS,
10
- ACTIVITY_TRANSMIT_PRECISE_GEO,
10
+ ACTIVITY_TRANSMIT_PRECISE_GEO, ACTIVITY_TRANSMIT_TID,
11
11
  ACTIVITY_TRANSMIT_UFPD
12
12
  } from '../../../src/activities/activities.js';
13
13
  import {deepAccess, deepSetValue} from '../../../src/utils.js';
@@ -271,6 +271,10 @@ describe('redactor', () => {
271
271
  testAllowDeny(ACTIVITY_TRANSMIT_EIDS, (allowed) => {
272
272
  testPropertiesAreRemoved(() => redactor.bidRequest, ['userId', 'userIdAsEids'], allowed);
273
273
  });
274
+
275
+ testAllowDeny(ACTIVITY_TRANSMIT_TID, (allowed) => {
276
+ testPropertiesAreRemoved(() => redactor.bidRequest, ['ortb2Imp.ext.tid'], allowed);
277
+ })
274
278
  });
275
279
 
276
280
  describe('.ortb2', () => {
@@ -282,6 +286,10 @@ describe('redactor', () => {
282
286
  testPropertiesAreRemoved(() => redactor.ortb2, ORTB_UFPD_PATHS, allowed)
283
287
  });
284
288
 
289
+ testAllowDeny(ACTIVITY_TRANSMIT_TID, (allowed) => {
290
+ testPropertiesAreRemoved(() => redactor.ortb2, ['source.tid'], allowed);
291
+ });
292
+
285
293
  testAllowDeny(ACTIVITY_TRANSMIT_PRECISE_GEO, (allowed) => {
286
294
  ORTB_GEO_PATHS.forEach(path => {
287
295
  it(`should ${allowed ? 'NOT ' : ''} round down ${path}`, () => {
@@ -291,6 +299,6 @@ describe('redactor', () => {
291
299
  expect(deepAccess(ortb2, path)).to.eql(allowed ? 1.2345 : 1.23);
292
300
  })
293
301
  })
294
- })
302
+ });
295
303
  });
296
304
  })
@@ -0,0 +1,70 @@
1
+ import {transformBidderParamKeywords} from '../../libraries/appnexusKeywords/anKeywords.js';
2
+ import {expect} from 'chai/index.js';
3
+ import * as utils from '../../src/utils.js';
4
+
5
+ describe('transformBidderParamKeywords', function () {
6
+ it('returns an array of objects when keyvalue is an array', function () {
7
+ let keywords = {
8
+ genre: ['rock', 'pop']
9
+ };
10
+ let result = transformBidderParamKeywords(keywords);
11
+ expect(result).to.deep.equal([{
12
+ key: 'genre',
13
+ value: ['rock', 'pop']
14
+ }]);
15
+ });
16
+
17
+ it('returns an array of objects when keyvalue is a string', function () {
18
+ let keywords = {
19
+ genre: 'opera'
20
+ };
21
+ let result = transformBidderParamKeywords(keywords);
22
+ expect(result).to.deep.equal([{
23
+ key: 'genre',
24
+ value: ['opera']
25
+ }]);
26
+ });
27
+
28
+ it('returns an array of objects when keyvalue is a number', function () {
29
+ let keywords = {
30
+ age: 15
31
+ };
32
+ let result = transformBidderParamKeywords(keywords);
33
+ expect(result).to.deep.equal([{
34
+ key: 'age',
35
+ value: ['15']
36
+ }]);
37
+ });
38
+
39
+ it('returns an array of objects when using multiple keys with values of differing types', function () {
40
+ let keywords = {
41
+ genre: 'classical',
42
+ mix: ['1', 2, '3', 4],
43
+ age: 10
44
+ };
45
+ let result = transformBidderParamKeywords(keywords);
46
+ expect(result).to.deep.equal([{
47
+ key: 'genre',
48
+ value: ['classical']
49
+ }, {
50
+ key: 'mix',
51
+ value: ['1', '2', '3', '4']
52
+ }, {
53
+ key: 'age',
54
+ value: ['10']
55
+ }]);
56
+ });
57
+
58
+ it('returns an array of objects when the keyvalue uses an empty string', function () {
59
+ let keywords = {
60
+ test: [''],
61
+ test2: ''
62
+ };
63
+ let result = transformBidderParamKeywords(keywords);
64
+ expect(result).to.deep.equal([{
65
+ key: 'test',
66
+ }, {
67
+ key: 'test2',
68
+ }]);
69
+ });
70
+ });