prebid.js 8.44.0 → 8.46.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 (521) hide show
  1. package/README.md +7 -1
  2. package/creative/constants.js +7 -7
  3. package/creative/renderers/display/constants.js +2 -2
  4. package/creative/renderers/native/constants.js +2 -2
  5. package/dist/33acrossAnalyticsAdapter.js +1 -1
  6. package/dist/33acrossBidAdapter.js +1 -1
  7. package/dist/33acrossIdSystem.js +1 -1
  8. package/dist/BTBidAdapter.js +1 -1
  9. package/dist/adWMGAnalyticsAdapter.js +1 -1
  10. package/dist/adagioAnalyticsAdapter.js +1 -1
  11. package/dist/adagioBidAdapter.js +1 -1
  12. package/dist/adbookpspBidAdapter.js +1 -1
  13. package/dist/adgenerationBidAdapter.js +1 -1
  14. package/dist/adkernelAdnAnalyticsAdapter.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/adnuntiusBidAdapter.js +1 -1
  20. package/dist/adomikAnalyticsAdapter.js +1 -1
  21. package/dist/adpod.js +1 -1
  22. package/dist/adqueryBidAdapter.js +1 -1
  23. package/dist/adrelevantisBidAdapter.js +1 -1
  24. package/dist/adstirBidAdapter.js +1 -1
  25. package/dist/adtrgtmeBidAdapter.js +1 -1
  26. package/dist/adxcgAnalyticsAdapter.js +1 -1
  27. package/dist/adxcgBidAdapter.js +1 -1
  28. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  29. package/dist/adyoulikeBidAdapter.js +1 -1
  30. package/dist/agmaAnalyticsAdapter.js +1 -1
  31. package/dist/ajaBidAdapter.js +1 -1
  32. package/dist/alkimiBidAdapter.js +1 -1
  33. package/dist/amxBidAdapter.js +1 -1
  34. package/dist/amxIdSystem.js +1 -1
  35. package/dist/analyticsAdapter.js +1 -1
  36. package/dist/appierAnalyticsAdapter.js +1 -1
  37. package/dist/appnexusBidAdapter.js +1 -1
  38. package/dist/asoBidAdapter.js +1 -1
  39. package/dist/asteriobidAnalyticsAdapter.js +1 -1
  40. package/dist/atsAnalyticsAdapter.js +1 -1
  41. package/dist/automatadAnalyticsAdapter.js +1 -1
  42. package/dist/axonixBidAdapter.js +1 -1
  43. package/dist/bidViewability.js +1 -1
  44. package/dist/bidViewabilityIO.js +1 -1
  45. package/dist/bidglassBidAdapter.js +1 -1
  46. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  47. package/dist/big-richmediaBidAdapter.js +1 -1
  48. package/dist/brandmetricsRtdProvider.js +1 -1
  49. package/dist/bridBidAdapter.js +1 -1
  50. package/dist/bridgewellBidAdapter.js +1 -1
  51. package/dist/brightMountainMediaBidAdapter.js +1 -1
  52. package/dist/browsiRtdProvider.js +1 -1
  53. package/dist/byDataAnalyticsAdapter.js +1 -1
  54. package/dist/carodaBidAdapter.js +1 -1
  55. package/dist/chtnwBidAdapter.js +1 -1
  56. package/dist/chunk-core.js +1 -1
  57. package/dist/chunk-paapi.js +1 -1
  58. package/dist/cleanioRtdProvider.js +1 -1
  59. package/dist/concertAnalyticsAdapter.js +1 -1
  60. package/dist/concertBidAdapter.js +1 -1
  61. package/dist/confiantRtdProvider.js +1 -1
  62. package/dist/connectadBidAdapter.js +1 -1
  63. package/dist/consentManagementUsp.js +1 -1
  64. package/dist/consumableBidAdapter.js +1 -1
  65. package/dist/conversantAnalyticsAdapter.js +1 -1
  66. package/dist/conversantBidAdapter.js +1 -1
  67. package/dist/craftBidAdapter.js +1 -1
  68. package/dist/creative-renderer-native.js +1 -1
  69. package/dist/criteoBidAdapter.js +1 -1
  70. package/dist/currency.js +1 -1
  71. package/dist/cwireBidAdapter.js +1 -1
  72. package/dist/dailymotionBidAdapter.js +1 -0
  73. package/dist/datablocksAnalyticsAdapter.js +1 -1
  74. package/dist/datawrkzBidAdapter.js +1 -1
  75. package/dist/debugging-standalone.js +1 -1
  76. package/dist/debugging.js +1 -1
  77. package/dist/dependencies.json +15 -6
  78. package/dist/dfpAdServerVideo.js +1 -1
  79. package/dist/dsaControl.js +1 -1
  80. package/dist/dspxBidAdapter.js +1 -1
  81. package/dist/dxkultureBidAdapter.js +1 -1
  82. package/dist/engageyaBidAdapter.js +1 -1
  83. package/dist/eplanningAnalyticsAdapter.js +1 -1
  84. package/dist/eplanningBidAdapter.js +1 -1
  85. package/dist/euidIdSystem.js +1 -1
  86. package/dist/feedadBidAdapter.js +1 -1
  87. package/dist/finativeBidAdapter.js +1 -1
  88. package/dist/fintezaAnalyticsAdapter.js +1 -1
  89. package/dist/freewheel-sspBidAdapter.js +1 -1
  90. package/dist/gdprEnforcement.js +1 -1
  91. package/dist/genericAnalyticsAdapter.js +1 -1
  92. package/dist/geoedgeRtdProvider.js +1 -1
  93. package/dist/gmosspBidAdapter.js +1 -1
  94. package/dist/goldbachBidAdapter.js +1 -1
  95. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  96. package/dist/greenbidsRtdProvider.js +1 -1
  97. package/dist/gridBidAdapter.js +1 -1
  98. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  99. package/dist/gumgumBidAdapter.js +1 -1
  100. package/dist/h12mediaBidAdapter.js +1 -1
  101. package/dist/hadronAnalyticsAdapter.js +1 -1
  102. package/dist/holidBidAdapter.js +1 -1
  103. package/dist/hypelabBidAdapter.js +1 -1
  104. package/dist/id5AnalyticsAdapter.js +1 -1
  105. package/dist/id5IdSystem.js +1 -1
  106. package/dist/illuminBidAdapter.js +1 -1
  107. package/dist/imdsBidAdapter.js +1 -1
  108. package/dist/improvedigitalBidAdapter.js +1 -1
  109. package/dist/insticatorBidAdapter.js +1 -1
  110. package/dist/instreamTracking.js +1 -1
  111. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  112. package/dist/ixBidAdapter.js +1 -1
  113. package/dist/jixieBidAdapter.js +1 -1
  114. package/dist/justpremiumBidAdapter.js +1 -1
  115. package/dist/jwplayerBidAdapter.js +1 -0
  116. package/dist/kargoAnalyticsAdapter.js +1 -1
  117. package/dist/kargoBidAdapter.js +1 -1
  118. package/dist/kimberliteBidAdapter.js +1 -1
  119. package/dist/konduitAnalyticsAdapter.js +1 -1
  120. package/dist/kueezBidAdapter.js +1 -1
  121. package/dist/kueezRtbBidAdapter.js +1 -1
  122. package/dist/lassoBidAdapter.js +1 -1
  123. package/dist/lifestreetBidAdapter.js +1 -1
  124. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  125. package/dist/liveIntentIdSystem.js +1 -1
  126. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  127. package/dist/logicadBidAdapter.js +1 -1
  128. package/dist/loglyliftBidAdapter.js +1 -1
  129. package/dist/luceadBidAdapter.js +1 -1
  130. package/dist/magniteAnalyticsAdapter.js +1 -1
  131. package/dist/malltvAnalyticsAdapter.js +1 -1
  132. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  133. package/dist/marsmediaBidAdapter.js +1 -1
  134. package/dist/mediafilterRtdProvider.js +1 -1
  135. package/dist/mediafuseBidAdapter.js +1 -1
  136. package/dist/medianetAnalyticsAdapter.js +1 -1
  137. package/dist/medianetBidAdapter.js +1 -1
  138. package/dist/mediasquareBidAdapter.js +1 -1
  139. package/dist/mgidBidAdapter.js +1 -1
  140. package/dist/minutemediaBidAdapter.js +1 -1
  141. package/dist/minutemediaplusBidAdapter.js +1 -1
  142. package/dist/missenaBidAdapter.js +1 -1
  143. package/dist/multibid.js +1 -1
  144. package/dist/neuwoRtdProvider.js +1 -1
  145. package/dist/nextMillenniumBidAdapter.js +1 -1
  146. package/dist/nexx360BidAdapter.js +1 -1
  147. package/dist/nobidAnalyticsAdapter.js +1 -1
  148. package/dist/not-for-prod/prebid.js +245 -241
  149. package/dist/oguryBidAdapter.js +1 -1
  150. package/dist/onetagBidAdapter.js +1 -1
  151. package/dist/ooloAnalyticsAdapter.js +1 -1
  152. package/dist/openwebBidAdapter.js +1 -1
  153. package/dist/openxBidAdapter.js +1 -1
  154. package/dist/optableBidAdapter.js +1 -0
  155. package/dist/optidigitalBidAdapter.js +1 -1
  156. package/dist/optimonAnalyticsAdapter.js +1 -1
  157. package/dist/ortbConverter.js +1 -1
  158. package/dist/outbrainBidAdapter.js +1 -1
  159. package/dist/oxxionAnalyticsAdapter.js +1 -1
  160. package/dist/oxxionRtdProvider.js +1 -1
  161. package/dist/parrableIdSystem.js +1 -1
  162. package/dist/pbsExtensions.js +1 -1
  163. package/dist/permutiveRtdProvider.js +1 -1
  164. package/dist/pgamsspBidAdapter.js +1 -1
  165. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  166. package/dist/pirIdSystem.js +1 -0
  167. package/dist/pixfutureBidAdapter.js +1 -1
  168. package/dist/prebidServerBidAdapter.js +1 -1
  169. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  170. package/dist/priceFloors.js +1 -1
  171. package/dist/publinkIdSystem.js +1 -1
  172. package/dist/publirBidAdapter.js +1 -1
  173. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  174. package/dist/pubmaticBidAdapter.js +1 -1
  175. package/dist/pubperfAnalyticsAdapter.js +1 -1
  176. package/dist/pubstackAnalyticsAdapter.js +1 -1
  177. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  178. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  179. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  180. package/dist/pxyzBidAdapter.js +1 -1
  181. package/dist/qortexRtdProvider.js +1 -1
  182. package/dist/quantcastBidAdapter.js +1 -1
  183. package/dist/readpeakBidAdapter.js +1 -1
  184. package/dist/relaidoBidAdapter.js +1 -1
  185. package/dist/relevantAnalyticsAdapter.js +1 -1
  186. package/dist/retailspotBidAdapter.js +1 -1
  187. package/dist/rhythmoneBidAdapter.js +1 -1
  188. package/dist/riseBidAdapter.js +1 -1
  189. package/dist/rivrAnalyticsAdapter.js +1 -1
  190. package/dist/roxotAnalyticsAdapter.js +1 -1
  191. package/dist/rtdModule.js +1 -1
  192. package/dist/rubiconBidAdapter.js +1 -1
  193. package/dist/s2sTesting.js +1 -1
  194. package/dist/scaleableAnalyticsAdapter.js +1 -1
  195. package/dist/schain.js +1 -1
  196. package/dist/seedingAllianceBidAdapter.js +1 -1
  197. package/dist/seedtagBidAdapter.js +1 -1
  198. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  199. package/dist/sharethroughBidAdapter.js +1 -1
  200. package/dist/shinezBidAdapter.js +1 -1
  201. package/dist/shinezRtbBidAdapter.js +1 -1
  202. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  203. package/dist/sirdataRtdProvider.js +1 -1
  204. package/dist/sizeMapping.js +1 -1
  205. package/dist/smaatoBidAdapter.js +1 -1
  206. package/dist/smartadserverBidAdapter.js +1 -1
  207. package/dist/smartxBidAdapter.js +1 -1
  208. package/dist/smilewantedBidAdapter.js +1 -1
  209. package/dist/sonobiAnalyticsAdapter.js +1 -1
  210. package/dist/sonobiBidAdapter.js +1 -1
  211. package/dist/sovrnAnalyticsAdapter.js +1 -1
  212. package/dist/sovrnBidAdapter.js +1 -1
  213. package/dist/sspBCBidAdapter.js +1 -1
  214. package/dist/staqAnalyticsAdapter.js +1 -1
  215. package/dist/stnBidAdapter.js +1 -1
  216. package/dist/stroeerCoreBidAdapter.js +1 -1
  217. package/dist/stvBidAdapter.js +1 -1
  218. package/dist/sublimeBidAdapter.js +1 -1
  219. package/dist/taboolaBidAdapter.js +1 -1
  220. package/dist/tagorasBidAdapter.js +1 -1
  221. package/dist/targetVideoBidAdapter.js +1 -1
  222. package/dist/teadsBidAdapter.js +1 -1
  223. package/dist/terceptAnalyticsAdapter.js +1 -1
  224. package/dist/themoneytizerBidAdapter.js +1 -1
  225. package/dist/topicsFpdModule.js +1 -1
  226. package/dist/trionBidAdapter.js +1 -1
  227. package/dist/tripleliftBidAdapter.js +1 -1
  228. package/dist/ttdBidAdapter.js +1 -1
  229. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  230. package/dist/uid2IdSystem.js +1 -1
  231. package/dist/underdogmediaBidAdapter.js +1 -1
  232. package/dist/undertoneBidAdapter.js +1 -1
  233. package/dist/unrulyBidAdapter.js +1 -1
  234. package/dist/userId.js +1 -1
  235. package/dist/viantOrtbBidAdapter.js +1 -1
  236. package/dist/vidazooBidAdapter.js +1 -1
  237. package/dist/videoModule.js +1 -1
  238. package/dist/videobyteBidAdapter.js +1 -1
  239. package/dist/visxBidAdapter.js +1 -1
  240. package/dist/vuukleBidAdapter.js +1 -1
  241. package/dist/weboramaRtdProvider.js +1 -1
  242. package/dist/widespaceBidAdapter.js +1 -1
  243. package/dist/winrBidAdapter.js +1 -1
  244. package/dist/yahoosspBidAdapter.js +1 -1
  245. package/dist/yandexAnalyticsAdapter.js +1 -1
  246. package/dist/yieldmoBidAdapter.js +1 -1
  247. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  248. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  249. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  250. package/dist/zeta_global_sspBidAdapter.js +1 -1
  251. package/gulpfile.js +9 -1
  252. package/integrationExamples/gpt/adnuntius_example.html +7 -1
  253. package/integrationExamples/gpt/azerionedgeRtdProvider_example.html +3 -3
  254. package/integrationExamples/gpt/top-level-paapi/decisionLogic.js +57 -0
  255. package/integrationExamples/gpt/top-level-paapi/tl_paapi_example.html +188 -0
  256. package/integrationExamples/gpt/x-domain/creative.html +1 -1
  257. package/integrationExamples/noadserver/jwplayerBidAdapter_sample.html +75 -0
  258. package/integrationExamples/realTimeData/jwplayerRtdProvider_example.html +7 -0
  259. package/integrationExamples/videoModule/jwplayer/bidMarkedAsUsed.html +7 -0
  260. package/integrationExamples/videoModule/jwplayer/bidRequestScheduling.html +9 -4
  261. package/integrationExamples/videoModule/jwplayer/bidsBackHandlerOverride.html +7 -0
  262. package/integrationExamples/videoModule/jwplayer/eventListeners.html +7 -0
  263. package/integrationExamples/videoModule/jwplayer/eventsUI.html +7 -0
  264. package/integrationExamples/videoModule/jwplayer/gamAdServerMediation.html +7 -0
  265. package/integrationExamples/videoModule/jwplayer/mediaMetadata.html +7 -0
  266. package/integrationExamples/videoModule/jwplayer/playlist.html +7 -0
  267. package/integrationExamples/videoModule/videojs/bidMarkedAsUsed.html +7 -0
  268. package/integrationExamples/videoModule/videojs/bidRequestScheduling.html +7 -0
  269. package/integrationExamples/videoModule/videojs/bidsBackHandlerOverride.html +7 -0
  270. package/integrationExamples/videoModule/videojs/eventListeners.html +7 -0
  271. package/integrationExamples/videoModule/videojs/eventsUI.html +7 -0
  272. package/integrationExamples/videoModule/videojs/gamAdServerMediation.html +7 -0
  273. package/integrationExamples/videoModule/videojs/mediaMetadata.html +7 -0
  274. package/integrationExamples/videoModule/videojs/playlist.html +7 -0
  275. package/libraries/analyticsAdapter/AnalyticsAdapter.js +4 -4
  276. package/libraries/creative-renderer-native/renderer.js +1 -1
  277. package/libraries/ortbConverter/processors/banner.js +2 -2
  278. package/modules/33acrossAnalyticsAdapter.js +2 -4
  279. package/modules/33acrossIdSystem.js +1 -1
  280. package/modules/adWMGAnalyticsAdapter.js +9 -11
  281. package/modules/adagioAnalyticsAdapter.js +8 -8
  282. package/modules/adgenerationBidAdapter.js +6 -10
  283. package/modules/adkernelAdnAnalyticsAdapter.js +8 -8
  284. package/modules/adkernelBidAdapter.js +9 -3
  285. package/modules/adlooxAdServerVideo.js +2 -2
  286. package/modules/adlooxAnalyticsAdapter.js +4 -4
  287. package/modules/adnuntiusBidAdapter.js +54 -31
  288. package/modules/adomikAnalyticsAdapter.js +7 -7
  289. package/modules/adpod.js +3 -3
  290. package/modules/adxcgAnalyticsAdapter.js +10 -10
  291. package/modules/adxpremiumAnalyticsAdapter.js +8 -10
  292. package/modules/agmaAnalyticsAdapter.js +2 -6
  293. package/modules/alkimiBidAdapter.js +48 -8
  294. package/modules/appierAnalyticsAdapter.js +5 -7
  295. package/modules/asteriobidAnalyticsAdapter.js +14 -14
  296. package/modules/atsAnalyticsAdapter.js +4 -4
  297. package/modules/automatadAnalyticsAdapter.js +20 -20
  298. package/modules/azerionedgeRtdProvider.md +4 -2
  299. package/modules/bidViewability.js +3 -3
  300. package/modules/bidViewabilityIO.js +3 -3
  301. package/modules/bidwatchAnalyticsAdapter.js +7 -9
  302. package/modules/brandmetricsRtdProvider.js +6 -6
  303. package/modules/browsiRtdProvider.js +3 -3
  304. package/modules/byDataAnalyticsAdapter.js +3 -3
  305. package/modules/cleanioRtdProvider.js +3 -3
  306. package/modules/concertAnalyticsAdapter.js +5 -7
  307. package/modules/confiantRtdProvider.js +2 -2
  308. package/modules/conversantAnalyticsAdapter.js +2 -4
  309. package/modules/criteoBidAdapter.js +51 -8
  310. package/modules/currency.js +7 -7
  311. package/modules/dailymotionBidAdapter.js +139 -0
  312. package/modules/dailymotionBidAdapter.md +140 -0
  313. package/modules/datawrkzBidAdapter.js +4 -4
  314. package/modules/debugging/pbsInterceptor.js +2 -2
  315. package/modules/dfpAdServerVideo.js +2 -2
  316. package/modules/dsaControl.js +5 -5
  317. package/modules/engageyaBidAdapter.js +1 -1
  318. package/modules/eplanningAnalyticsAdapter.js +8 -8
  319. package/modules/fintezaAnalyticsAdapter.js +5 -5
  320. package/modules/gdprEnforcement.js +3 -3
  321. package/modules/geoedgeRtdProvider.js +2 -2
  322. package/modules/greenbidsAnalyticsAdapter.js +13 -10
  323. package/modules/greenbidsRtdProvider.js +2 -2
  324. package/modules/growthCodeAnalyticsAdapter.js +14 -14
  325. package/modules/gumgumBidAdapter.js +1 -1
  326. package/modules/hadronAnalyticsAdapter.js +14 -14
  327. package/modules/holidBidAdapter.js +2 -2
  328. package/modules/id5AnalyticsAdapter.js +7 -9
  329. package/modules/improvedigitalBidAdapter.js +2 -1
  330. package/modules/insticatorBidAdapter.js +137 -27
  331. package/modules/instreamTracking.js +4 -4
  332. package/modules/invisiblyAnalyticsAdapter.js +15 -17
  333. package/modules/ixBidAdapter.js +3 -3
  334. package/modules/jwplayerBidAdapter.js +412 -0
  335. package/modules/jwplayerBidAdapter.md +72 -0
  336. package/modules/kargoAnalyticsAdapter.js +3 -3
  337. package/modules/kargoBidAdapter.js +5 -11
  338. package/modules/konduitAnalyticsAdapter.js +13 -13
  339. package/modules/liveIntentAnalyticsAdapter.js +2 -2
  340. package/modules/livewrappedAnalyticsAdapter.js +10 -10
  341. package/modules/magniteAnalyticsAdapter.js +25 -23
  342. package/modules/malltvAnalyticsAdapter.js +4 -6
  343. package/modules/mediafilterRtdProvider.js +2 -2
  344. package/modules/medianetAnalyticsAdapter.js +12 -12
  345. package/modules/medianetBidAdapter.js +1 -1
  346. package/modules/multibid/index.js +2 -2
  347. package/modules/neuwoRtdProvider.js +2 -2
  348. package/modules/nextMillenniumBidAdapter.js +4 -4
  349. package/modules/nobidAnalyticsAdapter.js +9 -11
  350. package/modules/ooloAnalyticsAdapter.js +2 -2
  351. package/modules/optableBidAdapter.js +42 -0
  352. package/modules/optableBidAdapter.md +41 -0
  353. package/modules/optidigitalBidAdapter.js +20 -4
  354. package/modules/oxxionAnalyticsAdapter.js +7 -9
  355. package/modules/paapi.js +20 -6
  356. package/modules/permutiveRtdProvider.js +21 -2
  357. package/modules/pgamsspBidAdapter.js +26 -3
  358. package/modules/pirIdSystem.js +62 -0
  359. package/modules/pirIdSystem.md +27 -0
  360. package/modules/prebidServerBidAdapter/index.js +8 -8
  361. package/modules/prebidServerBidAdapter/ortbConverter.js +3 -3
  362. package/modules/prebidmanagerAnalyticsAdapter.js +14 -14
  363. package/modules/priceFloors.js +10 -5
  364. package/modules/pubmaticAnalyticsAdapter.js +32 -22
  365. package/modules/pubmaticBidAdapter.js +22 -18
  366. package/modules/pubwiseAnalyticsAdapter.js +11 -11
  367. package/modules/pubxaiAnalyticsAdapter.js +6 -6
  368. package/modules/qortexRtdProvider.js +2 -2
  369. package/modules/relaidoBidAdapter.js +70 -9
  370. package/modules/roxotAnalyticsAdapter.js +8 -10
  371. package/modules/rtdModule/index.js +7 -7
  372. package/modules/scaleableAnalyticsAdapter.js +5 -5
  373. package/modules/seedtagBidAdapter.js +12 -3
  374. package/modules/sigmoidAnalyticsAdapter.js +7 -7
  375. package/modules/sirdataRtdProvider.js +33 -43
  376. package/modules/smaatoBidAdapter.js +1 -2
  377. package/modules/sonobiAnalyticsAdapter.js +10 -12
  378. package/modules/sovrnAnalyticsAdapter.js +7 -9
  379. package/modules/sovrnBidAdapter.js +1 -1
  380. package/modules/staqAnalyticsAdapter.js +9 -9
  381. package/modules/stroeerCoreBidAdapter.js +7 -5
  382. package/modules/terceptAnalyticsAdapter.js +7 -7
  383. package/modules/topicsFpdModule.js +3 -0
  384. package/modules/topicsFpdModule.md +4 -0
  385. package/modules/ucfunnelAnalyticsAdapter.js +5 -7
  386. package/modules/userId/index.js +3 -3
  387. package/modules/viantOrtbBidAdapter.js +2 -0
  388. package/modules/videoModule/index.js +4 -4
  389. package/modules/yandexAnalyticsAdapter.js +8 -2
  390. package/modules/yieldoneAnalyticsAdapter.js +7 -7
  391. package/modules/yuktamediaAnalyticsAdapter.js +9 -9
  392. package/modules/zeta_global_sspAnalyticsAdapter.js +5 -5
  393. package/modules/zeta_global_sspBidAdapter.js +8 -1
  394. package/package.json +1 -1
  395. package/src/adRendering.js +15 -15
  396. package/src/adUnits.js +9 -21
  397. package/src/adapterManager.js +23 -13
  398. package/src/adapters/bidderFactory.js +8 -8
  399. package/src/auction.js +26 -28
  400. package/src/auctionManager.js +4 -4
  401. package/src/bidderSettings.js +2 -2
  402. package/src/config.js +2 -2
  403. package/src/constants.js +190 -0
  404. package/src/events.js +3 -3
  405. package/src/native.js +6 -8
  406. package/src/prebid.js +6 -10
  407. package/src/secureCreatives.js +5 -5
  408. package/src/targeting.js +13 -13
  409. package/src/utils.js +19 -6
  410. package/test/fixtures/fixtures.js +44 -44
  411. package/test/helpers/analytics.js +6 -6
  412. package/test/spec/AnalyticsAdapter_spec.js +3 -3
  413. package/test/spec/auctionmanager_spec.js +82 -82
  414. package/test/spec/modules/33acrossAnalyticsAdapter_spec.js +1 -2
  415. package/test/spec/modules/33acrossIdSystem_spec.js +3 -3
  416. package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +14 -14
  417. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +26 -26
  418. package/test/spec/modules/adgenerationBidAdapter_spec.js +6 -6
  419. package/test/spec/modules/adkernelAdnAnalytics_spec.js +6 -6
  420. package/test/spec/modules/adkernelBidAdapter_spec.js +9 -4
  421. package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
  422. package/test/spec/modules/adnuntiusBidAdapter_spec.js +26 -6
  423. package/test/spec/modules/adomikAnalyticsAdapter_spec.js +7 -7
  424. package/test/spec/modules/adxcgAnalyticsAdapter_spec.js +7 -7
  425. package/test/spec/modules/adxpremiumAnalyticsAdapter_spec.js +7 -7
  426. package/test/spec/modules/agmaAnalyticsAdapter_spec.js +14 -14
  427. package/test/spec/modules/alkimiBidAdapter_spec.js +11 -5
  428. package/test/spec/modules/appierAnalyticsAdapter_spec.js +1 -1
  429. package/test/spec/modules/asteriobidAnalyticsAdapter_spec.js +2 -2
  430. package/test/spec/modules/atsAnalyticsAdapter_spec.js +8 -8
  431. package/test/spec/modules/automatadAnalyticsAdapter_spec.js +2 -2
  432. package/test/spec/modules/bidViewabilityIO_spec.js +2 -2
  433. package/test/spec/modules/bidViewability_spec.js +4 -4
  434. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +7 -6
  435. package/test/spec/modules/byDataAnalyticsAdapter_spec.js +5 -4
  436. package/test/spec/modules/cleanioRtdProvider_spec.js +6 -6
  437. package/test/spec/modules/concertAnalyticsAdapter_spec.js +7 -6
  438. package/test/spec/modules/confiantRtdProvider_spec.js +2 -2
  439. package/test/spec/modules/conversantAnalyticsAdapter_spec.js +61 -61
  440. package/test/spec/modules/criteoBidAdapter_spec.js +111 -5
  441. package/test/spec/modules/currency_spec.js +6 -6
  442. package/test/spec/modules/dailymotionBidAdapter_spec.js +369 -0
  443. package/test/spec/modules/dsaControl_spec.js +4 -4
  444. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +20 -13
  445. package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +5 -5
  446. package/test/spec/modules/genericAnalyticsAdapter_spec.js +2 -2
  447. package/test/spec/modules/geoedgeRtdProvider_spec.js +37 -37
  448. package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +15 -2
  449. package/test/spec/modules/greenbidsRtdProvider_spec.js +2 -2
  450. package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +2 -2
  451. package/test/spec/modules/gumgumBidAdapter_spec.js +1 -1
  452. package/test/spec/modules/hadronAnalyticsAdapter_spec.js +3 -3
  453. package/test/spec/modules/id5AnalyticsAdapter_spec.js +5 -5
  454. package/test/spec/modules/id5IdSystem_spec.js +2 -2
  455. package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -3
  456. package/test/spec/modules/insticatorBidAdapter_spec.js +275 -22
  457. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +40 -40
  458. package/test/spec/modules/jwplayerBidAdapter_spec.js +412 -0
  459. package/test/spec/modules/kargoAnalyticsAdapter_spec.js +3 -3
  460. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +13 -13
  461. package/test/spec/modules/lemmaDigitalBidAdapter_spec.js +1 -1
  462. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -3
  463. package/test/spec/modules/liveIntentIdSystem_spec.js +13 -15
  464. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +15 -20
  465. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +31 -15
  466. package/test/spec/modules/malltvAnalyticsAdapter_spec.js +3 -3
  467. package/test/spec/modules/mediafilterRtdProvider_spec.js +2 -2
  468. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +3 -3
  469. package/test/spec/modules/nobidAnalyticsAdapter_spec.js +23 -23
  470. package/test/spec/modules/ooloAnalyticsAdapter_spec.js +33 -33
  471. package/test/spec/modules/optableBidAdapter_spec.js +89 -0
  472. package/test/spec/modules/optidigitalBidAdapter_spec.js +34 -4
  473. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +0 -1
  474. package/test/spec/modules/oxxionAnalyticsAdapter_spec.js +7 -7
  475. package/test/spec/modules/paapi_spec.js +40 -14
  476. package/test/spec/modules/permutiveRtdProvider_spec.js +29 -1
  477. package/test/spec/modules/pgamsspBidAdapter_spec.js +50 -4
  478. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +9 -9
  479. package/test/spec/modules/pirIdSystem_spec.js +77 -0
  480. package/test/spec/modules/prebidServerBidAdapter_spec.js +7 -7
  481. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +2 -2
  482. package/test/spec/modules/priceFloors_spec.js +6 -5
  483. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +12 -14
  484. package/test/spec/modules/pubmaticBidAdapter_spec.js +25 -2
  485. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +0 -1
  486. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +14 -14
  487. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +7 -7
  488. package/test/spec/modules/qortexRtdProvider_spec.js +2 -2
  489. package/test/spec/modules/realTimeDataModule_spec.js +9 -9
  490. package/test/spec/modules/relaidoBidAdapter_spec.js +62 -0
  491. package/test/spec/modules/relevantAnalyticsAdapter_spec.js +3 -3
  492. package/test/spec/modules/relevantdigitalBidAdapter_spec.js +2 -2
  493. package/test/spec/modules/rivrAnalyticsAdapter_spec.js +4 -4
  494. package/test/spec/modules/roxotAnalyticsAdapter_spec.js +25 -25
  495. package/test/spec/modules/scaleableAnalyticsAdapter_spec.js +5 -5
  496. package/test/spec/modules/seedtagBidAdapter_spec.js +56 -3
  497. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +0 -1
  498. package/test/spec/modules/sonobiAnalyticsAdapter_spec.js +8 -7
  499. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +2 -2
  500. package/test/spec/modules/sovrnBidAdapter_spec.js +5 -5
  501. package/test/spec/modules/staqAnalyticsAdapter_spec.js +7 -7
  502. package/test/spec/modules/stroeerCoreBidAdapter_spec.js +21 -0
  503. package/test/spec/modules/terceptAnalyticsAdapter_spec.js +7 -7
  504. package/test/spec/modules/trionBidAdapter_spec.js +1 -1
  505. package/test/spec/modules/ucfunnelAnalyticsAdapter_spec.js +1 -1
  506. package/test/spec/modules/userId_spec.js +4 -4
  507. package/test/spec/modules/videoModule/pbVideo_spec.js +3 -3
  508. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +22 -21
  509. package/test/spec/modules/yuktamediaAnalyticsAdapter_spec.js +33 -32
  510. package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +8 -8
  511. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +1 -1
  512. package/test/spec/native_spec.js +19 -19
  513. package/test/spec/unit/adRendering_spec.js +14 -14
  514. package/test/spec/unit/adUnits_spec.js +1 -1
  515. package/test/spec/unit/core/adapterManager_spec.js +99 -59
  516. package/test/spec/unit/core/bidderFactory_spec.js +6 -6
  517. package/test/spec/unit/core/targeting_spec.js +47 -47
  518. package/test/spec/unit/pbjs_api_spec.js +81 -81
  519. package/test/spec/unit/secureCreatives_spec.js +27 -27
  520. package/test/spec/utils_spec.js +19 -3
  521. package/src/constants.json +0 -196
