prebid.js 5.14.0 → 5.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. package/.devcontainer/Dockerfile +11 -0
  2. package/.devcontainer/devcontainer.json +27 -0
  3. package/.devcontainer/postCreate.sh +6 -0
  4. package/allowedModules.js +2 -1
  5. package/integrationExamples/gpt/afpExample.html +242 -0
  6. package/integrationExamples/gpt/afpGamExample.html +152 -0
  7. package/integrationExamples/gpt/weboramaRtdProvider_example.html +126 -0
  8. package/modules/.submodules.json +29 -27
  9. package/modules/33acrossBidAdapter.js +23 -20
  10. package/modules/a4gBidAdapter.js +3 -3
  11. package/modules/ablidaBidAdapter.js +2 -2
  12. package/modules/adWMGBidAdapter.js +4 -4
  13. package/modules/adagioAnalyticsAdapter.js +4 -4
  14. package/modules/adagioBidAdapter.js +85 -82
  15. package/modules/adbookpspBidAdapter.js +56 -54
  16. package/modules/adfBidAdapter.js +24 -16
  17. package/modules/adgenerationBidAdapter.js +42 -18
  18. package/modules/adhashBidAdapter.js +105 -0
  19. package/modules/adhashBidAdapter.md +1 -1
  20. package/modules/adkernelAdnAnalyticsAdapter.js +6 -6
  21. package/modules/adkernelAdnBidAdapter.js +23 -23
  22. package/modules/adkernelBidAdapter.js +49 -44
  23. package/modules/adlooxAdServerVideo.js +26 -26
  24. package/modules/adlooxAnalyticsAdapter.js +38 -35
  25. package/modules/adlooxRtdProvider.js +49 -46
  26. package/modules/admanBidAdapter.js +4 -4
  27. package/modules/admixerBidAdapter.js +13 -2
  28. package/modules/admixerIdSystem.js +4 -4
  29. package/modules/adnowBidAdapter.js +4 -4
  30. package/modules/adnuntiusBidAdapter.js +6 -5
  31. package/modules/adoceanBidAdapter.js +10 -10
  32. package/modules/adpartnerBidAdapter.js +3 -3
  33. package/modules/adpod.js +45 -42
  34. package/modules/adprimeBidAdapter.js +4 -4
  35. package/modules/adqueryBidAdapter.js +204 -0
  36. package/modules/adqueryBidAdapter.md +32 -0
  37. package/modules/adrelevantisBidAdapter.js +30 -27
  38. package/modules/adriverBidAdapter.js +13 -13
  39. package/modules/adtargetBidAdapter.js +24 -24
  40. package/modules/adtelligentBidAdapter.js +29 -29
  41. package/modules/adtrueBidAdapter.js +35 -35
  42. package/modules/aduptechBidAdapter.js +10 -10
  43. package/modules/advangelistsBidAdapter.js +14 -14
  44. package/modules/adxcgAnalyticsAdapter.js +5 -5
  45. package/modules/adxcgBidAdapter.js +56 -56
  46. package/modules/adxpremiumAnalyticsAdapter.js +17 -17
  47. package/modules/adyoulikeBidAdapter.js +11 -11
  48. package/modules/afpBidAdapter.js +166 -0
  49. package/modules/afpBidAdapter.md +348 -0
  50. package/modules/ajaBidAdapter.js +12 -12
  51. package/modules/akamaiDAPIdSystem.js +9 -9
  52. package/modules/aniviewBidAdapter.js +2 -2
  53. package/modules/aolBidAdapter.js +15 -14
  54. package/modules/apacdexBidAdapter.js +16 -16
  55. package/modules/appnexusBidAdapter.js +59 -59
  56. package/modules/apstreamBidAdapter.js +5 -5
  57. package/modules/asoBidAdapter.js +30 -30
  58. package/modules/astraoneBidAdapter.js +2 -2
  59. package/modules/atsAnalyticsAdapter.js +35 -30
  60. package/modules/audiencerunBidAdapter.js +15 -15
  61. package/modules/automatadBidAdapter.js +2 -2
  62. package/modules/axonixBidAdapter.js +7 -7
  63. package/modules/beachfrontBidAdapter.js +23 -23
  64. package/modules/beopBidAdapter.js +22 -22
  65. package/modules/bidViewabilityIO.js +7 -7
  66. package/modules/bidglassBidAdapter.js +8 -8
  67. package/modules/bidscubeBidAdapter.js +3 -3
  68. package/modules/bizzclickBidAdapter.js +10 -10
  69. package/modules/bliinkBidAdapter.js +58 -32
  70. package/modules/bliinkBidAdapter.md +29 -6
  71. package/modules/bluebillywigBidAdapter.js +30 -30
  72. package/modules/boldwinBidAdapter.js +4 -4
  73. package/modules/braveBidAdapter.js +5 -5
  74. package/modules/bridgewellBidAdapter.js +5 -5
  75. package/modules/brightMountainMediaBidAdapter.js +10 -10
  76. package/modules/brightcomBidAdapter.js +18 -18
  77. package/modules/britepoolIdSystem.js +7 -7
  78. package/modules/browsiRtdProvider.js +8 -8
  79. package/modules/bucksenseBidAdapter.js +9 -9
  80. package/modules/buzzoolaBidAdapter.js +4 -4
  81. package/modules/byDataAnalyticsAdapter.js +12 -12
  82. package/modules/ccxBidAdapter.js +38 -38
  83. package/modules/cleanmedianetBidAdapter.js +9 -9
  84. package/modules/clickforceBidAdapter.js +4 -4
  85. package/modules/cointrafficBidAdapter.js +4 -4
  86. package/modules/coinzillaBidAdapter.js +2 -2
  87. package/modules/colossussspBidAdapter.js +7 -3
  88. package/modules/concertAnalyticsAdapter.js +3 -3
  89. package/modules/concertBidAdapter.js +16 -17
  90. package/modules/connectadBidAdapter.js +13 -13
  91. package/modules/consentManagement.js +29 -28
  92. package/modules/consentManagementUsp.js +14 -14
  93. package/modules/consumableBidAdapter.js +3 -3
  94. package/modules/contentexchangeBidAdapter.js +5 -5
  95. package/modules/conversantBidAdapter.js +32 -31
  96. package/modules/cpmstarBidAdapter.js +8 -9
  97. package/modules/craftBidAdapter.js +10 -10
  98. package/modules/criteoBidAdapter.js +16 -16
  99. package/modules/criteoIdSystem.js +5 -5
  100. package/modules/currency.js +18 -18
  101. package/modules/cwireBidAdapter.js +272 -0
  102. package/modules/cwireBidAdapter.md +43 -0
  103. package/modules/datablocksBidAdapter.js +12 -12
  104. package/modules/deepintentBidAdapter.js +13 -13
  105. package/modules/dgkeywordRtdProvider.js +10 -11
  106. package/modules/districtmDMXBidAdapter.js +15 -15
  107. package/modules/dmdIdSystem.js +5 -5
  108. package/modules/docereeBidAdapter.js +9 -9
  109. package/modules/dspxBidAdapter.js +5 -5
  110. package/modules/ebdrBidAdapter.js +9 -9
  111. package/modules/emx_digitalBidAdapter.js +23 -23
  112. package/modules/enrichmentFpdModule.js +10 -9
  113. package/modules/eplanningAnalyticsAdapter.js +2 -2
  114. package/modules/eplanningBidAdapter.js +10 -10
  115. package/modules/etargetBidAdapter.js +4 -4
  116. package/modules/express.js +9 -10
  117. package/modules/fabrickIdSystem.js +6 -6
  118. package/modules/feedadBidAdapter.js +5 -5
  119. package/modules/fintezaAnalyticsAdapter.js +4 -4
  120. package/modules/flocIdSystem.js +5 -5
  121. package/modules/fluctBidAdapter.js +6 -5
  122. package/modules/freewheel-sspBidAdapter.js +6 -6
  123. package/modules/gamoshiBidAdapter.js +22 -22
  124. package/modules/gdprEnforcement.js +13 -14
  125. package/modules/getintentBidAdapter.js +3 -4
  126. package/modules/glimpseBidAdapter.js +160 -48
  127. package/modules/glimpseBidAdapter.md +11 -74
  128. package/modules/gmosspBidAdapter.js +17 -17
  129. package/modules/gnetBidAdapter.js +5 -5
  130. package/modules/googleAnalyticsAdapter.js +6 -6
  131. package/modules/gothamadsBidAdapter.js +9 -9
  132. package/modules/gptPreAuction.js +7 -7
  133. package/modules/gridBidAdapter.js +15 -16
  134. package/modules/gridNMBidAdapter.js +214 -63
  135. package/modules/growadvertisingBidAdapter.js +7 -8
  136. package/modules/gumgumBidAdapter.js +19 -13
  137. package/modules/h12mediaBidAdapter.js +12 -12
  138. package/modules/haloIdSystem.js +8 -8
  139. package/modules/hybridBidAdapter.js +7 -7
  140. package/modules/iasRtdProvider.js +79 -63
  141. package/modules/id5IdSystem.js +24 -24
  142. package/modules/idImportLibrary.js +35 -35
  143. package/modules/idxIdSystem.js +3 -3
  144. package/modules/impactifyBidAdapter.js +10 -10
  145. package/modules/improvedigitalBidAdapter.js +36 -36
  146. package/modules/imuIdSystem.js +6 -6
  147. package/modules/inmarBidAdapter.js +2 -2
  148. package/modules/innityBidAdapter.js +3 -3
  149. package/modules/inskinBidAdapter.js +14 -2
  150. package/modules/inskinBidAdapter.md +5 -4
  151. package/modules/instreamTracking.js +5 -5
  152. package/modules/integr8BidAdapter.js +4 -4
  153. package/modules/intentIqIdSystem.js +7 -7
  154. package/modules/interactiveOffersBidAdapter.js +5 -5
  155. package/modules/invibesBidAdapter.js +53 -19
  156. package/modules/invisiblyAnalyticsAdapter.js +5 -5
  157. package/modules/iqmBidAdapter.js +19 -19
  158. package/modules/iqzoneBidAdapter.js +5 -5
  159. package/modules/ixBidAdapter.js +73 -73
  160. package/modules/jixieBidAdapter.js +6 -6
  161. package/modules/justpremiumBidAdapter.js +5 -1
  162. package/modules/kargoBidAdapter.js +16 -9
  163. package/modules/kargoBidAdapter.md +20 -0
  164. package/modules/kinessoIdSystem.js +8 -8
  165. package/modules/koblerBidAdapter.js +12 -12
  166. package/modules/konduitAnalyticsAdapter.js +4 -4
  167. package/modules/konduitWrapper.js +14 -14
  168. package/modules/krushmediaBidAdapter.js +4 -4
  169. package/modules/kubientBidAdapter.js +5 -5
  170. package/modules/limelightDigitalBidAdapter.js +4 -4
  171. package/modules/liveIntentIdSystem.js +4 -5
  172. package/modules/livewrappedAnalyticsAdapter.js +27 -15
  173. package/modules/livewrappedBidAdapter.js +7 -7
  174. package/modules/liveyieldAnalyticsAdapter.js +13 -13
  175. package/modules/lockerdomeBidAdapter.js +2 -2
  176. package/modules/loganBidAdapter.js +4 -4
  177. package/modules/lotamePanoramaIdSystem.js +13 -13
  178. package/modules/lunamediahbBidAdapter.js +2 -2
  179. package/modules/madvertiseBidAdapter.js +3 -3
  180. package/modules/marsmediaBidAdapter.js +26 -26
  181. package/modules/mathildeadsBidAdapter.js +5 -5
  182. package/modules/mediaforceBidAdapter.js +11 -11
  183. package/modules/mediakeysBidAdapter.js +444 -53
  184. package/modules/mediakeysBidAdapter.md +108 -0
  185. package/modules/medianetAnalyticsAdapter.js +48 -125
  186. package/modules/medianetBidAdapter.js +38 -33
  187. package/modules/medianetRtdProvider.js +7 -7
  188. package/modules/merkleIdSystem.js +19 -19
  189. package/modules/mgidBidAdapter.js +50 -50
  190. package/modules/microadBidAdapter.js +3 -3
  191. package/modules/multibid/index.js +15 -13
  192. package/modules/mwOpenLinkIdSystem.js +7 -7
  193. package/modules/mytargetBidAdapter.js +112 -0
  194. package/modules/nativoBidAdapter.js +46 -31
  195. package/modules/nativoBidAdapter.md +0 -1
  196. package/modules/naveggIdSystem.js +3 -3
  197. package/modules/nextMillenniumBidAdapter.js +6 -6
  198. package/modules/nextrollBidAdapter.js +375 -0
  199. package/modules/nobidBidAdapter.js +12 -11
  200. package/modules/novatiqIdSystem.js +8 -8
  201. package/modules/oguryBidAdapter.js +22 -6
  202. package/modules/oneVideoBidAdapter.js +20 -20
  203. package/modules/onomagicBidAdapter.js +16 -16
  204. package/modules/ooloAnalyticsAdapter.js +13 -13
  205. package/modules/openwebBidAdapter.js +26 -26
  206. package/modules/openxAnalyticsAdapter.js +33 -33
  207. package/modules/openxBidAdapter.js +29 -29
  208. package/modules/operaadsBidAdapter.js +53 -53
  209. package/modules/optimeraRtdProvider.js +9 -9
  210. package/modules/optoutBidAdapter.js +3 -3
  211. package/modules/orbidderBidAdapter.js +3 -3
  212. package/modules/outbrainBidAdapter.js +13 -13
  213. package/modules/ozoneBidAdapter.js +131 -131
  214. package/modules/padsquadBidAdapter.js +4 -4
  215. package/modules/parrableIdSystem.js +17 -17
  216. package/modules/pixfutureBidAdapter.js +45 -25
  217. package/modules/pixfutureBidAdapter.md +127 -0
  218. package/modules/prebidServerBidAdapter/index.js +109 -105
  219. package/modules/prebidmanagerAnalyticsAdapter.js +7 -7
  220. package/modules/priceFloors.js +47 -47
  221. package/modules/proxistoreBidAdapter.js +6 -8
  222. package/modules/pubCommonId.js +11 -11
  223. package/modules/pubProvidedIdSystem.js +3 -3
  224. package/modules/publinkIdSystem.js +23 -7
  225. package/modules/publinkIdSystem.md +7 -2
  226. package/modules/pubmaticAnalyticsAdapter.js +16 -16
  227. package/modules/pubmaticBidAdapter.js +109 -93
  228. package/modules/pubmaticBidAdapter.md +1 -1
  229. package/modules/pubperfAnalyticsAdapter.js +3 -3
  230. package/modules/pubwiseAnalyticsAdapter.js +6 -6
  231. package/modules/pubwiseBidAdapter.js +23 -23
  232. package/modules/pubxBidAdapter.js +2 -2
  233. package/modules/pubxaiAnalyticsAdapter.js +7 -7
  234. package/modules/pulsepointBidAdapter.js +13 -13
  235. package/modules/pxyzBidAdapter.js +7 -7
  236. package/modules/quantcastBidAdapter.js +16 -16
  237. package/modules/radsBidAdapter.js +5 -5
  238. package/modules/realvuAnalyticsAdapter.js +5 -7
  239. package/modules/reconciliationRtdProvider.js +6 -6
  240. package/modules/relaidoBidAdapter.js +44 -38
  241. package/modules/resetdigitalBidAdapter.js +3 -4
  242. package/modules/revcontentBidAdapter.js +9 -9
  243. package/modules/rhythmoneBidAdapter.js +17 -16
  244. package/modules/richaudienceBidAdapter.js +9 -9
  245. package/modules/riseBidAdapter.js +26 -26
  246. package/modules/riseBidAdapter.md +1 -3
  247. package/modules/roxotAnalyticsAdapter.js +14 -14
  248. package/modules/rtbhouseBidAdapter.js +7 -7
  249. package/modules/rtbsapeBidAdapter.js +3 -4
  250. package/modules/rtdModule/index.js +3 -3
  251. package/modules/rubiconAnalyticsAdapter.js +82 -82
  252. package/modules/rubiconBidAdapter.js +72 -68
  253. package/modules/scaleableAnalyticsAdapter.js +2 -2
  254. package/modules/seedingAllianceBidAdapter.js +231 -0
  255. package/modules/seedtagBidAdapter.js +10 -10
  256. package/modules/sharedIdSystem.js +11 -11
  257. package/modules/sharethroughAnalyticsAdapter.js +8 -8
  258. package/modules/sharethroughBidAdapter.js +20 -27
  259. package/modules/showheroes-bsBidAdapter.js +23 -23
  260. package/modules/sigmoidAnalyticsAdapter.js +4 -5
  261. package/modules/sirdataRtdProvider.js +34 -34
  262. package/modules/sizeMappingV2.js +39 -39
  263. package/modules/slimcutBidAdapter.js +121 -0
  264. package/modules/smaatoBidAdapter.js +44 -44
  265. package/modules/smartadserverBidAdapter.js +7 -7
  266. package/modules/smartxBidAdapter.js +72 -72
  267. package/modules/smartyadsBidAdapter.js +2 -2
  268. package/modules/smilewantedBidAdapter.js +6 -6
  269. package/modules/sonobiAnalyticsAdapter.js +23 -23
  270. package/modules/sortableAnalyticsAdapter.js +5 -5
  271. package/modules/sortableBidAdapter.js +28 -28
  272. package/modules/sovrnAnalyticsAdapter.js +5 -5
  273. package/modules/sovrnBidAdapter.js +22 -22
  274. package/modules/spotxBidAdapter.js +97 -83
  275. package/modules/sspBCBidAdapter.js +216 -21
  276. package/modules/sspBCBidAdapter.md +1 -1
  277. package/modules/staqAnalyticsAdapter.js +9 -9
  278. package/modules/stroeerCoreBidAdapter.js +16 -16
  279. package/modules/sublimeBidAdapter.js +6 -6
  280. package/modules/talkadsBidAdapter.js +129 -0
  281. package/modules/talkadsBidAdapter.md +60 -0
  282. package/modules/tapadIdSystem.js +3 -3
  283. package/modules/tappxBidAdapter.js +63 -64
  284. package/modules/teadsBidAdapter.js +20 -20
  285. package/modules/telariaBidAdapter.js +17 -17
  286. package/modules/temedyaBidAdapter.js +4 -4
  287. package/modules/terceptAnalyticsAdapter.js +4 -4
  288. package/modules/theAdxBidAdapter.js +16 -16
  289. package/modules/timeoutRtdProvider.js +15 -15
  290. package/modules/tpmnBidAdapter.js +3 -3
  291. package/modules/trionBidAdapter.js +15 -15
  292. package/modules/tripleliftBidAdapter.js +27 -24
  293. package/modules/truereachBidAdapter.js +4 -4
  294. package/modules/trustxBidAdapter.js +22 -18
  295. package/modules/ucfunnelBidAdapter.js +3 -3
  296. package/modules/uid2IdSystem.js +6 -6
  297. package/modules/underdogmediaBidAdapter.js +4 -4
  298. package/modules/unicornBidAdapter.js +15 -15
  299. package/modules/unifiedIdSystem.js +4 -4
  300. package/modules/unrulyBidAdapter.js +16 -16
  301. package/modules/userId/eids.js +9 -9
  302. package/modules/userId/index.js +37 -35
  303. package/modules/validationFpdModule/index.js +15 -15
  304. package/modules/vdoaiBidAdapter.js +2 -2
  305. package/modules/verizonMediaIdSystem.js +5 -5
  306. package/modules/vidazooBidAdapter.js +5 -5
  307. package/modules/videobyteBidAdapter.js +24 -24
  308. package/modules/videoreachBidAdapter.js +7 -7
  309. package/modules/vidoomyBidAdapter.js +105 -22
  310. package/modules/viewdeosDXBidAdapter.js +17 -17
  311. package/modules/visxBidAdapter.js +21 -29
  312. package/modules/voxBidAdapter.js +7 -7
  313. package/modules/vuukleBidAdapter.js +2 -2
  314. package/modules/waardexBidAdapter.js +26 -26
  315. package/modules/weboramaRtdProvider.js +174 -0
  316. package/modules/weboramaRtdProvider.md +70 -0
  317. package/modules/winrBidAdapter.js +27 -27
  318. package/modules/wipesBidAdapter.js +2 -2
  319. package/modules/yahoosspBidAdapter.js +637 -0
  320. package/modules/yahoosspBidAdapter.md +795 -0
  321. package/modules/yieldlabBidAdapter.js +57 -12
  322. package/modules/yieldlabBidAdapter.md +16 -1
  323. package/modules/yieldliftBidAdapter.js +9 -9
  324. package/modules/yieldmoBidAdapter.js +64 -50
  325. package/modules/yieldoneAnalyticsAdapter.js +6 -6
  326. package/modules/yieldoneBidAdapter.js +11 -11
  327. package/modules/yuktamediaAnalyticsAdapter.js +15 -15
  328. package/modules/zeotapIdPlusIdSystem.js +2 -2
  329. package/modules/zetaBidAdapter.js +6 -6
  330. package/modules/zeta_global_sspBidAdapter.js +14 -14
  331. package/package.json +1 -1
  332. package/src/AnalyticsAdapter.js +6 -6
  333. package/src/Renderer.js +10 -8
  334. package/src/adapterManager.js +45 -42
  335. package/src/adloader.js +6 -6
  336. package/src/ajax.js +8 -9
  337. package/src/auction.js +26 -23
  338. package/src/bidfactory.js +2 -2
  339. package/src/config.js +52 -50
  340. package/src/cpmBucketManager.js +2 -2
  341. package/src/prebid.js +85 -81
  342. package/src/storageManager.js +5 -5
  343. package/src/targeting.js +25 -26
  344. package/src/userSync.js +35 -22
  345. package/src/videoCache.js +2 -2
  346. package/test/.eslintrc.js +2 -1
  347. package/test/spec/modules/adfBidAdapter_spec.js +55 -0
  348. package/test/spec/modules/adgenerationBidAdapter_spec.js +121 -50
  349. package/test/spec/modules/adhashBidAdapter_spec.js +155 -0
  350. package/test/spec/modules/adnuntiusBidAdapter_spec.js +68 -0
  351. package/test/spec/modules/adqueryBidAdapter_spec.js +185 -0
  352. package/test/spec/modules/afpBidAdapter_spec.js +306 -0
  353. package/test/spec/modules/atsAnalyticsAdapter_spec.js +37 -2
  354. package/test/spec/modules/bliinkBidAdapter_spec.js +87 -36
  355. package/test/spec/modules/colossussspBidAdapter_spec.js +14 -6
  356. package/test/spec/modules/cwireBidAdapter_spec.js +246 -0
  357. package/test/spec/modules/eplanningBidAdapter_spec.js +3 -3
  358. package/test/spec/modules/glimpseBidAdapter_spec.js +302 -204
  359. package/test/spec/modules/gridBidAdapter_spec.js +38 -2
  360. package/test/spec/modules/gridNMBidAdapter_spec.js +121 -47
  361. package/test/spec/modules/gumgumBidAdapter_spec.js +27 -6
  362. package/test/spec/modules/iasRtdProvider_spec.js +71 -6
  363. package/test/spec/modules/inskinBidAdapter_spec.js +10 -1
  364. package/test/spec/modules/invibesBidAdapter_spec.js +114 -2
  365. package/test/spec/modules/justpremiumBidAdapter_spec.js +16 -2
  366. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +33 -7
  367. package/test/spec/modules/mediakeysBidAdapter_spec.js +406 -51
  368. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +39 -7
  369. package/test/spec/modules/medianetBidAdapter_spec.js +62 -1
  370. package/test/spec/modules/mytargetBidAdapter_spec.js +199 -0
  371. package/test/spec/modules/nativoBidAdapter_spec.js +50 -3
  372. package/test/spec/modules/nextrollBidAdapter_spec.js +290 -0
  373. package/test/spec/modules/nobidBidAdapter_spec.js +65 -1
  374. package/test/spec/modules/oguryBidAdapter_spec.js +120 -7
  375. package/test/spec/modules/publinkIdSystem_spec.js +42 -12
  376. package/test/spec/modules/pubmaticBidAdapter_spec.js +217 -1
  377. package/test/spec/modules/relaidoBidAdapter_spec.js +21 -20
  378. package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +100 -81
  379. package/test/spec/modules/rubiconAnalyticsSchema.json +5 -2
  380. package/test/spec/modules/seedingAllianceAdapter_spec.js +186 -0
  381. package/test/spec/modules/sharethroughBidAdapter_spec.js +156 -136
  382. package/test/spec/modules/slimcutBidAdapter_spec.js +200 -0
  383. package/test/spec/modules/spotxBidAdapter_spec.js +36 -0
  384. package/test/spec/modules/sspBCBidAdapter_spec.js +210 -62
  385. package/test/spec/modules/talkadsBidAdapter_spec.js +231 -0
  386. package/test/spec/modules/tappxBidAdapter_spec.js +39 -3
  387. package/test/spec/modules/tripleliftBidAdapter_spec.js +2 -0
  388. package/test/spec/modules/trustxBidAdapter_spec.js +35 -2
  389. package/test/spec/modules/unicornBidAdapter_spec.js +4 -4
  390. package/test/spec/modules/visxBidAdapter_spec.js +48 -4
  391. package/test/spec/modules/weboramaRtdProvider_spec.js +288 -0
  392. package/test/spec/modules/yahoosspBidAdapter_spec.js +1332 -0
  393. package/test/spec/modules/yieldlabBidAdapter_spec.js +65 -1
  394. package/test/spec/modules/yieldmoBidAdapter_spec.js +30 -9
  395. package/test/spec/unit/pbjs_api_spec.js +4 -0
  396. package/test/spec/userSync_spec.js +30 -2
  397. package/modules/turktelekomBidAdapter.md +0 -49
