prebid.js 8.44.0 → 8.45.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 (472) 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/amxBidAdapter.js +1 -1
  33. package/dist/amxIdSystem.js +1 -1
  34. package/dist/analyticsAdapter.js +1 -1
  35. package/dist/appierAnalyticsAdapter.js +1 -1
  36. package/dist/appnexusBidAdapter.js +1 -1
  37. package/dist/asoBidAdapter.js +1 -1
  38. package/dist/asteriobidAnalyticsAdapter.js +1 -1
  39. package/dist/atsAnalyticsAdapter.js +1 -1
  40. package/dist/automatadAnalyticsAdapter.js +1 -1
  41. package/dist/axonixBidAdapter.js +1 -1
  42. package/dist/bidViewability.js +1 -1
  43. package/dist/bidViewabilityIO.js +1 -1
  44. package/dist/bidglassBidAdapter.js +1 -1
  45. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  46. package/dist/big-richmediaBidAdapter.js +1 -1
  47. package/dist/brandmetricsRtdProvider.js +1 -1
  48. package/dist/bridBidAdapter.js +1 -1
  49. package/dist/bridgewellBidAdapter.js +1 -1
  50. package/dist/brightMountainMediaBidAdapter.js +1 -1
  51. package/dist/browsiRtdProvider.js +1 -1
  52. package/dist/byDataAnalyticsAdapter.js +1 -1
  53. package/dist/carodaBidAdapter.js +1 -1
  54. package/dist/chtnwBidAdapter.js +1 -1
  55. package/dist/chunk-core.js +1 -1
  56. package/dist/chunk-paapi.js +1 -1
  57. package/dist/cleanioRtdProvider.js +1 -1
  58. package/dist/concertAnalyticsAdapter.js +1 -1
  59. package/dist/concertBidAdapter.js +1 -1
  60. package/dist/confiantRtdProvider.js +1 -1
  61. package/dist/connectadBidAdapter.js +1 -1
  62. package/dist/consentManagementUsp.js +1 -1
  63. package/dist/consumableBidAdapter.js +1 -1
  64. package/dist/conversantAnalyticsAdapter.js +1 -1
  65. package/dist/conversantBidAdapter.js +1 -1
  66. package/dist/craftBidAdapter.js +1 -1
  67. package/dist/creative-renderer-native.js +1 -1
  68. package/dist/criteoBidAdapter.js +1 -1
  69. package/dist/currency.js +1 -1
  70. package/dist/cwireBidAdapter.js +1 -1
  71. package/dist/dailymotionBidAdapter.js +1 -0
  72. package/dist/datablocksAnalyticsAdapter.js +1 -1
  73. package/dist/datawrkzBidAdapter.js +1 -1
  74. package/dist/debugging-standalone.js +1 -1
  75. package/dist/debugging.js +1 -1
  76. package/dist/dependencies.json +3 -3
  77. package/dist/dfpAdServerVideo.js +1 -1
  78. package/dist/dsaControl.js +1 -1
  79. package/dist/dspxBidAdapter.js +1 -1
  80. package/dist/dxkultureBidAdapter.js +1 -1
  81. package/dist/eplanningAnalyticsAdapter.js +1 -1
  82. package/dist/eplanningBidAdapter.js +1 -1
  83. package/dist/euidIdSystem.js +1 -1
  84. package/dist/feedadBidAdapter.js +1 -1
  85. package/dist/finativeBidAdapter.js +1 -1
  86. package/dist/fintezaAnalyticsAdapter.js +1 -1
  87. package/dist/freewheel-sspBidAdapter.js +1 -1
  88. package/dist/gdprEnforcement.js +1 -1
  89. package/dist/genericAnalyticsAdapter.js +1 -1
  90. package/dist/geoedgeRtdProvider.js +1 -1
  91. package/dist/gmosspBidAdapter.js +1 -1
  92. package/dist/goldbachBidAdapter.js +1 -1
  93. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  94. package/dist/greenbidsRtdProvider.js +1 -1
  95. package/dist/gridBidAdapter.js +1 -1
  96. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  97. package/dist/gumgumBidAdapter.js +1 -1
  98. package/dist/h12mediaBidAdapter.js +1 -1
  99. package/dist/hadronAnalyticsAdapter.js +1 -1
  100. package/dist/holidBidAdapter.js +1 -1
  101. package/dist/hypelabBidAdapter.js +1 -1
  102. package/dist/id5AnalyticsAdapter.js +1 -1
  103. package/dist/id5IdSystem.js +1 -1
  104. package/dist/illuminBidAdapter.js +1 -1
  105. package/dist/imdsBidAdapter.js +1 -1
  106. package/dist/improvedigitalBidAdapter.js +1 -1
  107. package/dist/insticatorBidAdapter.js +1 -1
  108. package/dist/instreamTracking.js +1 -1
  109. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  110. package/dist/ixBidAdapter.js +1 -1
  111. package/dist/jixieBidAdapter.js +1 -1
  112. package/dist/justpremiumBidAdapter.js +1 -1
  113. package/dist/kargoAnalyticsAdapter.js +1 -1
  114. package/dist/kargoBidAdapter.js +1 -1
  115. package/dist/kimberliteBidAdapter.js +1 -1
  116. package/dist/konduitAnalyticsAdapter.js +1 -1
  117. package/dist/kueezBidAdapter.js +1 -1
  118. package/dist/kueezRtbBidAdapter.js +1 -1
  119. package/dist/lassoBidAdapter.js +1 -1
  120. package/dist/lifestreetBidAdapter.js +1 -1
  121. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  122. package/dist/liveIntentIdSystem.js +1 -1
  123. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  124. package/dist/logicadBidAdapter.js +1 -1
  125. package/dist/loglyliftBidAdapter.js +1 -1
  126. package/dist/luceadBidAdapter.js +1 -1
  127. package/dist/magniteAnalyticsAdapter.js +1 -1
  128. package/dist/malltvAnalyticsAdapter.js +1 -1
  129. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  130. package/dist/marsmediaBidAdapter.js +1 -1
  131. package/dist/mediafilterRtdProvider.js +1 -1
  132. package/dist/mediafuseBidAdapter.js +1 -1
  133. package/dist/medianetAnalyticsAdapter.js +1 -1
  134. package/dist/medianetBidAdapter.js +1 -1
  135. package/dist/mediasquareBidAdapter.js +1 -1
  136. package/dist/mgidBidAdapter.js +1 -1
  137. package/dist/minutemediaBidAdapter.js +1 -1
  138. package/dist/minutemediaplusBidAdapter.js +1 -1
  139. package/dist/missenaBidAdapter.js +1 -1
  140. package/dist/multibid.js +1 -1
  141. package/dist/neuwoRtdProvider.js +1 -1
  142. package/dist/nextMillenniumBidAdapter.js +1 -1
  143. package/dist/nexx360BidAdapter.js +1 -1
  144. package/dist/nobidAnalyticsAdapter.js +1 -1
  145. package/dist/not-for-prod/prebid.js +237 -235
  146. package/dist/oguryBidAdapter.js +1 -1
  147. package/dist/onetagBidAdapter.js +1 -1
  148. package/dist/ooloAnalyticsAdapter.js +1 -1
  149. package/dist/openwebBidAdapter.js +1 -1
  150. package/dist/openxBidAdapter.js +1 -1
  151. package/dist/optidigitalBidAdapter.js +1 -1
  152. package/dist/optimonAnalyticsAdapter.js +1 -1
  153. package/dist/outbrainBidAdapter.js +1 -1
  154. package/dist/oxxionAnalyticsAdapter.js +1 -1
  155. package/dist/oxxionRtdProvider.js +1 -1
  156. package/dist/parrableIdSystem.js +1 -1
  157. package/dist/pbsExtensions.js +1 -1
  158. package/dist/permutiveRtdProvider.js +1 -1
  159. package/dist/pgamsspBidAdapter.js +1 -1
  160. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  161. package/dist/pirIdSystem.js +1 -0
  162. package/dist/pixfutureBidAdapter.js +1 -1
  163. package/dist/prebidServerBidAdapter.js +1 -1
  164. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  165. package/dist/priceFloors.js +1 -1
  166. package/dist/publinkIdSystem.js +1 -1
  167. package/dist/publirBidAdapter.js +1 -1
  168. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  169. package/dist/pubmaticBidAdapter.js +1 -1
  170. package/dist/pubperfAnalyticsAdapter.js +1 -1
  171. package/dist/pubstackAnalyticsAdapter.js +1 -1
  172. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  173. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  174. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  175. package/dist/pxyzBidAdapter.js +1 -1
  176. package/dist/qortexRtdProvider.js +1 -1
  177. package/dist/quantcastBidAdapter.js +1 -1
  178. package/dist/readpeakBidAdapter.js +1 -1
  179. package/dist/relaidoBidAdapter.js +1 -1
  180. package/dist/relevantAnalyticsAdapter.js +1 -1
  181. package/dist/retailspotBidAdapter.js +1 -1
  182. package/dist/rhythmoneBidAdapter.js +1 -1
  183. package/dist/riseBidAdapter.js +1 -1
  184. package/dist/rivrAnalyticsAdapter.js +1 -1
  185. package/dist/roxotAnalyticsAdapter.js +1 -1
  186. package/dist/rtdModule.js +1 -1
  187. package/dist/rubiconBidAdapter.js +1 -1
  188. package/dist/s2sTesting.js +1 -1
  189. package/dist/scaleableAnalyticsAdapter.js +1 -1
  190. package/dist/schain.js +1 -1
  191. package/dist/seedingAllianceBidAdapter.js +1 -1
  192. package/dist/seedtagBidAdapter.js +1 -1
  193. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  194. package/dist/sharethroughBidAdapter.js +1 -1
  195. package/dist/shinezBidAdapter.js +1 -1
  196. package/dist/shinezRtbBidAdapter.js +1 -1
  197. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  198. package/dist/sizeMapping.js +1 -1
  199. package/dist/smaatoBidAdapter.js +1 -1
  200. package/dist/smartadserverBidAdapter.js +1 -1
  201. package/dist/smartxBidAdapter.js +1 -1
  202. package/dist/smilewantedBidAdapter.js +1 -1
  203. package/dist/sonobiAnalyticsAdapter.js +1 -1
  204. package/dist/sonobiBidAdapter.js +1 -1
  205. package/dist/sovrnAnalyticsAdapter.js +1 -1
  206. package/dist/sovrnBidAdapter.js +1 -1
  207. package/dist/sspBCBidAdapter.js +1 -1
  208. package/dist/staqAnalyticsAdapter.js +1 -1
  209. package/dist/stnBidAdapter.js +1 -1
  210. package/dist/stvBidAdapter.js +1 -1
  211. package/dist/sublimeBidAdapter.js +1 -1
  212. package/dist/taboolaBidAdapter.js +1 -1
  213. package/dist/tagorasBidAdapter.js +1 -1
  214. package/dist/targetVideoBidAdapter.js +1 -1
  215. package/dist/teadsBidAdapter.js +1 -1
  216. package/dist/terceptAnalyticsAdapter.js +1 -1
  217. package/dist/themoneytizerBidAdapter.js +1 -1
  218. package/dist/topicsFpdModule.js +1 -1
  219. package/dist/trionBidAdapter.js +1 -1
  220. package/dist/tripleliftBidAdapter.js +1 -1
  221. package/dist/ttdBidAdapter.js +1 -1
  222. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  223. package/dist/uid2IdSystem.js +1 -1
  224. package/dist/underdogmediaBidAdapter.js +1 -1
  225. package/dist/undertoneBidAdapter.js +1 -1
  226. package/dist/unrulyBidAdapter.js +1 -1
  227. package/dist/userId.js +1 -1
  228. package/dist/vidazooBidAdapter.js +1 -1
  229. package/dist/videoModule.js +1 -1
  230. package/dist/videobyteBidAdapter.js +1 -1
  231. package/dist/visxBidAdapter.js +1 -1
  232. package/dist/vuukleBidAdapter.js +1 -1
  233. package/dist/weboramaRtdProvider.js +1 -1
  234. package/dist/widespaceBidAdapter.js +1 -1
  235. package/dist/winrBidAdapter.js +1 -1
  236. package/dist/yahoosspBidAdapter.js +1 -1
  237. package/dist/yandexAnalyticsAdapter.js +1 -1
  238. package/dist/yieldmoBidAdapter.js +1 -1
  239. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  240. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  241. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  242. package/dist/zeta_global_sspBidAdapter.js +1 -1
  243. package/gulpfile.js +9 -1
  244. package/integrationExamples/gpt/adnuntius_example.html +7 -1
  245. package/integrationExamples/gpt/azerionedgeRtdProvider_example.html +3 -3
  246. package/integrationExamples/gpt/top-level-paapi/decisionLogic.js +57 -0
  247. package/integrationExamples/gpt/top-level-paapi/tl_paapi_example.html +188 -0
  248. package/integrationExamples/gpt/x-domain/creative.html +1 -1
  249. package/libraries/analyticsAdapter/AnalyticsAdapter.js +4 -4
  250. package/libraries/creative-renderer-native/renderer.js +1 -1
  251. package/modules/33acrossAnalyticsAdapter.js +2 -4
  252. package/modules/33acrossIdSystem.js +1 -1
  253. package/modules/adWMGAnalyticsAdapter.js +9 -11
  254. package/modules/adagioAnalyticsAdapter.js +8 -8
  255. package/modules/adkernelAdnAnalyticsAdapter.js +8 -8
  256. package/modules/adkernelBidAdapter.js +9 -3
  257. package/modules/adlooxAdServerVideo.js +2 -2
  258. package/modules/adlooxAnalyticsAdapter.js +4 -4
  259. package/modules/adnuntiusBidAdapter.js +49 -31
  260. package/modules/adomikAnalyticsAdapter.js +7 -7
  261. package/modules/adpod.js +3 -3
  262. package/modules/adxcgAnalyticsAdapter.js +10 -10
  263. package/modules/adxpremiumAnalyticsAdapter.js +8 -10
  264. package/modules/agmaAnalyticsAdapter.js +2 -6
  265. package/modules/appierAnalyticsAdapter.js +5 -7
  266. package/modules/asteriobidAnalyticsAdapter.js +14 -14
  267. package/modules/atsAnalyticsAdapter.js +4 -4
  268. package/modules/automatadAnalyticsAdapter.js +20 -20
  269. package/modules/azerionedgeRtdProvider.md +4 -2
  270. package/modules/bidViewability.js +3 -3
  271. package/modules/bidViewabilityIO.js +3 -3
  272. package/modules/bidwatchAnalyticsAdapter.js +7 -9
  273. package/modules/brandmetricsRtdProvider.js +6 -6
  274. package/modules/browsiRtdProvider.js +3 -3
  275. package/modules/byDataAnalyticsAdapter.js +3 -3
  276. package/modules/cleanioRtdProvider.js +3 -3
  277. package/modules/concertAnalyticsAdapter.js +5 -7
  278. package/modules/confiantRtdProvider.js +2 -2
  279. package/modules/conversantAnalyticsAdapter.js +2 -4
  280. package/modules/criteoBidAdapter.js +51 -8
  281. package/modules/currency.js +7 -7
  282. package/modules/dailymotionBidAdapter.js +139 -0
  283. package/modules/dailymotionBidAdapter.md +140 -0
  284. package/modules/datawrkzBidAdapter.js +4 -4
  285. package/modules/debugging/pbsInterceptor.js +2 -2
  286. package/modules/dfpAdServerVideo.js +2 -2
  287. package/modules/dsaControl.js +5 -5
  288. package/modules/eplanningAnalyticsAdapter.js +8 -8
  289. package/modules/fintezaAnalyticsAdapter.js +5 -5
  290. package/modules/gdprEnforcement.js +3 -3
  291. package/modules/geoedgeRtdProvider.js +2 -2
  292. package/modules/greenbidsAnalyticsAdapter.js +13 -10
  293. package/modules/greenbidsRtdProvider.js +2 -2
  294. package/modules/growthCodeAnalyticsAdapter.js +14 -14
  295. package/modules/hadronAnalyticsAdapter.js +14 -14
  296. package/modules/holidBidAdapter.js +2 -2
  297. package/modules/id5AnalyticsAdapter.js +7 -9
  298. package/modules/improvedigitalBidAdapter.js +2 -1
  299. package/modules/insticatorBidAdapter.js +137 -27
  300. package/modules/instreamTracking.js +4 -4
  301. package/modules/invisiblyAnalyticsAdapter.js +15 -17
  302. package/modules/ixBidAdapter.js +3 -3
  303. package/modules/kargoAnalyticsAdapter.js +3 -3
  304. package/modules/kargoBidAdapter.js +5 -11
  305. package/modules/konduitAnalyticsAdapter.js +13 -13
  306. package/modules/liveIntentAnalyticsAdapter.js +2 -2
  307. package/modules/livewrappedAnalyticsAdapter.js +10 -10
  308. package/modules/magniteAnalyticsAdapter.js +25 -23
  309. package/modules/malltvAnalyticsAdapter.js +4 -6
  310. package/modules/mediafilterRtdProvider.js +2 -2
  311. package/modules/medianetAnalyticsAdapter.js +12 -12
  312. package/modules/medianetBidAdapter.js +1 -1
  313. package/modules/multibid/index.js +2 -2
  314. package/modules/neuwoRtdProvider.js +2 -2
  315. package/modules/nextMillenniumBidAdapter.js +4 -4
  316. package/modules/nobidAnalyticsAdapter.js +9 -11
  317. package/modules/ooloAnalyticsAdapter.js +2 -2
  318. package/modules/oxxionAnalyticsAdapter.js +7 -9
  319. package/modules/paapi.js +20 -6
  320. package/modules/permutiveRtdProvider.js +21 -2
  321. package/modules/pgamsspBidAdapter.js +26 -3
  322. package/modules/pirIdSystem.js +62 -0
  323. package/modules/pirIdSystem.md +27 -0
  324. package/modules/prebidServerBidAdapter/index.js +8 -8
  325. package/modules/prebidServerBidAdapter/ortbConverter.js +3 -3
  326. package/modules/prebidmanagerAnalyticsAdapter.js +14 -14
  327. package/modules/priceFloors.js +10 -5
  328. package/modules/pubmaticAnalyticsAdapter.js +32 -22
  329. package/modules/pubmaticBidAdapter.js +1 -17
  330. package/modules/pubwiseAnalyticsAdapter.js +11 -11
  331. package/modules/pubxaiAnalyticsAdapter.js +6 -6
  332. package/modules/qortexRtdProvider.js +2 -2
  333. package/modules/roxotAnalyticsAdapter.js +8 -10
  334. package/modules/rtdModule/index.js +7 -7
  335. package/modules/scaleableAnalyticsAdapter.js +5 -5
  336. package/modules/seedtagBidAdapter.js +12 -3
  337. package/modules/sigmoidAnalyticsAdapter.js +7 -7
  338. package/modules/smaatoBidAdapter.js +1 -2
  339. package/modules/sonobiAnalyticsAdapter.js +10 -12
  340. package/modules/sovrnAnalyticsAdapter.js +7 -9
  341. package/modules/sovrnBidAdapter.js +1 -1
  342. package/modules/staqAnalyticsAdapter.js +9 -9
  343. package/modules/terceptAnalyticsAdapter.js +7 -7
  344. package/modules/topicsFpdModule.js +3 -0
  345. package/modules/topicsFpdModule.md +4 -0
  346. package/modules/ucfunnelAnalyticsAdapter.js +5 -7
  347. package/modules/userId/index.js +3 -3
  348. package/modules/videoModule/index.js +4 -4
  349. package/modules/yandexAnalyticsAdapter.js +2 -2
  350. package/modules/yieldoneAnalyticsAdapter.js +7 -7
  351. package/modules/yuktamediaAnalyticsAdapter.js +9 -9
  352. package/modules/zeta_global_sspAnalyticsAdapter.js +5 -5
  353. package/modules/zeta_global_sspBidAdapter.js +8 -1
  354. package/package.json +1 -1
  355. package/src/adRendering.js +15 -15
  356. package/src/adUnits.js +9 -21
  357. package/src/adapterManager.js +23 -13
  358. package/src/adapters/bidderFactory.js +8 -8
  359. package/src/auction.js +26 -28
  360. package/src/auctionManager.js +4 -4
  361. package/src/bidderSettings.js +2 -2
  362. package/src/config.js +2 -2
  363. package/src/constants.js +190 -0
  364. package/src/events.js +3 -3
  365. package/src/native.js +6 -8
  366. package/src/prebid.js +6 -10
  367. package/src/secureCreatives.js +5 -5
  368. package/src/targeting.js +13 -13
  369. package/src/utils.js +4 -4
  370. package/test/fixtures/fixtures.js +44 -44
  371. package/test/helpers/analytics.js +6 -6
  372. package/test/spec/AnalyticsAdapter_spec.js +3 -3
  373. package/test/spec/auctionmanager_spec.js +82 -82
  374. package/test/spec/modules/33acrossAnalyticsAdapter_spec.js +1 -2
  375. package/test/spec/modules/33acrossIdSystem_spec.js +3 -3
  376. package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +14 -14
  377. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +26 -26
  378. package/test/spec/modules/adkernelAdnAnalytics_spec.js +6 -6
  379. package/test/spec/modules/adkernelBidAdapter_spec.js +9 -4
  380. package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
  381. package/test/spec/modules/adnuntiusBidAdapter_spec.js +8 -5
  382. package/test/spec/modules/adomikAnalyticsAdapter_spec.js +7 -7
  383. package/test/spec/modules/adxcgAnalyticsAdapter_spec.js +7 -7
  384. package/test/spec/modules/adxpremiumAnalyticsAdapter_spec.js +7 -7
  385. package/test/spec/modules/agmaAnalyticsAdapter_spec.js +14 -14
  386. package/test/spec/modules/appierAnalyticsAdapter_spec.js +1 -1
  387. package/test/spec/modules/asteriobidAnalyticsAdapter_spec.js +2 -2
  388. package/test/spec/modules/atsAnalyticsAdapter_spec.js +8 -8
  389. package/test/spec/modules/automatadAnalyticsAdapter_spec.js +2 -2
  390. package/test/spec/modules/bidViewabilityIO_spec.js +2 -2
  391. package/test/spec/modules/bidViewability_spec.js +4 -4
  392. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +7 -6
  393. package/test/spec/modules/byDataAnalyticsAdapter_spec.js +5 -4
  394. package/test/spec/modules/cleanioRtdProvider_spec.js +6 -6
  395. package/test/spec/modules/concertAnalyticsAdapter_spec.js +7 -6
  396. package/test/spec/modules/confiantRtdProvider_spec.js +2 -2
  397. package/test/spec/modules/conversantAnalyticsAdapter_spec.js +61 -61
  398. package/test/spec/modules/criteoBidAdapter_spec.js +111 -5
  399. package/test/spec/modules/currency_spec.js +6 -6
  400. package/test/spec/modules/dailymotionBidAdapter_spec.js +369 -0
  401. package/test/spec/modules/dsaControl_spec.js +4 -4
  402. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +20 -13
  403. package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +5 -5
  404. package/test/spec/modules/genericAnalyticsAdapter_spec.js +2 -2
  405. package/test/spec/modules/geoedgeRtdProvider_spec.js +37 -37
  406. package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +15 -2
  407. package/test/spec/modules/greenbidsRtdProvider_spec.js +2 -2
  408. package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +2 -2
  409. package/test/spec/modules/hadronAnalyticsAdapter_spec.js +3 -3
  410. package/test/spec/modules/id5AnalyticsAdapter_spec.js +5 -5
  411. package/test/spec/modules/id5IdSystem_spec.js +2 -2
  412. package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -3
  413. package/test/spec/modules/insticatorBidAdapter_spec.js +275 -22
  414. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +40 -40
  415. package/test/spec/modules/kargoAnalyticsAdapter_spec.js +3 -3
  416. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +13 -13
  417. package/test/spec/modules/lemmaDigitalBidAdapter_spec.js +1 -1
  418. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -3
  419. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +15 -20
  420. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +31 -15
  421. package/test/spec/modules/malltvAnalyticsAdapter_spec.js +3 -3
  422. package/test/spec/modules/mediafilterRtdProvider_spec.js +2 -2
  423. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +3 -3
  424. package/test/spec/modules/nobidAnalyticsAdapter_spec.js +23 -23
  425. package/test/spec/modules/ooloAnalyticsAdapter_spec.js +33 -33
  426. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +0 -1
  427. package/test/spec/modules/oxxionAnalyticsAdapter_spec.js +7 -7
  428. package/test/spec/modules/paapi_spec.js +40 -14
  429. package/test/spec/modules/permutiveRtdProvider_spec.js +29 -1
  430. package/test/spec/modules/pgamsspBidAdapter_spec.js +50 -4
  431. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +9 -9
  432. package/test/spec/modules/pirIdSystem_spec.js +77 -0
  433. package/test/spec/modules/prebidServerBidAdapter_spec.js +7 -7
  434. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +2 -2
  435. package/test/spec/modules/priceFloors_spec.js +6 -5
  436. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +12 -14
  437. package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
  438. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +0 -1
  439. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +14 -14
  440. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +7 -7
  441. package/test/spec/modules/qortexRtdProvider_spec.js +2 -2
  442. package/test/spec/modules/realTimeDataModule_spec.js +9 -9
  443. package/test/spec/modules/relevantAnalyticsAdapter_spec.js +3 -3
  444. package/test/spec/modules/relevantdigitalBidAdapter_spec.js +2 -2
  445. package/test/spec/modules/rivrAnalyticsAdapter_spec.js +4 -4
  446. package/test/spec/modules/roxotAnalyticsAdapter_spec.js +25 -25
  447. package/test/spec/modules/scaleableAnalyticsAdapter_spec.js +5 -5
  448. package/test/spec/modules/seedtagBidAdapter_spec.js +56 -3
  449. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +0 -1
  450. package/test/spec/modules/sonobiAnalyticsAdapter_spec.js +8 -7
  451. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +2 -2
  452. package/test/spec/modules/sovrnBidAdapter_spec.js +5 -5
  453. package/test/spec/modules/staqAnalyticsAdapter_spec.js +7 -7
  454. package/test/spec/modules/terceptAnalyticsAdapter_spec.js +7 -7
  455. package/test/spec/modules/trionBidAdapter_spec.js +1 -1
  456. package/test/spec/modules/ucfunnelAnalyticsAdapter_spec.js +1 -1
  457. package/test/spec/modules/userId_spec.js +4 -4
  458. package/test/spec/modules/videoModule/pbVideo_spec.js +3 -3
  459. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +22 -21
  460. package/test/spec/modules/yuktamediaAnalyticsAdapter_spec.js +33 -32
  461. package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +8 -8
  462. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +1 -1
  463. package/test/spec/native_spec.js +19 -19
  464. package/test/spec/unit/adRendering_spec.js +14 -14
  465. package/test/spec/unit/adUnits_spec.js +1 -1
  466. package/test/spec/unit/core/adapterManager_spec.js +99 -59
  467. package/test/spec/unit/core/bidderFactory_spec.js +6 -6
  468. package/test/spec/unit/core/targeting_spec.js +47 -47
  469. package/test/spec/unit/pbjs_api_spec.js +81 -81
  470. package/test/spec/unit/secureCreatives_spec.js +27 -27
  471. package/test/spec/utils_spec.js +2 -2
  472. package/src/constants.json +0 -196