@@ -0,0 +1,412 @@
1
+ import { expect, assert } from 'chai';
2
+ import { spec } from 'modules/jwplayerBidAdapter.js';
3
+
4
+ describe('jwplayerBidAdapter', function() {
5
+ beforeEach(function() {
6
+ this.defaultBidderRequest = {
7
+ gdprConsent: {
8
+ consentString: 'testConsentString',
9
+ gdprApplies: true
10
+ },
11
+ uspConsent: 'testCCPA',
12
+ refererInfo: {
13
+ referer: 'https://example.com'
14
+ },
15
+ ortb2: {
16
+ site: {
17
+ domain: 'page.example.com',
18
+ page: 'https://examplepage.com',
19
+ content: {
20
+ url: 'media.mp4',
21
+ id: 'testMediaId',
22
+ title: 'testTile',
23
+ data: [{
24
+ name: 'jwplayer.com',
25
+ segment: [{
26
+ id: '00000000'
27
+ }, {
28
+ id: '88888888'
29
+ }, {
30
+ id: '80808080'
31
+ }],
32
+ ext: {
33
+ segtax: 502,
34
+ cids: ['testMediaId', 'externalTestId'],
35
+ }
36
+ }],
37
+ ext: {
38
+ description: 'testDescription'
39
+ }
40
+ }
41
+ }
42
+ },
43
+ timeout: 1000
44
+ }
45
+ });
46
+
47
+ it('should use jwplayer bidder code', function () {
48
+ expect(spec.code).to.equal('jwplayer');
49
+ });
50
+
51
+ it('should use jwplayer GVLID code', function () {
52
+ expect(spec.gvlid).to.equal(1046);
53
+ });
54
+
55
+ it('should support VIDEO media type only', function () {
56
+ expect(spec.supportedMediaTypes).to.have.length(1);
57
+ expect(spec.supportedMediaTypes[0]).to.equal('video');
58
+ });
59
+
60
+ describe('isBidRequestValid', function() {
61
+ it('should be invalid when bidRequest is undefined', function() {
62
+ assert(spec.isBidRequestValid() === false);
63
+ });
64
+
65
+ it('should be invalid when bidRequest is null', function() {
66
+ assert(spec.isBidRequestValid(null) === false);
67
+ });
68
+
69
+ it('should be invalid when the bidRequest has no params', function() {
70
+ assert(spec.isBidRequestValid({}) === false);
71
+ });
72
+
73
+ it('should be invalid when the bid request only includes a publisher ID', function() {
74
+ assert(spec.isBidRequestValid({params: {publisherId: 'foo'}}) === false);
75
+ });
76
+
77
+ it('should be invalid when the bid request only includes a placement ID', function() {
78
+ assert(spec.isBidRequestValid({params: {placementId: 'foo'}}) === false);
79
+ });
80
+
81
+ it('should be invalid when the bid request only includes a site ID', function() {
82
+ assert(spec.isBidRequestValid({params: {siteId: 'foo'}}) === false);
83
+ });
84
+
85
+ it('should be valid when the bid includes a placement ID, a publisher ID and a site ID', function() {
86
+ assert(spec.isBidRequestValid({params: {placementId: 'foo', publisherId: 'bar', siteId: 'siteId '}}) === true);
87
+ });
88
+ });
89
+
90
+ describe('buildRequests', function() {
91
+ it('should return undefined when bidRequests is undefined', function () {
92
+ expect(spec.buildRequests()).to.be.undefined;
93
+ });
94
+
95
+ it('should return undefined when bidRequests is null', function () {
96
+ expect(spec.buildRequests(null)).to.be.undefined;
97
+ });
98
+
99
+ it('should return undefined when ortb site.content.url is absent', function () {
100
+ const request = spec.buildRequests({}, {
101
+ ortb2: {
102
+ site: {
103
+ content: {
104
+ url: null,
105
+ }
106
+ }
107
+ }
108
+ });
109
+
110
+ expect(request).to.be.undefined;
111
+ });
112
+
113
+ it('should build a valid request when bid request is complete', function() {
114
+ const incomingBidRequests = [
115
+ {
116
+ bidder: 'jwplayer',
117
+ params: {
118
+ placementId: 'testPlacementId',
119
+ publisherId: 'testPublisherId',
120
+ siteId: 'testSiteId',
121
+ bidFloor: 10,
122
+ currency: 'EUR',
123
+ },
124
+ mediaTypes: {
125
+ video: {
126
+ pos: 3,
127
+ w: 640,
128
+ h: 480,
129
+ context: 'instream',
130
+ mimes: [
131
+ 'video/mp4',
132
+ 'application/javascript'
133
+ ],
134
+ protocols: [2, 3, 5, 6],
135
+ maxduration: 60,
136
+ minduration: 3,
137
+ startdelay: 0,
138
+ linearity: 1,
139
+ placement: 1,
140
+ plcmt: 1,
141
+ skip: 1,
142
+ skipafter: 4,
143
+ minbitrate: 500,
144
+ maxbitrate: 1000,
145
+ api: [2],
146
+ delivery: [2],
147
+ playbackmethod: [1],
148
+ playbackend: 2
149
+ }
150
+ },
151
+ schain: {
152
+ ver: '1.0',
153
+ complete: 1,
154
+ nodes: [
155
+ {
156
+ asi: 'publisher.com',
157
+ sid: '00001',
158
+ hp: 1
159
+ }
160
+ ]
161
+ },
162
+ bidRequestsCount: 1,
163
+ adUnitCode: 'testAdUnitCode',
164
+ bidId: 'testBidId'
165
+ }
166
+ ];
167
+
168
+ const outgoingBidRequests = spec.buildRequests(incomingBidRequests, this.defaultBidderRequest);
169
+
170
+ outgoingBidRequests.forEach(serverRequest => {
171
+ expect(serverRequest.url).to.equal('https://vpb-server.jwplayer.com/openrtb2/auction');
172
+ expect(serverRequest.method).to.equal('POST');
173
+
174
+ const openrtbRequest = JSON.parse(serverRequest.data);
175
+
176
+ expect(openrtbRequest.id).to.equal('testBidId');
177
+
178
+ expect(openrtbRequest.imp[0].id).to.equal('testAdUnitCode');
179
+ expect(openrtbRequest.imp[0].video.w).to.equal(640);
180
+ expect(openrtbRequest.imp[0].video.h).to.equal(480);
181
+ expect(openrtbRequest.imp[0].video.mimes).to.deep.equal(['video/mp4', 'application/javascript']);
182
+ expect(openrtbRequest.imp[0].video.protocols).to.deep.equal([2, 3, 5, 6]);
183
+ expect(openrtbRequest.imp[0].video.api).to.deep.equal([2]);
184
+ expect(openrtbRequest.imp[0].video.startdelay).to.equal(0);
185
+ expect(openrtbRequest.imp[0].video.placement).to.equal(1);
186
+ expect(openrtbRequest.imp[0].video.plcmt).to.equal(1);
187
+ expect(openrtbRequest.imp[0].video.pos).to.equal(3);
188
+ expect(openrtbRequest.imp[0].video.minduration).to.equal(3);
189
+ expect(openrtbRequest.imp[0].video.maxduration).to.equal(60);
190
+ expect(openrtbRequest.imp[0].video.skip).to.equal(1);
191
+ expect(openrtbRequest.imp[0].video.skipafter).to.equal(4);
192
+ expect(openrtbRequest.imp[0].video.minbitrate).to.equal(500);
193
+ expect(openrtbRequest.imp[0].video.maxbitrate).to.equal(1000);
194
+ expect(openrtbRequest.imp[0].video.delivery).to.deep.equal([2]);
195
+ expect(openrtbRequest.imp[0].video.playbackmethod).to.deep.equal([1]);
196
+ expect(openrtbRequest.imp[0].video.playbackend).to.equal(2);
197
+ expect(openrtbRequest.imp[0].video.linearity).to.equal(1);
198
+
199
+ expect(openrtbRequest.imp[0].bidfloor).to.equal(10);
200
+ expect(openrtbRequest.imp[0].bidfloorcur).to.equal('EUR');
201
+
202
+ expect(openrtbRequest.imp[0].ext.prebid.bidder.jwplayer.placementId).to.equal('testPlacementId');
203
+
204
+ expect(openrtbRequest.site.domain).to.equal('page.example.com');
205
+ expect(openrtbRequest.site.page).to.equal('https://examplepage.com');
206
+ expect(openrtbRequest.site.ref).to.equal('https://example.com');
207
+
208
+ expect(openrtbRequest.site.publisher.ext.jwplayer.publisherId).to.equal('testPublisherId');
209
+ expect(openrtbRequest.site.publisher.ext.jwplayer.siteId).to.equal('testSiteId');
210
+
211
+ expect(openrtbRequest.site.content.url).to.equal('media.mp4');
212
+ expect(openrtbRequest.site.content.id).to.equal('testMediaId');
213
+ expect(openrtbRequest.site.content.title).to.equal('testTile');
214
+ expect(openrtbRequest.site.content.ext.description).to.equal('testDescription');
215
+ expect(openrtbRequest.site.content.data.length).to.equal(1);
216
+ const datum = openrtbRequest.site.content.data[0];
217
+ expect(datum.name).to.equal('jwplayer.com');
218
+ expect(datum.segment).to.deep.equal([{
219
+ id: '00000000'
220
+ }, {
221
+ id: '88888888'
222
+ }, {
223
+ id: '80808080'
224
+ }]);
225
+ expect(datum.ext.segtax).to.equal(502);
226
+ expect(datum.ext.cids).to.deep.equal(['testMediaId', 'externalTestId']);
227
+
228
+ expect(openrtbRequest.device.ua).to.equal(navigator.userAgent);
229
+ expect(openrtbRequest.device.w).to.not.be.undefined;
230
+ expect(openrtbRequest.device.h).to.not.be.undefined;
231
+ expect(openrtbRequest.device.dnt).to.not.be.undefined;
232
+ expect(openrtbRequest.device.js).to.equal(1);
233
+ expect(openrtbRequest.device.language).to.not.be.undefined;
234
+
235
+ expect(openrtbRequest.user.ext.consent).to.equal('testConsentString');
236
+
237
+ expect(openrtbRequest.regs.ext.gdpr).to.equal(1);
238
+ expect(openrtbRequest.regs.ext.us_privacy).to.equal('testCCPA');
239
+
240
+ expect(openrtbRequest.source.schain).to.deep.equal({
241
+ ver: '1.0',
242
+ complete: 1,
243
+ nodes: [
244
+ {
245
+ asi: 'publisher.com',
246
+ sid: '00001',
247
+ hp: 1
248
+ }
249
+ ]
250
+ });
251
+
252
+ expect(openrtbRequest.tmax).to.equal(1000);
253
+ });
254
+ });
255
+ });
256
+
257
+ describe('interpretResponse', function() {
258
+ const serverResponse = {
259
+ body: {
260
+ id: 'test-request-id',
261
+ cur: 'USD',
262
+ seatbid: [{
263
+ bid: [{
264
+ id: 'testId',
265
+ impid: 'test-imp-id',
266
+ price: 5.000,
267
+ adid: 'test-creative-id',
268
+ adm: 'test-ad-xml',
269
+ adomain: ['prebid.com'],
270
+ cat: ['test-iab-category'],
271
+ w: 200,
272
+ h: 150,
273
+ dealid: 'test-deal-id'
274
+ }],
275
+ seat: 1000
276
+ }]
277
+ }
278
+ };
279
+
280
+ const bidResponses = spec.interpretResponse(serverResponse);
281
+
282
+ expect(bidResponses).to.have.length(1);
283
+ const bid = bidResponses[0];
284
+ expect(bid.requestId).to.equal('test-request-id');
285
+ expect(bid.cpm).to.equal(5);
286
+ expect(bid.currency).to.equal('USD');
287
+ expect(bid.width).to.equal(200);
288
+ expect(bid.height).to.equal(150);
289
+ expect(bid.creativeId).to.equal('test-creative-id');
290
+ expect(bid.vastXml).to.equal('test-ad-xml');
291
+ expect(bid.netRevenue).to.equal(false);
292
+ expect(bid.ttl).to.equal(3600);
293
+ expect(bid.ad).to.equal('test-ad-xml');
294
+ expect(bid.dealId).to.equal('test-deal-id');
295
+
296
+ expect(bid.meta).to.not.be.undefined;
297
+
298
+ expect(bid.meta.advertiserDomains).to.have.length(1);
299
+ expect(bid.meta.advertiserDomains[0]).to.equal('prebid.com');
300
+
301
+ expect(bid.meta.mediaType).to.equal('video');
302
+
303
+ expect(bid.meta.primaryCatId).to.have.length(1);
304
+ expect(bid.meta.primaryCatId[0]).to.equal('test-iab-category');
305
+ });
306
+
307
+ describe('getUserSyncs', function() {
308
+ const consentString = 'test_consent_string';
309
+ const baseGdprConsent = {
310
+ gdprApplies: true,
311
+ vendorData: {
312
+ purpose: {
313
+ consents: {
314
+ 1: true
315
+ }
316
+ }
317
+ }
318
+ };
319
+
320
+ const expectedBaseUrl = 'https://ib.adnxs.com/getuid?https://vpb-server.jwplayer.com/setuid?bidder=jwplayer&uid=$UID&f=i';
321
+
322
+ it('should return empty when Purpose 1 consent is not granted', function() {
323
+ expect(spec.getUserSyncs({}, {})).to.be.empty;
324
+ expect(spec.getUserSyncs({}, {}, {})).to.be.empty;
325
+ expect(spec.getUserSyncs({}, {}, { gdprApplies: false })).to.be.empty;
326
+ expect(spec.getUserSyncs({}, {}, {
327
+ gdprApplies: true,
328
+ vendorData: {
329
+ purpose: {
330
+ consents: {
331
+ 1: false
332
+ }
333
+ }
334
+ }
335
+ })).to.be.empty;
336
+ });
337
+
338
+ it('should return iframe when enabled', function () {
339
+ const userSyncs = spec.getUserSyncs({ iframeEnabled: true }, {}, baseGdprConsent);
340
+ expect(userSyncs.length).to.equal(1);
341
+ const sync = userSyncs[0];
342
+ expect(sync.type).to.equal('iframe');
343
+ expect(sync.url).to.equal(expectedBaseUrl);
344
+ });
345
+
346
+ it('should return image when enabled', function () {
347
+ const userSyncs = spec.getUserSyncs({ pixelEnabled: true }, {}, baseGdprConsent);
348
+ expect(userSyncs.length).to.equal(1);
349
+ const sync = userSyncs[0];
350
+ expect(sync.type).to.equal('image');
351
+ expect(sync.url).to.equal(expectedBaseUrl);
352
+ });
353
+
354
+ it('should return both iframe and image when enabled', function () {
355
+ const userSyncs = spec.getUserSyncs({ iframeEnabled: true, pixelEnabled: true }, {}, baseGdprConsent);
356
+ expect(userSyncs.length).to.equal(2);
357
+
358
+ const iframeSync = userSyncs[0];
359
+ expect(iframeSync.type).to.equal('iframe');
360
+ expect(iframeSync.url).to.equal(expectedBaseUrl);
361
+
362
+ const imageSync = userSyncs[1];
363
+ expect(imageSync.type).to.equal('image');
364
+ expect(imageSync.url).to.equal(expectedBaseUrl);
365
+ });
366
+
367
+ it('should include gdpr consent query params in sync redirect url', function () {
368
+ const expectedUrl = expectedBaseUrl + '&gdpr=1&gdpr_consent=' + consentString;
369
+ const gdprConsent = Object.assign({ }, baseGdprConsent, { consentString });
370
+ const userSyncs = spec.getUserSyncs({ iframeEnabled: true, pixelEnabled: true }, {}, gdprConsent);
371
+ expect(userSyncs.length).to.equal(2);
372
+
373
+ const iframeSync = userSyncs[0];
374
+ expect(iframeSync.type).to.equal('iframe');
375
+ expect(iframeSync.url).to.equal(expectedUrl);
376
+
377
+ const imageSync = userSyncs[1];
378
+ expect(imageSync.type).to.equal('image');
379
+ expect(imageSync.url).to.equal(expectedUrl);
380
+ });
381
+
382
+ it('should include gdpr 0 in consent query params when gdprApplies is false', function () {
383
+ const expectedUrl = expectedBaseUrl + '&gdpr=0&gdpr_consent=' + consentString;
384
+ const gdprConsent = Object.assign({ }, baseGdprConsent, { consentString, gdprApplies: false });
385
+ const userSyncs = spec.getUserSyncs({ iframeEnabled: true, pixelEnabled: true }, {}, gdprConsent);
386
+ expect(userSyncs.length).to.equal(2);
387
+
388
+ const iframeSync = userSyncs[0];
389
+ expect(iframeSync.type).to.equal('iframe');
390
+ expect(iframeSync.url).to.equal(expectedUrl);
391
+
392
+ const imageSync = userSyncs[1];
393
+ expect(imageSync.type).to.equal('image');
394
+ expect(imageSync.url).to.equal(expectedUrl);
395
+ });
396
+
397
+ it('should include gdpr 0 in consent query params when gdprApplies is not a bool', function () {
398
+ const expectedUrl = expectedBaseUrl + '&gdpr=0&gdpr_consent=' + consentString;
399
+ const gdprConsent = Object.assign({ }, baseGdprConsent, { consentString, gdprApplies: 1 });
400
+ const userSyncs = spec.getUserSyncs({ iframeEnabled: true, pixelEnabled: true }, {}, gdprConsent);
401
+ expect(userSyncs.length).to.equal(2);
402
+
403
+ const iframeSync = userSyncs[0];
404
+ expect(iframeSync.type).to.equal('iframe');
405
+ expect(iframeSync.url).to.equal(expectedUrl);
406
+
407
+ const imageSync = userSyncs[1];
408
+ expect(imageSync.type).to.equal('image');
409
+ expect(imageSync.url).to.equal(expectedUrl);
410
+ });
411
+ });
412
+ });
@@ -1,8 +1,8 @@
1
1
  import kargoAnalyticsAdapter from 'modules/kargoAnalyticsAdapter.js';