@@ -11,7 +11,10 @@ import { auctionManager } from '../src/auctionManager.js';
11
11
  import { AUCTION_COMPLETED } from '../src/auction.js';
12
12
  import { EVENTS } from '../src/constants.json';
13
13
  import find from 'core-js-pure/features/array/find.js';
14
- import * as utils from '../src/utils.js';
14
+ import {
15
+ deepAccess, logInfo, isPlainObject, logError, isStr, isNumber, getGptSlotInfoForAdUnitCode,
16
+ isFn, mergeDeep, logMessage, insertElement, logWarn, getUniqueIdentifierStr, parseUrl
17
+ } from '../src/utils.js';
15
18
 
16
19
  const MODULE = 'adlooxAnalyticsAdapter';
17
20
 
@@ -45,7 +48,7 @@ MACRO['creatype'] = function(b, c) {
45
48
  };
46
49
  MACRO['pbadslot'] = function(b, c) {
47
50
  const adUnit = find(auctionManager.getAdUnits(), a => b.adUnitCode === a.code);
48
- return utils.deepAccess(adUnit, 'ortb2Imp.ext.data.pbadslot') || utils.getGptSlotInfoForAdUnitCode(b.adUnitCode).gptSlot || b.adUnitCode;
51
+ return deepAccess(adUnit, 'ortb2Imp.ext.data.pbadslot') || getGptSlotInfoForAdUnitCode(b.adUnitCode).gptSlot || b.adUnitCode;
49
52
  };