@@ -391,7 +391,8 @@ const ID_RAZR = {
391
391
 
392
392
  const cfgStr = JSON.stringify(cfg).replace(/<\/script>/ig, '\\x3C/script>');
393
393
  const s = `<script>window.__razr_config = ${cfgStr};</script>`;
394
- bid.ad = bid.ad.replace(/<body[^>]*>/, match => match + s);
394
+ // prepend RAZR config to ad markup:
395
+ bid.ad = s + bid.ad;
395
396
 
396
397
  this.installListener();
397
398
  },
@@ -1,7 +1,7 @@
1
1
  import {config} from '../src/config.js';
2
2
  import {BANNER, VIDEO} from '../src/mediaTypes.js';
3
3
  import {registerBidder} from '../src/adapters/bidderFactory.js';
4
- import {deepAccess, generateUUID, logError, isArray, isInteger, isArrayOfNums} from '../src/utils.js';
4
+ import {deepAccess, generateUUID, logError, isArray, isInteger, isArrayOfNums, deepSetValue} from '../src/utils.js';
5
5
  import {getStorageManager} from '../src/storageManager.js';
6
6
  import {find} from '../src/polyfill.js';
7
7
 
@@ -12,35 +12,37 @@ const USER_ID_COOKIE_EXP = 2592000000; // 30 days
12
12
  const BID_TTL = 300; // 5 minutes