2
2
  import { expect } from 'chai';
3
3
  import { server } from 'test/mocks/xhr.js';
4
+ import { EVENTS } from 'src/constants.js';
4
5
  let events = require('src/events');
5
- let constants = require('src/constants.json');
6
6
 
7
7
  describe('Kargo Analytics Adapter', function () {
8
8
  const adapterConfig = {
@@ -30,10 +30,10 @@ describe('Kargo Analytics Adapter', function () {
30
30
  timeToRespond: 192,
31
31
  };
32
32
 
33
- events.emit(constants.EVENTS.AUCTION_INIT, {
33
+ events.emit(EVENTS.AUCTION_INIT, {
34
34
  timeout: 1000
35
35
  });
36
- events.emit(constants.EVENTS.BID_RESPONSE, bidResponse);
36
+ events.emit(EVENTS.BID_RESPONSE, bidResponse);
37
37
 
38
38
  expect(server.requests.length).to.equal(1);
39
39
  expect(server.requests[0].url).to.equal('https://krk.kargo.com/api/v1/event/auction-data?aid=66529d4c-8998-47c2-ab3e-5b953490b98f&ato=1000&rt=192&it=0');
@@ -2,19 +2,19 @@ import konduitAnalyticsAdapter from 'modules/konduitAnalyticsAdapter';
2
2
  import { expect } from 'chai';
3
3
  import { config } from '../../../src/config.js';
4
4
  import { server } from 'test/mocks/xhr.js';
5
+ import { EVENTS } from 'src/constants.js';
5
6
  let events = require('src/events');
6
7
  let adapterManager = require('src/adapterManager').default;
7
- let CONSTANTS = require('src/constants.json');
8
8
 
9
9
  const eventsData = {
10
- [CONSTANTS.EVENTS.AUCTION_INIT]: {
10
+ [EVENTS.AUCTION_INIT]: {
11
11
  'auctionId': 'test_auction_id',
12
12
  'timestamp': Date.now(),
13
13
  'auctionStatus': 'inProgress',
14
14
  'adUnitCodes': ['video-test'],
15
15
  'timeout': 700
16
16
  },
17
- [CONSTANTS.EVENTS.BID_REQUESTED]: {
17
+ [EVENTS.BID_REQUESTED]: {
18
18
  'bidderCode': 'test_bidder_code',
19
19
  'time': Date.now(),
20
20
  'bids': [{
@@ -25,13 +25,13 @@ const eventsData = {
25
25
  'params': { 'testParam': 'test_param' }
26
26
  }]
27
27
  },
28
- [CONSTANTS.EVENTS.NO_BID]: {
28
+ [EVENTS.NO_BID]: {
29
29
  'bidderCode': 'test_bidder_code2',
30
30
  'transactionId': 'test_transaction_id',
31
31
  'adUnitCode': 'video-test',
32
32
  'bidId': 'test_bid_id'
33
33
  },
34
- [CONSTANTS.EVENTS.BID_RESPONSE]: {
34
+ [EVENTS.BID_RESPONSE]: {
35
35
  'bidderCode': 'test_bidder_code',
36
36
  'adUnitCode': 'video-test',
37
37
  'statusMessage': 'Bid available',
@@ -44,7 +44,7 @@ const eventsData = {
44
44
  'requestId': 'test_request_id',
45
45
  'creativeId': 144876543
46
46
  },
47
- [CONSTANTS.EVENTS.AUCTION_END]: {
47
+ [EVENTS.AUCTION_END]: {
48
48
  'auctionId': 'test_auction_id',
49
49
  'timestamp': Date.now(),
50
50
  'auctionEnd': Date.now() + 400,
@@ -52,7 +52,7 @@ const eventsData = {
52
52
  'adUnitCodes': ['video-test'],
53
53
  'timeout': 700
54
54
  },
55
- [CONSTANTS.EVENTS.BID_WON]: {
55
+ [EVENTS.BID_WON]: {
56
56
  'bidderCode': 'test_bidder_code',
57
57
  'adUnitCode': 'video-test',
58
58
  'statusMessage': 'Bid available',
@@ -99,12 +99,12 @@ describe(`Konduit Analytics Adapter`, () => {
99
99
  expect(konduitAnalyticsAdapter.context.aggregatedEvents).to.be.an('array');
100
100
 
101
101
  const eventTypes = [
102
- CONSTANTS.EVENTS.AUCTION_INIT,
103
- CONSTANTS.EVENTS.BID_REQUESTED,
104
- CONSTANTS.EVENTS.NO_BID,
105
- CONSTANTS.EVENTS.BID_RESPONSE,
106
- CONSTANTS.EVENTS.BID_WON,
107
- CONSTANTS.EVENTS.AUCTION_END,
102
+ EVENTS.AUCTION_INIT,
103
+ EVENTS.BID_REQUESTED,
104
+ EVENTS.NO_BID,
105
+ EVENTS.BID_RESPONSE,
106
+ EVENTS.BID_WON,
107
+ EVENTS.AUCTION_END,
108
108
  ];
109
109
  const args = eventTypes.map(eventType => eventsData[eventType]);
110
110
 
@@ -2,7 +2,7 @@ import { expect } from 'chai';
2
2
  import { spec } from 'modules/lemmaDigitalBidAdapter.js';
3
3
  import * as utils from 'src/utils.js';
4
4
  import { config } from 'src/config.js';
5
- const constants = require('src/constants.json');
5
+ const constants = require('src/constants.js');
6
6
 
7
7
  describe('lemmaDigitalBidAdapter', function () {
8
8
  let bidRequests;
@@ -3,6 +3,7 @@ import { expect } from 'chai';
3
3
  import { server } from 'test/mocks/xhr.js';
4
4
  import { auctionManager } from 'src/auctionManager.js';
5
5
  import {expectEvents} from '../../helpers/analytics.js';
6
+ import { EVENTS } from 'src/constants.js';
6
7
 
7
8
  let utils = require('src/utils');
8
9
  let refererDetection = require('src/refererDetection');
@@ -13,7 +14,6 @@ let clock;
13
14
  let now = new Date();
14
15
 
15
16
  let events = require('src/events');
16
- let constants = require('src/constants.json');
17
17
  let auctionId = '99abbc81-c1f1-41cd-8f25-f7149244c897'
18
18
 
19
19
  const configWithSamplingAll = {
@@ -286,7 +286,7 @@ describe('LiveIntent Analytics Adapter ', () => {
286
286
  sandbox.stub(utils, 'generateUUID').returns(instanceId);
287
287
  sandbox.stub(refererDetection, 'getRefererInfo').returns({page: url});
288
288
  sandbox.stub(auctionManager.index, 'getAuction').withArgs(auctionId).returns({ getWinningBids: () => winningBids });
289
- events.emit(constants.EVENTS.AUCTION_END, args);
289
+ events.emit(EVENTS.AUCTION_END, args);
290
290
  clock.tick(2000);
291
291
  expect(server.requests.length).to.equal(1);
292
292
 
@@ -305,7 +305,7 @@ describe('LiveIntent Analytics Adapter ', () => {
305
305
  sandbox.stub(utils, 'generateUUID').returns(instanceId);
306
306
  sandbox.stub(refererDetection, 'getRefererInfo').returns({page: url});
307
307
  sandbox.stub(auctionManager.index, 'getAuction').withArgs(auctionId).returns({ getWinningBids: () => winningBids });
308
- events.emit(constants.EVENTS.AUCTION_END, args);
308
+ events.emit(EVENTS.AUCTION_END, args);
309
309
  clock.tick(2000);
310
310
  expect(server.requests.length).to.equal(0);
311
311
  });
@@ -85,28 +85,26 @@ describe('LiveIntentId', function() {
85
85
  setTimeout(() => {
86
86
  expect(server.requests[0].url).to.match(/https:\/\/rp.liadm.com\/j\?.*&us_privacy=1YNY.*&wpn=prebid.*&gdpr=1&n3pc=1&n3pct=1&nb=1&gdpr_consent=consentDataString&gpp_s=gppConsentDataString&gpp_as=1.*/);
87
87
  done();
88
- }, 200);
88
+ }, 300);
89
89
  });
90
90
 
91
91
  it('should fire an event when getId and a hash is provided', function(done) {
92
92
  liveIntentIdSubmodule.getId({ params: {
93
- ...defaultConfigParams,
93
+ ...defaultConfigParams.params,
94
94
  emailHash: '58131bc547fb87af94cebdaf3102321f'
95
95
  }});
96
96
  setTimeout(() => {
97
97
  expect(server.requests[0].url).to.match(/https:\/\/rp.liadm.com\/j\?.*e=58131bc547fb87af94cebdaf3102321f.+/)
98
98
  done();
99
- }, 200);
99
+ }, 300);
100
100
  });
101
101
 
102
102
  it('should initialize LiveConnect and forward the prebid version when decode and emit an event', function(done) {
103
- liveIntentIdSubmodule.decode({}, { params: {
104
- ...defaultConfigParams
105
- }});
103
+ liveIntentIdSubmodule.decode({}, defaultConfigParams);
106
104
  setTimeout(() => {
107
105
  expect(server.requests[0].url).to.contain('tv=$prebid.version$')
108
106
  done();
109
- }, 200);
107
+ }, 300);
110
108
  });
111
109
 
112
110
  it('should initialize LiveConnect with the config params when decode and emit an event', function (done) {
@@ -123,7 +121,7 @@ describe('LiveIntentId', function() {
123
121
  setTimeout(() => {
124
122
  expect(server.requests[0].url).to.match(/https:\/\/collector.liveintent.com\/j\?.*aid=a-0001.*&wpn=prebid.*/);
125
123
  done();
126
- }, 200);
124
+ }, 300);
127
125
  });
128
126
 
129
127
  it('should fire an event with the provided distributorId', function (done) {
@@ -131,7 +129,7 @@ describe('LiveIntentId', function() {
131
129
  setTimeout(() => {
132
130
  expect(server.requests[0].url).to.match(/https:\/\/rp.liadm.com\/j\?.*did=did-1111.*&wpn=prebid.*/);
133
131
  done();
134
- }, 200);
132
+ }, 300);
135
133
  });
136
134
 
137
135
  it('should fire an event without the provided distributorId when appId is provided', function (done) {
@@ -140,7 +138,7 @@ describe('LiveIntentId', function() {
140
138
  expect(server.requests[0].url).to.match(/https:\/\/rp.liadm.com\/j\?.*aid=a-0001.*&wpn=prebid.*/);
141
139
  expect(server.requests[0].url).to.not.match(/.*did=*/);
142
140
  done();
143
- }, 200);
141
+ }, 300);
144
142
  });
145
143
 
146
144
  it('should initialize LiveConnect and emit an event with a privacy string when decode', function(done) {
@@ -157,7 +155,7 @@ describe('LiveIntentId', function() {
157
155
  setTimeout(() => {
158
156
  expect(server.requests[0].url).to.match(/.*us_privacy=1YNY.*&gdpr=0&gdpr_consent=consentDataString.*&gpp_s=gppConsentDataString&gpp_as=1.*/);
159
157
  done();
160
- }, 200);
158
+ }, 300);
161
159
  });
162
160
 
163
161
  it('should fire an event when decode and a hash is provided', function(done) {
@@ -168,11 +166,11 @@ describe('LiveIntentId', function() {
168
166
  setTimeout(() => {
169
167
  expect(server.requests[0].url).to.match(/https:\/\/rp.liadm.com\/j\?.*e=58131bc547fb87af94cebdaf3102321f.+/);
170
168
  done();
171
- }, 200);
169
+ }, 300);
172
170
  });
173
171
 
174
172
  it('should not return a decoded identifier when the unifiedId is not present in the value', function() {
175
- const result = liveIntentIdSubmodule.decode({ additionalData: 'data' });
173
+ const result = liveIntentIdSubmodule.decode({ fireEventDelay: 1, additionalData: 'data' });
176
174
  expect(result).to.be.eql({});
177
175
  });
178
176
 
@@ -181,7 +179,7 @@ describe('LiveIntentId', function() {
181
179
  setTimeout(() => {
182
180
  expect(server.requests[0].url).to.be.not.null
183
181
  done();
184
- }, 200);
182
+ }, 300);
185
183
  });
186
184
 
187
185
  it('should initialize LiveConnect and send data only once', function(done) {
@@ -192,7 +190,7 @@ describe('LiveIntentId', function() {
192
190
  setTimeout(() => {
193
191
  expect(server.requests.length).to.be.eq(1);
194
192
  done();
195
- }, 200);
193
+ }, 300);
196
194
  });
197
195
 
198
196
  it('should call the custom URL of the LiveIntent Identity Exchange endpoint', function() {