50
53
  MACRO['pbAdSlot'] = MACRO['pbadslot']; // legacy
51
54
 
@@ -66,7 +69,7 @@ let analyticsAdapter = Object.assign(adapter({ analyticsType: 'endpoint' }), {
66
69
  track({ eventType, args }) {
67
70
  if (!analyticsAdapter[`handle_${eventType}`]) return;
68
71
 
69
- utils.logInfo(MODULE, 'track', eventType, args);
72
+ logInfo(MODULE, 'track', eventType, args);
70
73
 
71
74
  analyticsAdapter[`handle_${eventType}`](args);
72
75
  }
@@ -78,45 +81,45 @@ analyticsAdapter.originEnableAnalytics = analyticsAdapter.enableAnalytics;
78
81
  analyticsAdapter.enableAnalytics = function(config) {
79
82
  analyticsAdapter.context = null;
80
83
 
81
- utils.logInfo(MODULE, 'config', config);
84
+ logInfo(MODULE, 'config', config);
82
85
 
83
- if (!utils.isPlainObject(config.options)) {
84
- utils.logError(MODULE, 'missing options');
86
+ if (!isPlainObject(config.options)) {
87
+ logError(MODULE, 'missing options');
85
88
  return;
86
89
  }
87
- if (!(config.options.js === undefined || utils.isStr(config.options.js))) {
88
- utils.logError(MODULE, 'invalid js options value');
90
+ if (!(config.options.js === undefined || isStr(config.options.js))) {
91
+ logError(MODULE, 'invalid js options value');
89
92
  return;
90
93
  }
91
- if (!(config.options.toselector === undefined || utils.isFn(config.options.toselector))) {
92
- utils.logError(MODULE, 'invalid toselector options value');
94
+ if (!(config.options.toselector === undefined || isFn(config.options.toselector))) {
95
+ logError(MODULE, 'invalid toselector options value');
93
96
  return;
94
97
  }
95
- if (!utils.isStr(config.options.client)) {
96
- utils.logError(MODULE, 'invalid client options value');
98
+ if (!isStr(config.options.client)) {
99
+ logError(MODULE, 'invalid client options value');
97
100
  return;
98
101
  }
99
- if (!utils.isNumber(config.options.clientid)) {
100
- utils.logError(MODULE, 'invalid clientid options value');
102
+ if (!isNumber(config.options.clientid)) {
103
+ logError(MODULE, 'invalid clientid options value');
101
104
  return;
102
105
  }
103
- if (!utils.isNumber(config.options.tagid)) {
104
- utils.logError(MODULE, 'invalid tagid options value');
106
+ if (!isNumber(config.options.tagid)) {
107
+ logError(MODULE, 'invalid tagid options value');
105
108
  return;
106
109
  }
107
- if (!utils.isNumber(config.options.platformid)) {
108
- utils.logError(MODULE, 'invalid platformid options value');
110
+ if (!isNumber(config.options.platformid)) {
111
+ logError(MODULE, 'invalid platformid options value');
109
112
  return;
110
113
  }
111
- if (!(config.options.params === undefined || utils.isPlainObject(config.options.params))) {
112
- utils.logError(MODULE, 'invalid params options value');
114
+ if (!(config.options.params === undefined || isPlainObject(config.options.params))) {
115
+ logError(MODULE, 'invalid params options value');
113
116
  return;
114
117
  }
115
118
 
116
119
  analyticsAdapter.context = {
117
120
  js: config.options.js || URL_JS,
118
121
  toselector: config.options.toselector || function(bid) {
119
- let code = utils.getGptSlotInfoForAdUnitCode(bid.adUnitCode).divId || bid.adUnitCode;
122
+ let code = getGptSlotInfoForAdUnitCode(bid.adUnitCode).divId || bid.adUnitCode;
120
123
  // https://mathiasbynens.be/notes/css-escapes
121
124
  code = code.replace(/^\d/, '\\3$& ');
122
125
  return `#${code}`
@@ -128,7 +131,7 @@ analyticsAdapter.enableAnalytics = function(config) {
128
131
  params: []
129
132
  };
130
133
 
131
- config.options.params = utils.mergeDeep({}, PARAMS_DEFAULT, config.options.params || {});
134
+ config.options.params = mergeDeep({}, PARAMS_DEFAULT, config.options.params || {});
132
135
  Object
133
136
  .keys(config.options.params)
134
137
  .forEach(k => {
@@ -180,15 +183,15 @@ analyticsAdapter.url = function(url, args, bid) {
180
183
 
181
184
  let n = args.length;
182
185
  while (n-- > 0) {
183
- if (utils.isFn(args[n][1])) {
186
+ if (isFn(args[n][1])) {
184
187
  try {
185
188
  args[n][1] = args[n][1](bid);
186
189
  } catch (_) {
187
- utils.logError(MODULE, 'macro', args[n][0], _.message);
190
+ logError(MODULE, 'macro', args[n][0], _.message);
188
191
  args[n][1] = `ERROR: ${_.message}`;
189
192
  }
190
193
  }
191
- if (utils.isStr(args[n][1])) {
194
+ if (isStr(args[n][1])) {
192
195
  args[n][1] = macros(args[n][1]);
193
196
  }
194
197
  }
@@ -200,20 +203,20 @@ analyticsAdapter[`handle_${EVENTS.AUCTION_END}`] = function(auctionDetails) {
200
203
  if (!(auctionDetails.auctionStatus == AUCTION_COMPLETED && auctionDetails.bidsReceived.length > 0)) return;
201
204
  analyticsAdapter[`handle_${EVENTS.AUCTION_END}`] = NOOP;
202
205
 
203
- utils.logMessage(MODULE, 'preloading verification JS');
206
+ logMessage(MODULE, 'preloading verification JS');
204
207
 
205
- const uri = utils.parseUrl(analyticsAdapter.url(`${analyticsAdapter.context.js}#`));
208
+ const uri = parseUrl(analyticsAdapter.url(`${analyticsAdapter.context.js}#`));
206
209
 
207
210
  const link = document.createElement('link');
208
211
  link.setAttribute('href', `${uri.protocol}://${uri.host}${uri.pathname}`);
209
212
  link.setAttribute('rel', 'preload');
210
213
  link.setAttribute('as', 'script');
211
- utils.insertElement(link);
214
+ insertElement(link);
212
215
  }
213
216
 
214
217
  analyticsAdapter[`handle_${EVENTS.BID_WON}`] = function(bid) {
215
- if (utils.deepAccess(bid, 'ext.adloox.video.adserver')) {
216
- utils.logMessage(MODULE, `measuring '${bid.mediaType}' ad unit code '${bid.adUnitCode}' via Ad Server module`);
218
+ if (deepAccess(bid, 'ext.adloox.video.adserver')) {
219
+ logMessage(MODULE, `measuring '${bid.mediaType}' ad unit code '${bid.adUnitCode}' via Ad Server module`);
217
220
  return;
218
221
  }
219
222
 
@@ -223,11 +226,11 @@ analyticsAdapter[`handle_${EVENTS.BID_WON}`] = function(bid) {
223
226
  el = document.querySelector(sl);
224
227
  } catch (_) { }
225
228
  if (!el) {
226
- utils.logWarn(MODULE, `unable to find ad unit code '${bid.adUnitCode}' slot using selector '${sl}' (use options.toselector to change), ignoring`);
229
+ logWarn(MODULE, `unable to find ad unit code '${bid.adUnitCode}' slot using selector '${sl}' (use options.toselector to change), ignoring`);
227
230
  return;
228
231
  }
229
232
 
230
- utils.logMessage(MODULE, `measuring '${bid.mediaType}' unit at '${bid.adUnitCode}'`);
233
+ logMessage(MODULE, `measuring '${bid.mediaType}' unit at '${bid.adUnitCode}'`);
231
234
 
232
235
  const params = analyticsAdapter.context.params.concat([
233
236
  [ 'tagid', '%%tagid%%' ],
@@ -257,7 +260,7 @@ export const COMMAND = {
257
260
  TRACK: 'track'
258
261
  };
259
262
  export function command(cmd, data, callback0) {
260
- const cid = utils.getUniqueIdentifierStr();
263
+ const cid = getUniqueIdentifierStr();
261
264
  const callback = function() {
262
265
  delete COMMAND_QUEUE[cid];
263
266
  if (callback0) callback0.apply(null, arguments);
@@ -268,7 +271,7 @@ export function command(cmd, data, callback0) {
268
271
  function commandProcess(cid) {
269
272
  const { cmd, data, callback } = COMMAND_QUEUE[cid];
270
273
 
271
- utils.logInfo(MODULE, 'command', cmd, data);
274
+ logInfo(MODULE, 'command', cmd, data);
272
275
 
273
276
  switch (cmd) {
274
277
  case COMMAND.CONFIG:
@@ -292,7 +295,7 @@ function commandProcess(cid) {
292
295
  callback(); // drain queue
293
296
  break;
294
297
  default:
295
- utils.logWarn(MODULE, 'command unknown', cmd);
298
+ logWarn(MODULE, 'command unknown', cmd);
296
299
  // do not callback as arguments are unknown and to aid debugging
297
300
  }
298
301
  }
@@ -16,7 +16,10 @@ import { config as _config } from '../src/config.js';
16
16
  import { submodule } from '../src/hook.js';
17
17
  import { ajax } from '../src/ajax.js';
18
18
  import { getGlobal } from '../src/prebidGlobal.js';
19
- import * as utils from '../src/utils.js';
19
+ import {
20
+ getAdUnitSizes, logInfo, isPlainObject, logError, isStr, isInteger, isArray, isBoolean, mergeDeep, deepAccess,
21
+ _each, deepSetValue, logWarn, getGptSlotInfoForAdUnitCode
22
+ } from '../src/utils.js';
20
23
  import includes from 'core-js-pure/features/array/includes.js';
21
24
 
22
25
  const MODULE_NAME = 'adloox';
@@ -49,7 +52,7 @@ function atf(adUnit, cb) {
49
52
  // Google's advice is to collapse slots on no fill but
50
53
  // we have to cater to clients that grow slots on fill
51
54
  const rect = (function(rect) {
52
- const sizes = utils.getAdUnitSizes(adUnit);
55
+ const sizes = getAdUnitSizes(adUnit);
53
56
 
54
57
  if (sizes.length == 0) return false;
55
58
  // interstitial (0x0, 1x1)
@@ -141,54 +144,54 @@ function atf(adUnit, cb) {
141
144
  }
142
145
 
143
146
  function init(config, userConsent) {
144
- utils.logInfo(MODULE, 'init', config, userConsent);
147
+ logInfo(MODULE, 'init', config, userConsent);
145
148
 
146
- if (!utils.isPlainObject(config)) {
147
- utils.logError(MODULE, 'missing config');
149
+ if (!isPlainObject(config)) {
150
+ logError(MODULE, 'missing config');
148
151
  return false;
149
152
  }
150
153
  if (config.params === undefined) config.params = {};
151
- if (!(utils.isPlainObject(config.params))) {
152
- utils.logError(MODULE, 'invalid params');
154
+ if (!(isPlainObject(config.params))) {
155
+ logError(MODULE, 'invalid params');
153
156
  return false;
154
157
  }
155
- if (!(config.params.api_origin === undefined || utils.isStr(config.params.api_origin))) {
156
- utils.logError(MODULE, 'invalid api_origin params value');
158
+ if (!(config.params.api_origin === undefined || isStr(config.params.api_origin))) {
159
+ logError(MODULE, 'invalid api_origin params value');
157
160
  return false;
158
161
  }
159
- if (!(config.params.imps === undefined || (utils.isInteger(config.params.imps) && config.params.imps > 0))) {
160
- utils.logError(MODULE, 'invalid imps params value');
162
+ if (!(config.params.imps === undefined || (isInteger(config.params.imps) && config.params.imps > 0))) {
163
+ logError(MODULE, 'invalid imps params value');
161
164
  return false;
162
165
  }
163
- if (!(config.params.freqcap_ip === undefined || (utils.isInteger(config.params.freqcap_ip) && config.params.freqcap_ip >= 0))) {
164
- utils.logError(MODULE, 'invalid freqcap_ip params value');
166
+ if (!(config.params.freqcap_ip === undefined || (isInteger(config.params.freqcap_ip) && config.params.freqcap_ip >= 0))) {
167
+ logError(MODULE, 'invalid freqcap_ip params value');
165
168
  return false;
166
169
  }
167
- if (!(config.params.freqcap_ipua === undefined || (utils.isInteger(config.params.freqcap_ipua) && config.params.freqcap_ipua >= 0))) {
168
- utils.logError(MODULE, 'invalid freqcap_ipua params value');
170
+ if (!(config.params.freqcap_ipua === undefined || (isInteger(config.params.freqcap_ipua) && config.params.freqcap_ipua >= 0))) {
171
+ logError(MODULE, 'invalid freqcap_ipua params value');
169
172
  return false;
170
173
  }
171
- if (!(config.params.thresholds === undefined || (utils.isArray(config.params.thresholds) && config.params.thresholds.every(x => utils.isInteger(x) && x > 0 && x <= 100)))) {
172
- utils.logError(MODULE, 'invalid thresholds params value');
174
+ if (!(config.params.thresholds === undefined || (isArray(config.params.thresholds) && config.params.thresholds.every(x => isInteger(x) && x > 0 && x <= 100)))) {
175
+ logError(MODULE, 'invalid thresholds params value');
173
176
  return false;
174
177
  }
175
- if (!(config.params.slotinpath === undefined || utils.isBoolean(config.params.slotinpath))) {
176
- utils.logError(MODULE, 'invalid slotinpath params value');
178
+ if (!(config.params.slotinpath === undefined || isBoolean(config.params.slotinpath))) {
179
+ logError(MODULE, 'invalid slotinpath params value');
177
180
  return false;
178
181
  }
179
182
  // legacy/deprecated configuration code path
180
- if (!(config.params.params === undefined || (utils.isPlainObject(config.params.params) && utils.isInteger(config.params.params.clientid) && utils.isInteger(config.params.params.tagid) && utils.isInteger(config.params.params.platformid)))) {
181
- utils.logError(MODULE, 'invalid subsection params block');
183
+ if (!(config.params.params === undefined || (isPlainObject(config.params.params) && isInteger(config.params.params.clientid) && isInteger(config.params.params.tagid) && isInteger(config.params.params.platformid)))) {
184
+ logError(MODULE, 'invalid subsection params block');
182
185
  return false;
183
186
  }
184
187
 
185
188
  config.params.thresholds = config.params.thresholds || [ 50, 60, 70, 80, 90 ];
186
189
 
187
190
  function analyticsConfigCallback(data) {
188
- config = utils.mergeDeep(config.params, data);
191
+ config = mergeDeep(config.params, data);
189
192
  }
190
193
  if (config.params.params) {
191
- utils.logWarn(MODULE, `legacy/deprecated configuration (please migrate to ${MODULE_NAME}AnalyticsAdapter)`);
194
+ logWarn(MODULE, `legacy/deprecated configuration (please migrate to ${MODULE_NAME}AnalyticsAdapter)`);
192
195
  analyticsConfigCallback(config.params.params);
193
196
  } else {
194
197
  analyticsCommand(COMMAND.CONFIG, null, analyticsConfigCallback);
@@ -200,8 +203,8 @@ function init(config, userConsent) {
200
203
  function getBidRequestData(reqBidsConfigObj, callback, config, userConsent) {
201
204
  // gptPreAuction runs *after* RTD so pbadslot may not be populated... (╯°□°)╯ ┻━┻
202
205
  const adUnits = (reqBidsConfigObj.adUnits || getGlobal().adUnits).map(adUnit => {
203
- let path = utils.deepAccess(adUnit, 'ortb2Imp.ext.data.pbadslot');
204
- if (!path) path = utils.getGptSlotInfoForAdUnitCode(adUnit.code).gptSlot;
206
+ let path = deepAccess(adUnit, 'ortb2Imp.ext.data.pbadslot');
207
+ if (!path) path = getGptSlotInfoForAdUnitCode(adUnit.code).gptSlot;
205
208
  return {
206
209
  path: path,
207
210
  unit: adUnit
@@ -219,33 +222,33 @@ function getBidRequestData(reqBidsConfigObj, callback, config, userConsent) {
219
222
  const dataSite = _config.getConfig('ortb2.site.ext.data') || {};
220
223
  const dataUser = _config.getConfig('ortb2.user.ext.data') || {};
221
224
 
222
- utils._each(response, (v0, k0) => {
225
+ _each(response, (v0, k0) => {
223
226
  if (k0 == '_') return;
224
227
  const k = SEGMENT_HISTORIC[k0] || k0;
225
228
  const v = val(v0, k0);
226
- utils.deepSetValue(k == k0 ? dataUser : dataSite, `${MODULE_NAME}_rtd.${k}`, v);
229
+ deepSetValue(k == k0 ? dataUser : dataSite, `${MODULE_NAME}_rtd.${k}`, v);
227
230
  });
228
- utils.deepSetValue(dataSite, `${MODULE_NAME}_rtd.ok`, true);
231
+ deepSetValue(dataSite, `${MODULE_NAME}_rtd.ok`, true);
229
232
 
230
- utils.deepSetValue(ortb2, 'site.ext.data', dataSite);
231
- utils.deepSetValue(ortb2, 'user.ext.data', dataUser);
233
+ deepSetValue(ortb2, 'site.ext.data', dataSite);
234
+ deepSetValue(ortb2, 'user.ext.data', dataUser);
232
235
  _config.setConfig({ ortb2 });
233
236
 
234
237
  adUnits.forEach((adUnit, i) => {
235
- utils._each(response['_'][i], (v0, k0) => {
238
+ _each(response['_'][i], (v0, k0) => {
236
239
  const k = SEGMENT_HISTORIC[k0] || k0;
237
240
  const v = val(v0, k0);
238
- utils.deepSetValue(adUnit.unit, `ortb2Imp.ext.data.${MODULE_NAME}_rtd.${k}`, v);
241
+ deepSetValue(adUnit.unit, `ortb2Imp.ext.data.${MODULE_NAME}_rtd.${k}`, v);
239
242
  });
240
243
  });
241
244
  };
242
245
 
243
- // utils.mergeDeep does not handle merging deep arrays... (╯°□°)╯ ┻━┻
246
+ // mergeDeep does not handle merging deep arrays... (╯°□°)╯ ┻━┻
244
247
  function mergeDeep(target, ...sources) {
245
248
  function emptyValue(v) {
246
- if (utils.isPlainObject(v)) {
249
+ if (isPlainObject(v)) {
247
250
  return {};
248
- } else if (utils.isArray(v)) {
251
+ } else if (isArray(v)) {
249
252
  return [];
250
253
  } else {
251
254
  return undefined;
@@ -255,12 +258,12 @@ function getBidRequestData(reqBidsConfigObj, callback, config, userConsent) {
255
258
  if (!sources.length) return target;
256
259
  const source = sources.shift();
257
260
 
258
- if (utils.isPlainObject(target) && utils.isPlainObject(source)) {
261
+ if (isPlainObject(target) && isPlainObject(source)) {
259
262
  Object.keys(source).forEach(key => {
260
263
  if (!(key in target)) target[key] = emptyValue(source[key]);
261
264
  target[key] = target[key] !== undefined ? mergeDeep(target[key], source[key]) : source[key];
262
265
  });
263
- } else if (utils.isArray(target) && utils.isArray(source)) {
266
+ } else if (isArray(target) && isArray(source)) {
264
267
  source.forEach((v, i) => {
265
268
  if (!(i in target)) target[i] = emptyValue(v);
266
269
  target[i] = target[i] !== undefined ? mergeDeep(target[i], v) : v;
@@ -294,7 +297,7 @@ function getBidRequestData(reqBidsConfigObj, callback, config, userConsent) {
294
297
  ];
295
298
 
296
299
  if (!adUnits.length) {
297
- utils.logWarn(MODULE, 'no suitable adUnits (missing pbadslot?)');
300
+ logWarn(MODULE, 'no suitable adUnits (missing pbadslot?)');
298
301
  }
299
302
  const atfQueue = [];
300
303
  adUnits.map((adUnit, i) => {
@@ -307,7 +310,7 @@ function getBidRequestData(reqBidsConfigObj, callback, config, userConsent) {
307
310
  atf(adUnit.unit, function(x) {
308
311
  let viewable = document.visibilityState === undefined || document.visibilityState == 'visible';
309
312
  try { viewable = viewable && top.document.hasFocus() } catch (_) {}
310
- utils.logInfo(MODULE, `atf code=${adUnit.unit.code} has area=${x}, viewable=${viewable}`);
313
+ logInfo(MODULE, `atf code=${adUnit.unit.code} has area=${x}, viewable=${viewable}`);
311
314
  const atfList = []; atfList[i] = { atf: parseInt(x * 100) };
312
315
  response = mergeDeep(response, { _: atfList });
313
316
  semaphoreInc(-1);
@@ -336,12 +339,12 @@ function getBidRequestData(reqBidsConfigObj, callback, config, userConsent) {
336
339
  throw false;
337
340
  }
338
341
  } catch (_) {
339
- utils.logError(MODULE, 'unexpected response');
342
+ logError(MODULE, 'unexpected response');
340
343
  }
341
344
  semaphoreInc(-1);
342
345
  },
343
346
  error: function(statusText, q) {
344
- utils.logError(MODULE, 'request failed');
347
+ logError(MODULE, 'request failed');
345
348
  semaphoreInc(-1);
346
349
  }
347
350
  });
@@ -350,8 +353,8 @@ function getBidRequestData(reqBidsConfigObj, callback, config, userConsent) {
350
353
 
351
354
  function getTargetingData(adUnitArray, config, userConsent) {
352
355
  function targetingNormalise(v) {
353
- if (utils.isArray(v) && v.length == 0) return undefined;
354
- if (utils.isBoolean(v)) v = ~~v;
356
+ if (isArray(v) && v.length == 0) return undefined;
357
+ if (isBoolean(v)) v = ~~v;
355
358
  if (!v) return undefined; // empty string and zero
356
359
  return v;
357
360
  }
@@ -363,14 +366,14 @@ function getTargetingData(adUnitArray, config, userConsent) {
363
366
  return getGlobal().adUnits.filter(adUnit => includes(adUnitArray, adUnit.code)).reduce((a, adUnit) => {
364
367
  a[adUnit.code] = {};
365
368
 
366
- utils._each(dataSite, (v0, k) => {
369
+ _each(dataSite, (v0, k) => {
367
370
  if (includes(SEGMENT_HISTORIC_VALUES, k)) return; // ignore site average viewability
368
371
  const v = targetingNormalise(v0);
369
372
  if (v) a[adUnit.code][ADSERVER_TARGETING_PREFIX + k] = v;
370
373
  });
371
374
 
372
- const adUnitSegments = utils.deepAccess(adUnit, `ortb2Imp.ext.data.${MODULE_NAME}_rtd`, {});
373
- utils._each(Object.assign({}, dataUser, adUnitSegments), (v0, k) => {
375
+ const adUnitSegments = deepAccess(adUnit, `ortb2Imp.ext.data.${MODULE_NAME}_rtd`, {});
376
+ _each(Object.assign({}, dataUser, adUnitSegments), (v0, k) => {
374
377
  const v = targetingNormalise(v0);
375
378
  if (v) a[adUnit.code][ADSERVER_TARGETING_PREFIX + k] = v;
376
379
  });
@@ -1,6 +1,6 @@
1
1
  import {registerBidder} from '../src/adapters/bidderFactory.js';
2
2
  import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
3
- import * as utils from '../src/utils.js';
3
+ import { isFn, deepAccess, logMessage } from '../src/utils.js';
4
4
 
5
5
  const BIDDER_CODE = 'adman';
6
6
  const AD_URL = 'https://pub.admanmedia.com/?c=o&m=multi';
@@ -24,8 +24,8 @@ function isBidResponseValid(bid) {
24
24
  }
25
25
 
26
26
  function getBidFloor(bid) {
27
- if (!utils.isFn(bid.getFloor)) {
28
- return utils.deepAccess(bid, 'params.bidfloor', 0);
27
+ if (!isFn(bid.getFloor)) {
28
+ return deepAccess(bid, 'params.bidfloor', 0);
29
29
  }
30
30
 
31
31
  try {
@@ -69,7 +69,7 @@ export const spec = {
69
69
  winTop = window.top;
70
70
  } catch (e) {
71
71
  location = winTop.location;
72
- utils.logMessage(e);
72
+ logMessage(e);
73
73
  };
74
74
  let placements = [];
75
75
  let request = {
@@ -1,4 +1,4 @@
1
- import * as utils from '../src/utils.js';
1
+ import { logError } from '../src/utils.js';
2
2
  import {registerBidder} from '../src/adapters/bidderFactory.js';
3
3
  import {config} from '../src/config.js';
4
4
 
@@ -19,9 +19,20 @@ export const spec = {
19
19
  * Make a server request from the list of BidRequests.
20
20
  */
21
21
  buildRequests: function (validRequest, bidderRequest) {
22
+ let w;
23
+ let docRef;
24
+ do {
25
+ w = w ? w.parent : window;
26
+ try {
27
+ docRef = w.document.referrer;
28
+ } catch (e) {
29
+ break;
30
+ }
31
+ } while (w !== window.top);
22
32
  const payload = {
23
33
  imps: [],
24
34
  ortb2: config.getConfig('ortb2'),
35
+ docReferrer: docRef,
25
36
  };
26
37
  let endpointUrl;
27
38
  if (bidderRequest) {
@@ -61,7 +72,7 @@ export const spec = {
61
72
  const {body: {ads = []} = {}} = serverResponse;
62
73
  ads.forEach((ad) => bidResponses.push(ad));
63
74
  } catch (e) {
64
- utils.logError(e);
75
+ logError(e);
65
76
  }
66
77
  return bidResponses;
67
78
  },
@@ -5,7 +5,7 @@
5
5
  * @requires module:modules/userId
6
6
  */
7
7
 
8
- import * as utils from '../src/utils.js'
8
+ import { logError, logInfo } from '../src/utils.js'
9
9
  import { ajax } from '../src/ajax.js';
10
10
  import { submodule } from '../src/hook.js';
11
11
  import {getStorageManager} from '../src/storageManager.js';
@@ -43,13 +43,13 @@ export const admixerIdSubmodule = {
43
43
  getId(config, consentData) {
44
44
  const {e, p, pid} = (config && config.params) || {};
45
45
  if (!pid || typeof pid !== 'string') {
46
- utils.logError('admixerId submodule requires partner id to be defined');
46
+ logError('admixerId submodule requires partner id to be defined');
47
47
  return;
48
48
  }
49
49
  const gdpr = (consentData && typeof consentData.gdprApplies === 'boolean' && consentData.gdprApplies) ? 1 : 0;
50
50
  const consentString = gdpr ? consentData.consentString : '';
51
51
  if (gdpr && !consentString) {
52
- utils.logInfo('Consent string is required to call admixer id.');
52
+ logInfo('Consent string is required to call admixer id.');
53
53
  return;
54
54
  }
55
55
  const url = `https://inv-nets.admixer.net/cntcm.aspx?ssp=${pid}${e ? `&e=${e}` : ''}${p ? `&p=${p}` : ''}${consentString ? `&cs=${consentString}` : ''}`;
@@ -83,7 +83,7 @@ function retrieveVisitorId(url, callback) {
83
83
  }
84
84
  },
85
85
  error: error => {
86
- utils.logInfo(`admixerId: fetch encountered an error`, error);
86
+ logInfo(`admixerId: fetch encountered an error`, error);
87
87
  callback();
88
88
  }
89
89
  }, undefined, { method: 'GET', withCredentials: true });
@@ -1,6 +1,6 @@
1
1
  import { registerBidder } from '../src/adapters/bidderFactory.js';
2
2
  import { NATIVE, BANNER } from '../src/mediaTypes.js';
3
- import * as utils from '../src/utils.js';
3
+ import { parseSizesInput, deepAccess, parseQueryStringParameters } from '../src/utils.js';
4
4
  import includes from 'core-js-pure/features/array/includes.js';
5
5
 
6
6
  const BIDDER_CODE = 'adnow';
@@ -61,13 +61,13 @@ export const spec = {
61
61
  };
62
62
 
63
63
  if (mediaType === BANNER) {
64
- data.sizes = utils.parseSizesInput(
64
+ data.sizes = parseSizesInput(
65
65
  req.mediaTypes && req.mediaTypes.banner && req.mediaTypes.banner.sizes
66
66
  ).join('|')
67
67
  } else {
68
68
  data.width = data.height = 200;
69
69
 
70
- let sizes = utils.deepAccess(req, 'mediaTypes.native.image.sizes', []);
70
+ let sizes = deepAccess(req, 'mediaTypes.native.image.sizes', []);
71
71
 
72
72
  if (sizes.length > 0) {
73
73
  const size = Array.isArray(sizes[0]) ? sizes[0] : sizes;
@@ -81,7 +81,7 @@ export const spec = {
81
81
  return {
82
82
  method: 'GET',
83
83
  url: ENDPOINT,
84
- data: utils.parseQueryStringParameters(data),
84
+ data: parseQueryStringParameters(data),
85
85
  options: {
86
86
  withCredentials: false,
87
87
  crossOrigin: true
@@ -1,6 +1,6 @@
1
1
  import { registerBidder } from '../src/adapters/bidderFactory.js';
2
2
  import { BANNER } from '../src/mediaTypes.js';
3
- import * as utils from '../src/utils.js';
3
+ import { isStr, deepAccess } from '../src/utils.js';
4
4
  import { config } from '../src/config.js';
5
5
  import { getStorageManager } from '../src/storageManager.js';
6
6
 
@@ -9,12 +9,12 @@ const ENDPOINT_URL = 'https://ads.adnuntius.delivery/i';
9
9
  const GVLID = 855;
10
10
 
11
11
  const checkSegment = function (segment) {
12
- if (utils.isStr(segment)) return segment;
12
+ if (isStr(segment)) return segment;
13
13
  if (segment.id) return segment.id
14
14
  }
15
15
 
16
16
  const getSegmentsFromOrtb = function (ortb2) {
17
- const userData = utils.deepAccess(ortb2, 'user.data');
17
+ const userData = deepAccess(ortb2, 'user.data');
18
18
  let segments = [];
19
19
  if (userData) {
20
20
  userData.forEach(userdat => {
@@ -59,8 +59,8 @@ export const spec = {
59
59
  const usi = getUsi(adnMeta, ortb2, bidderRequest)
60
60
  const segments = getSegmentsFromOrtb(ortb2);
61
61
  const tzo = new Date().getTimezoneOffset();
62
- const gdprApplies = utils.deepAccess(bidderRequest, 'gdprConsent.gdprApplies');
63
- const consentString = utils.deepAccess(bidderRequest, 'gdprConsent.consentString');
62
+ const gdprApplies = deepAccess(bidderRequest, 'gdprConsent.gdprApplies');
63
+ const consentString = deepAccess(bidderRequest, 'gdprConsent.consentString');
64
64
 
65
65
  request.push('tzo=' + tzo)
66
66
  request.push('format=json')
@@ -112,6 +112,7 @@ export const spec = {
112
112
  height: Number(ad.creativeHeight),
113
113
  creativeId: ad.creativeId,
114
114
  currency: (ad.bid) ? ad.bid.currency : 'EUR',
115
+ dealId: ad.dealId || '',
115
116
  meta: {
116
117
  advertiserDomains: (ad.destinationUrls.destination) ? [ad.destinationUrls.destination.split('/')[2]] : []
117
118
 
@@ -1,11 +1,11 @@
1
- import * as utils from '../src/utils.js';
1
+ import { _each, parseSizesInput, isStr, isArray } from '../src/utils.js';
2
2
  import { registerBidder } from '../src/adapters/bidderFactory.js';
3
3
 
4
4
  const BIDDER_CODE = 'adocean';
5
5
 
6
6
  function buildEndpointUrl(emiter, payloadMap) {
7
7
  const payload = [];
8
- utils._each(payloadMap, function(v, k) {
8
+ _each(payloadMap, function(v, k) {
9
9
  payload.push(k + '=' + encodeURIComponent(v));
10
10
  });
11
11
 
@@ -26,12 +26,12 @@ function buildRequest(masterBidRequests, masterId, gdprConsent) {
26
26
 
27
27
  const bidIdMap = {};
28
28
 
29
- utils._each(masterBidRequests, function(bid, slaveId) {
29
+ _each(masterBidRequests, function(bid, slaveId) {
30
30
  if (!emiter) {
31
31
  emiter = bid.params.emiter;
32
32
  }
33
33
 
34
- const slaveSizes = utils.parseSizesInput(bid.mediaTypes.banner.sizes).join('_');
34
+ const slaveSizes = parseSizesInput(bid.mediaTypes.banner.sizes).join('_');
35
35
  const rawSlaveId = bid.params.slaveId.replace('adocean', '');
36
36
  payload.aosspsizes.push(rawSlaveId + '~' + slaveSizes);
37
37
 
@@ -95,7 +95,7 @@ export const spec = {
95
95
 
96
96
  isBidRequestValid: function(bid) {
97
97
  const requiredParams = ['slaveId', 'masterId', 'emiter'];
98
- if (requiredParams.some(name => !utils.isStr(bid.params[name]) || !bid.params[name].length)) {
98
+ if (requiredParams.some(name => !isStr(bid.params[name]) || !bid.params[name].length)) {
99
99
  return false;
100
100
  }
101
101
 
@@ -106,12 +106,12 @@ export const spec = {
106
106
  const bidRequestsByMaster = {};
107
107
  let requests = [];
108
108
 
109
- utils._each(validBidRequests, function(bidRequest) {
109
+ _each(validBidRequests, function(bidRequest) {
110
110
  assignToMaster(bidRequest, bidRequestsByMaster);
111
111
  });
112
112
 
113
- utils._each(bidRequestsByMaster, function(masterRequests, masterId) {
114
- utils._each(masterRequests, function(instanceRequests) {
113
+ _each(bidRequestsByMaster, function(masterRequests, masterId) {
114
+ _each(masterRequests, function(instanceRequests) {
115
115
  requests.push(buildRequest(instanceRequests, masterId, bidderRequest.gdprConsent));
116
116
  });
117
117
  });
@@ -122,8 +122,8 @@ export const spec = {
122
122
  interpretResponse: function(serverResponse, bidRequest) {
123
123
  let bids = [];
124
124
 
125
- if (utils.isArray(serverResponse.body)) {
126
- utils._each(serverResponse.body, function(placementResponse) {
125
+ if (isArray(serverResponse.body)) {
126
+ _each(serverResponse.body, function(placementResponse) {
127
127
  interpretResponse(placementResponse, bidRequest, bids);
128
128
  });
129
129
  }