13
13
  const GVLID = 910;
14
14
 
15
- const isSubarray = (arr, target) => {
16
- if (!isArrayOfNums(arr) || arr.length === 0) {
17
- return false;
18
- }
19
- const targetSet = new Set(target);
20
- return arr.every(el => targetSet.has(el));
21
- };
22
-
23
15
  export const OPTIONAL_VIDEO_PARAMS = {
24
16
  'minduration': (value) => isInteger(value),
25
17
  'maxduration': (value) => isInteger(value),
26
- 'protocols': (value) => isSubarray(value, [2, 3, 5, 6, 7, 8]), // protocols values supported by Inticator, according to the OpenRTB spec
18
+ 'protocols': (value) => isArrayOfNums(value), // protocols values supported by Inticator, according to the OpenRTB spec
27
19
  'startdelay': (value) => isInteger(value),
28
20
  'linearity': (value) => isInteger(value) && [1].includes(value),
29
21
  'skip': (value) => isInteger(value) && [1, 0].includes(value),
30
22
  'skipmin': (value) => isInteger(value),
31
23
  'skipafter': (value) => isInteger(value),
32
24
  'sequence': (value) => isInteger(value),
33
- 'battr': (value) => isSubarray(value, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]),
25
+ 'battr': (value) => isArrayOfNums(value),
34
26
  'maxextended': (value) => isInteger(value),
35
27
  'minbitrate': (value) => isInteger(value),
36
28
  'maxbitrate': (value) => isInteger(value),
37
- 'playbackmethod': (value) => isSubarray(value, [1, 2, 3, 4]),
29
+ 'playbackmethod': (value) => isArrayOfNums(value),
38
30
  'playbackend': (value) => isInteger(value) && [1, 2, 3].includes(value),
39
- 'delivery': (value) => isSubarray(value, [1, 2, 3]),
31
+ 'delivery': (value) => isArrayOfNums(value),
40
32
  'pos': (value) => isInteger(value) && [0, 1, 2, 3, 4, 5, 6, 7].includes(value),
41
- 'api': (value) => isSubarray(value, [1, 2, 3, 4, 5, 6, 7]),
33
+ 'api': (value) => isArrayOfNums(value),
42
34
  };
43
35
 
36
+ const ORTB_SITE_FIRST_PARTY_DATA = {
37
+ 'cat': v => Array.isArray(v) && v.every(c => typeof c === 'string'),
38
+ 'sectioncat': v => Array.isArray(v) && v.every(c => typeof c === 'string'),
39
+ 'pagecat': v => Array.isArray(v) && v.every(c => typeof c === 'string'),
40
+ 'search': v => typeof v === 'string',
41
+ 'mobile': v => isInteger(),
42
+ 'content': v => typeof v === 'object',
43
+ 'keywords': v => typeof v === 'string',
44
+ }
45
+
44
46
  export const storage = getStorageManager({bidderCode: BIDDER_CODE});
45
47
 
46
48
  config.setDefaults({
@@ -103,6 +105,7 @@ function buildVideo(bidRequest) {
103
105
  const placement = deepAccess(bidRequest, 'mediaTypes.video.placement') || 3;
104
106
  const plcmt = deepAccess(bidRequest, 'mediaTypes.video.plcmt') || undefined;
105
107
  const playerSize = deepAccess(bidRequest, 'mediaTypes.video.playerSize');
108
+ const context = deepAccess(bidRequest, 'mediaTypes.video.context');
106
109
 
107
110
  if (!w && playerSize) {
108
111
  if (Array.isArray(playerSize[0])) {
@@ -121,17 +124,26 @@ function buildVideo(bidRequest) {
121
124
 
122
125
  const bidRequestVideo = deepAccess(bidRequest, 'mediaTypes.video');
123
126
  const videoBidderParams = deepAccess(bidRequest, 'params.video', {});
127
+
124
128
  let optionalParams = {};
125
129
  for (const param in OPTIONAL_VIDEO_PARAMS) {
126
- if (bidRequestVideo[param]) {
130
+ if (bidRequestVideo[param] && OPTIONAL_VIDEO_PARAMS[param](bidRequestVideo[param])) {
127
131
  optionalParams[param] = bidRequestVideo[param];
128
132
  }
133
+ // remove invalid optional params from bidder specific overrides
134
+ if (videoBidderParams[param] && !OPTIONAL_VIDEO_PARAMS[param](videoBidderParams[param])) {
135
+ delete videoBidderParams[param];
136
+ }
129
137
  }
130
138
 
131
139
  if (plcmt) {
132
140
  optionalParams['plcmt'] = plcmt;
133
141
  }
134
142
 
143
+ if (context !== undefined) {
144
+ optionalParams['context'] = context;
145
+ }
146
+
135
147
  let videoObj = {
136
148
  placement,
137
149
  mimes,
@@ -190,31 +202,102 @@ function buildDevice(bidRequest) {
190
202
  return device;
191
203
  }
192
204
 
205
+ function _getCoppa(bidderRequest) {
206
+ const coppa = deepAccess(bidderRequest, 'ortb2.regs.coppa');
207
+
208
+ // If coppa is defined in the request, use it
209
+ if (coppa !== undefined) {
210
+ return coppa;
211
+ }
212
+ return config.getConfig('coppa') === true ? 1 : 0;
213
+ }
214
+
215
+ function _getGppConsent(bidderRequest) {
216
+ let gpp = deepAccess(bidderRequest, 'gppConsent.gppString')
217
+ let gppSid = deepAccess(bidderRequest, 'gppConsent.applicableSections')
218
+
219
+ if (!gpp || !gppSid) {
220
+ gpp = deepAccess(bidderRequest, 'ortb2.regs.gpp', '')
221
+ gppSid = deepAccess(bidderRequest, 'ortb2.regs.gpp_sid', [])
222
+ }
223
+ return { gpp, gppSid }
224
+ }
225
+
226
+ function _getUspConsent(bidderRequest) {
227
+ return (deepAccess(bidderRequest, 'uspConsent')) ? { uspConsent: bidderRequest.uspConsent } : false;
228
+ }
229
+
193
230
  function buildRegs(bidderRequest) {
231
+ let regs = {
232
+ ext: {},
233
+ };
194
234
  if (bidderRequest.gdprConsent) {
195
- return {
196
- ext: {
197
- gdpr: bidderRequest.gdprConsent.gdprApplies ? 1 : 0,
198
- gdprConsentString: bidderRequest.gdprConsent.consentString,
199
- },
200
- };
235
+ regs.ext.gdpr = bidderRequest.gdprConsent.gdprApplies ? 1 : 0;
236
+ regs.ext.gdprConsentString = bidderRequest.gdprConsent.consentString;
237
+ }
238
+
239
+ regs.coppa = _getCoppa(bidderRequest);
240
+
241
+ const { gpp, gppSid } = _getGppConsent(bidderRequest);
242
+
243
+ if (gpp) {
244
+ regs.ext.gpp = gpp;
245
+ }
246
+
247
+ if (gppSid) {
248
+ regs.ext.gppSid = gppSid;
249
+ }
250
+
251
+ const usp = _getUspConsent(bidderRequest);
252
+
253
+ if (usp) {
254
+ regs.ext.us_privacy = usp.uspConsent;
255
+ regs.ext.ccpa = usp.uspConsent
256
+ }
257
+
258
+ const dsa = deepAccess(bidderRequest, 'ortb2.regs.ext.dsa');
259
+ if (dsa) {
260
+ regs.ext.dsa = dsa;
201
261
  }
202
262
 
203
- return {};
263
+ return regs;
204
264
  }
205
265
 
206
266
  function buildUser(bid) {
207
267
  const userId = getUserId() || generateUUID();
208
268
  const yob = deepAccess(bid, 'params.user.yob')
209
269
  const gender = deepAccess(bid, 'params.user.gender')
270
+ const keywords = deepAccess(bid, 'params.user.keywords')
271
+ const data = deepAccess(bid, 'params.user.data')
272
+ const ext = deepAccess(bid, 'params.user.ext')
210
273
 
211
274
  setUserId(userId);
212
275
 
213
- return {
276
+ const userData = {
214
277
  id: userId,
215
- yob,
216
- gender,
217
- };
278
+ }
279
+
280
+ if (yob) {
281
+ userData.yob = yob;
282
+ }
283
+
284
+ if (gender) {
285
+ userData.gender = gender;
286
+ }
287
+
288
+ if (keywords) {
289
+ userData.keywords = keywords;
290
+ }
291
+
292
+ if (data) {
293
+ userData.data = data;
294
+ }
295
+
296
+ if (ext) {
297
+ userData.ext = ext;
298
+ }
299
+
300
+ return userData
218
301
  }
219
302
 
220
303
  function extractSchain(bids, requestId) {
@@ -283,6 +366,20 @@ function buildRequest(validBidRequests, bidderRequest) {
283
366
  req.user.ext = { eids };
284
367
  }
285
368
 
369
+ const ortb2SiteData = deepAccess(bidderRequest, 'ortb2.site');
370
+ if (ortb2SiteData) {
371
+ for (const key in ORTB_SITE_FIRST_PARTY_DATA) {
372
+ const value = ortb2SiteData[key];
373
+ if (value && ORTB_SITE_FIRST_PARTY_DATA[key](value)) {
374
+ req.site[key] = value;
375
+ }
376
+ }
377
+ }
378
+
379
+ if (bidderRequest.gdprConsent) {
380
+ deepSetValue(req, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
381
+ }
382
+
286
383
  return req;
287
384
  }
288
385
 
@@ -326,6 +423,13 @@ function buildBid(bid, bidderRequest) {
326
423
  bidResponse.vastUrl = 'data:text/xml;charset=utf-8;base64,' + window.btoa(bidResponse.vastXml.replace(/\\"/g, '"'));
327
424
  }
328
425
 
426
+ if (bid.ext && bid.ext.dsa) {
427
+ bidResponse.ext = {
428
+ ...bidResponse.ext,
429
+ dsa: bid.ext.dsa,
430
+ }
431
+ }
432
+
329
433
  return bidResponse;
330
434
  }
331
435
 
@@ -453,7 +557,6 @@ function validateVideo(bid) {
453
557
  if (video[param]) {
454
558
  if (!OPTIONAL_VIDEO_PARAMS[param](video[param])) {
455
559
  logError(`insticator: video ${param} is invalid or not supported by insticator`);
456
- return false
457
560
  }
458
561
  }
459
562
  }
@@ -485,6 +588,13 @@ export const spec = {
485
588
  let endpointUrl = config.getConfig('insticator.endpointUrl') || ENDPOINT;
486
589
  endpointUrl = endpointUrl.replace(/^http:/, 'https:');
487
590
 
591
+ // Use the first bid request's bid_request_url if it exists ( for updating server url)
592
+ if (validBidRequests.length > 0) {
593
+ if (deepAccess(validBidRequests[0], 'params.bid_endpoint_request_url')) {
594
+ endpointUrl = deepAccess(validBidRequests[0], 'params.bid_endpoint_request_url').replace(/^http:/, 'https:');
595
+ }
596
+ }
597
+
488
598
  if (validBidRequests.length > 0) {
489
599
  requests.push({
490
600
  method: 'POST',
@@ -3,7 +3,7 @@ import { config } from '../src/config.js';
3
3
  import { auctionManager } from '../src/auctionManager.js';
4
4
  import { INSTREAM } from '../src/video.js';
5
5
  import * as events from '../src/events.js';
6
- import CONSTANTS from '../src/constants.json'
6
+ import { EVENTS, TARGETING_KEYS, BID_STATUS } from '../src/constants.js'
7
7
 
8
8
  /**
9
9
  * @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
@@ -11,9 +11,9 @@ import CONSTANTS from '../src/constants.json'
11
11
  * @typedef {import('../src/adapters/bidderFactory.js').AdUnit} AdUnit
12
12
  */
13
13
 
14
- const {CACHE_ID, UUID} = CONSTANTS.TARGETING_KEYS;
15
- const {BID_WON, AUCTION_END} = CONSTANTS.EVENTS;
16
- const {RENDERED} = CONSTANTS.BID_STATUS;
14
+ const { CACHE_ID, UUID } = TARGETING_KEYS;
15
+ const { BID_WON, AUCTION_END } = EVENTS;
16
+ const { RENDERED } = BID_STATUS;
17
17
 
18
18
  const INSTREAM_TRACKING_DEFAULT_CONFIG = {
19
19
  enabled: false,
@@ -6,7 +6,7 @@ import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
6
6
  import adapterManager from '../src/adapterManager.js';
7
7
 
8
8
  import { generateUUID, logInfo } from '../src/utils.js';
9
- import CONSTANTS from '../src/constants.json';
9
+ import { EVENTS } from '../src/constants.js';
10
10
 
11
11
  const DEFAULT_EVENT_URL = 'https://api.pymx5.com/v1/' + 'sites/events';
12
12
  const analyticsType = 'endpoint';
@@ -15,22 +15,20 @@ const ajax = ajaxBuilder(0);
15
15
 
16
16
  // Events needed
17
17
  const {
18
- EVENTS: {
19
- AUCTION_INIT,
20
- AUCTION_END,
21
- BID_ADJUSTMENT,
22
- BID_TIMEOUT,
23
- BID_REQUESTED,
24
- BID_RESPONSE,
25
- NO_BID,
26
- BID_WON,
27
- BIDDER_DONE,
28
- SET_TARGETING,
29
- REQUEST_BIDS,
30
- ADD_AD_UNITS,
31
- AD_RENDER_FAILED,
32
- },
33
- } = CONSTANTS;
18
+ AUCTION_INIT,
19
+ AUCTION_END,
20
+ BID_ADJUSTMENT,
21
+ BID_TIMEOUT,
22
+ BID_REQUESTED,
23
+ BID_RESPONSE,
24
+ NO_BID,
25
+ BID_WON,
26
+ BIDDER_DONE,
27
+ SET_TARGETING,
28
+ REQUEST_BIDS,
29
+ ADD_AD_UNITS,
30
+ AD_RENDER_FAILED,
31
+ } = EVENTS;
34
32
 
35
33
  const _VERSION = 1;
36
34
  const _pageViewId = generateUUID();
@@ -18,7 +18,7 @@ import {
18
18
  } from '../src/utils.js';
19
19
  import { BANNER, VIDEO, NATIVE } from '../src/mediaTypes.js';
20
20
  import { config } from '../src/config.js';
21
- import CONSTANTS from '../src/constants.json';
21
+ import { EVENTS } from '../src/constants.js';
22
22
  import { getStorageManager } from '../src/storageManager.js';
23
23
  import * as events from '../src/events.js';
24
24
  import { find } from '../src/polyfill.js';
@@ -1739,8 +1739,8 @@ export const spec = {
1739
1739
  */
1740
1740
  isBidRequestValid: function (bid) {
1741
1741
  if (!hasRegisteredHandler) {
1742
- events.on(CONSTANTS.EVENTS.AUCTION_DEBUG, localStorageHandler);
1743
- events.on(CONSTANTS.EVENTS.AD_RENDER_FAILED, localStorageHandler);
1742
+ events.on(EVENTS.AUCTION_DEBUG, localStorageHandler);
1743
+ events.on(EVENTS.AD_RENDER_FAILED, localStorageHandler);
1744
1744
  hasRegisteredHandler = true;
1745
1745
  }
1746
1746
 
@@ -2,7 +2,7 @@ import { logError } from '../src/utils.js';
2
2
  import { ajax } from '../src/ajax.js';
3
3
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
4
4
  import adapterManager from '../src/adapterManager.js';
5
- import CONSTANTS from '../src/constants.json';
5
+ import { EVENTS } from '../src/constants.js';
6
6
 
7
7
  const EVENT_URL = 'https://krk.kargo.com/api/v1/event';
8
8
  const KARGO_BIDDER_CODE = 'kargo';
@@ -23,11 +23,11 @@ var kargoAnalyticsAdapter = Object.assign(
23
23
  adapter({ analyticsType }), {
24
24
  track({ eventType, args }) {
25
25
  switch (eventType) {
26
- case CONSTANTS.EVENTS.AUCTION_INIT: {
26
+ case EVENTS.AUCTION_INIT: {
27
27
  _logBidResponseData.auctionTimeout = args.timeout;
28
28
  break;
29
29
  }
30
- case CONSTANTS.EVENTS.BID_RESPONSE: {
30
+ case EVENTS.BID_RESPONSE: {
31
31
  handleBidResponseData(args);
32
32
  break;
33
33
  }
@@ -195,25 +195,19 @@ function buildRequests(validBidRequests, bidderRequest) {
195
195
  }
196
196
 
197
197
  function interpretResponse(response, bidRequest) {
198
- let bids = response.body;
198
+ const bids = response.body;
199
199
  const bidResponses = [];
200
200
 
201
- if (isEmpty(bids)) {
201
+ if (isEmpty(bids) || typeof bids !== 'object') {
202
202
  return bidResponses;
203
203
  }
204
204
 
205
- if (typeof bids !== 'object') {
206
- return bidResponses;
207
- }
208
-
209
- Object.entries(bids).forEach((entry) => {
210
- const [bidID, adUnit] = entry;
211
-
205
+ for (const [bidID, adUnit] of Object.entries(bids)) {
212
206
  let meta = {
213
207
  mediaType: adUnit.mediaType && BIDDER.SUPPORTED_MEDIA_TYPES.includes(adUnit.mediaType) ? adUnit.mediaType : BANNER
214
208
  };
215
209
 
216
- if (adUnit.metadata && adUnit.metadata.landingPageDomain) {
210
+ if (adUnit.metadata?.landingPageDomain) {
217
211
  meta.clickUrl = adUnit.metadata.landingPageDomain[0];
218
212
  meta.advertiserDomains = adUnit.metadata.landingPageDomain;
219
213
  }
@@ -243,7 +237,7 @@ function interpretResponse(response, bidRequest) {
243
237
  }
244
238
 
245
239
  bidResponses.push(bidResponse);
246
- })
240
+ }
247
241
 
248
242
  return bidResponses;
249
243
  }
@@ -4,7 +4,7 @@ import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
4
4
  import adapterManager from '../src/adapterManager.js';
5
5
  import { targeting } from '../src/targeting.js';
6
6
  import { config } from '../src/config.js';
7
- import CONSTANTS from '../src/constants.json';
7
+ import {EVENTS} from '../src/constants.js';
8
8
 
9
9
  const TRACKER_HOST = 'tracker.konduit.me';
10
10
  const KONDUIT_PREBID_MODULE_VERSION = '1.0.0';
@@ -12,13 +12,13 @@ const KONDUIT_PREBID_MODULE_VERSION = '1.0.0';
12
12
  const analyticsType = 'endpoint';
13
13
 
14
14
  const eventDataComposerMap = {
15
- [CONSTANTS.EVENTS.AUCTION_INIT]: obtainAuctionInfo,
16
- [CONSTANTS.EVENTS.AUCTION_END]: obtainAuctionInfo,
17
- [CONSTANTS.EVENTS.BID_REQUESTED]: obtainBidRequestsInfo,
18
- [CONSTANTS.EVENTS.BID_TIMEOUT]: obtainBidTimeoutInfo,
19
- [CONSTANTS.EVENTS.BID_RESPONSE]: obtainBidResponseInfo,
20
- [CONSTANTS.EVENTS.BID_WON]: obtainWinnerBidInfo,
21
- [CONSTANTS.EVENTS.NO_BID]: obtainNoBidInfo,
15
+ [EVENTS.AUCTION_INIT]: obtainAuctionInfo,
16
+ [EVENTS.AUCTION_END]: obtainAuctionInfo,
17
+ [EVENTS.BID_REQUESTED]: obtainBidRequestsInfo,
18
+ [EVENTS.BID_TIMEOUT]: obtainBidTimeoutInfo,
19
+ [EVENTS.BID_RESPONSE]: obtainBidResponseInfo,
20
+ [EVENTS.BID_WON]: obtainWinnerBidInfo,
21
+ [EVENTS.NO_BID]: obtainNoBidInfo,
22
22
  };
23
23
 
24
24
  // This function is copy from prebid core
@@ -43,7 +43,7 @@ function buildUrl(obj) {
43
43
 
44
44
  const getWinnerBidFromAggregatedEvents = () => {
45
45
  return konduitAnalyticsAdapter.context.aggregatedEvents
46
- .filter(evt => evt.eventType === CONSTANTS.EVENTS.BID_WON)[0];
46
+ .filter(evt => evt.eventType === EVENTS.BID_WON)[0];
47
47
  };
48
48
 
49
49
  const isWinnerBidDetected = () => {
@@ -57,7 +57,7 @@ const konduitAnalyticsAdapter = Object.assign(
57
57
  adapter({ analyticsType }),
58
58
  {
59
59
  track ({ eventType, args }) {
60
- if (CONSTANTS.EVENTS.AUCTION_INIT === eventType) {
60
+ if (EVENTS.AUCTION_INIT === eventType) {
61
61
  konduitAnalyticsAdapter.context.aggregatedEvents.splice(0);
62
62
  }
63
63
 
@@ -68,12 +68,12 @@ const konduitAnalyticsAdapter = Object.assign(
68
68
  });
69
69
  }
70
70
 
71
- if (eventType === CONSTANTS.EVENTS.AUCTION_END) {
71
+ if (eventType === EVENTS.AUCTION_END) {
72
72
  if (!isWinnerBidDetected() && isWinnerBidExist()) {
73
- const bidWonData = eventDataComposerMap[CONSTANTS.EVENTS.BID_WON](targeting.getWinningBids()[0]);
73
+ const bidWonData = eventDataComposerMap[EVENTS.BID_WON](targeting.getWinningBids()[0]);
74
74
 
75
75
  konduitAnalyticsAdapter.context.aggregatedEvents.push({
76
- eventType: CONSTANTS.EVENTS.BID_WON,
76
+ eventType: EVENTS.BID_WON,
77
77
  data: bidWonData,
78
78
  });
79
79
  }
@@ -1,7 +1,7 @@
1
1
  import {ajax} from '../src/ajax.js';
2
2
  import { generateUUID, logInfo, logWarn } from '../src/utils.js';
3
3
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
4
- import CONSTANTS from '../src/constants.json';
4
+ import { EVENTS } from '../src/constants.js';
5
5
  import adapterManager from '../src/adapterManager.js';
6
6
  import { auctionManager } from '../src/auctionManager.js';
7
7
  import { getRefererInfo } from '../src/refererDetection.js';
@@ -11,7 +11,7 @@ const URL = 'https://wba.liadm.com/analytic-events';
11
11
  const GVL_ID = 148;
12
12
  const ADAPTER_CODE = 'liveintent';
13
13
  const DEFAULT_BID_WON_TIMEOUT = 2000;
14
- const { EVENTS: { AUCTION_END } } = CONSTANTS;
14
+ const { AUCTION_END } = EVENTS;
15
15
  let bidWonTimeout;
16
16
 
17
17
  function handleAuctionEnd(args) {
@@ -1,7 +1,7 @@
1
1
  import { timestamp, logInfo, getWindowTop } from '../src/utils.js';
2
2
  import {ajax} from '../src/ajax.js';
3
3
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
4
- import CONSTANTS from '../src/constants.json';
4
+ import { EVENTS, STATUS } from '../src/constants.js';
5
5
  import adapterManager from '../src/adapterManager.js';
6
6
  import { getGlobal } from '../src/prebidGlobal.js';
7
7
 
@@ -28,11 +28,11 @@ let livewrappedAnalyticsAdapter = Object.assign(adapter({EMPTYURL, ANALYTICSTYPE
28
28
  logInfo('LIVEWRAPPED_EVENT:', [eventType, args]);
29
29
 
30
30
  switch (eventType) {
31
- case CONSTANTS.EVENTS.AUCTION_INIT:
31
+ case EVENTS.AUCTION_INIT:
32
32
  logInfo('LIVEWRAPPED_AUCTION_INIT:', args);
33
33
  cache.auctions[args.auctionId] = {bids: {}, bidAdUnits: {}};
34
34
  break;
35
- case CONSTANTS.EVENTS.BID_REQUESTED:
35
+ case EVENTS.BID_REQUESTED:
36
36
  logInfo('LIVEWRAPPED_BID_REQUESTED:', args);
37
37
  cache.auctions[args.auctionId].timeStamp = args.start;
38
38
 
@@ -73,11 +73,11 @@ let livewrappedAnalyticsAdapter = Object.assign(adapter({EMPTYURL, ANALYTICSTYPE
73
73
  });
74
74
  logInfo(livewrappedAnalyticsAdapter.requestEvents);
75
75
  break;
76
- case CONSTANTS.EVENTS.BID_RESPONSE:
76
+ case EVENTS.BID_RESPONSE:
77
77
  logInfo('LIVEWRAPPED_BID_RESPONSE:', args);
78
78
 
79
79
  let bidResponse = cache.auctions[args.auctionId].bids[args.requestId];
80
- bidResponse.isBid = args.getStatusCode() === CONSTANTS.STATUS.GOOD;
80
+ bidResponse.isBid = args.getStatusCode() === STATUS.GOOD;
81
81
  bidResponse.width = args.width;
82
82
  bidResponse.height = args.height;
83
83
  bidResponse.cpm = args.cpm;
@@ -101,7 +101,7 @@ let livewrappedAnalyticsAdapter = Object.assign(adapter({EMPTYURL, ANALYTICSTYPE
101
101
  };
102
102
  }
103
103
  break;
104
- case CONSTANTS.EVENTS.BIDDER_DONE:
104
+ case EVENTS.BIDDER_DONE:
105
105
  logInfo('LIVEWRAPPED_BIDDER_DONE:', args);
106
106
  args.bids.forEach(doneBid => {
107
107
  let bid = cache.auctions[doneBid.auctionId].bids[doneBid.bidId || doneBid.requestId];
@@ -111,7 +111,7 @@ let livewrappedAnalyticsAdapter = Object.assign(adapter({EMPTYURL, ANALYTICSTYPE
111
111
  bid.readyToSend = 1;
112
112
  });
113
113
  break;
114
- case CONSTANTS.EVENTS.BID_WON:
114
+ case EVENTS.BID_WON:
115
115
  logInfo('LIVEWRAPPED_BID_WON:', args);
116
116
  let wonBid = cache.auctions[args.auctionId].bids[args.requestId];
117
117
  wonBid.won = true;
@@ -123,7 +123,7 @@ let livewrappedAnalyticsAdapter = Object.assign(adapter({EMPTYURL, ANALYTICSTYPE
123
123
  livewrappedAnalyticsAdapter.sendEvents();
124
124
  }
125
125
  break;
126
- case CONSTANTS.EVENTS.AD_RENDER_FAILED:
126
+ case EVENTS.AD_RENDER_FAILED:
127
127
  logInfo('LIVEWRAPPED_AD_RENDER_FAILED:', args);
128
128
  let adRenderFailedBid = cache.auctions[args.bid.auctionId].bids[args.bid.requestId];
129
129
  adRenderFailedBid.adRenderFailed = true;
@@ -133,13 +133,13 @@ let livewrappedAnalyticsAdapter = Object.assign(adapter({EMPTYURL, ANALYTICSTYPE
133
133
  livewrappedAnalyticsAdapter.sendEvents();
134
134
  }
135
135
  break;
136
- case CONSTANTS.EVENTS.BID_TIMEOUT:
136
+ case EVENTS.BID_TIMEOUT:
137
137
  logInfo('LIVEWRAPPED_BID_TIMEOUT:', args);
138
138
  args.forEach(timeout => {
139
139
  cache.auctions[timeout.auctionId].bids[timeout.bidId].timeout = true;
140
140
  });
141
141
  break;
142
- case CONSTANTS.EVENTS.AUCTION_END:
142
+ case EVENTS.AUCTION_END:
143
143
  logInfo('LIVEWRAPPED_AUCTION_END:', args);
144
144
  setTimeout(() => {
145
145
  livewrappedAnalyticsAdapter.sendEvents();