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
@@ -5,11 +5,10 @@ import adapter from '../src/AnalyticsAdapter.js';
5
5
  import CONSTANTS from '../src/constants.json';
6
6
  import adapterManager from '../src/adapterManager.js';
7
7
  import { getStorageManager } from '../src/storageManager.js';
8
+ import { generateUUID, logInfo, logError } from '../src/utils.js';
8
9
 
9
10
  const storage = getStorageManager();
10
11
 
11
- const utils = require('../src/utils.js');
12
-
13
12
  const url = 'https://kinesis.us-east-1.amazonaws.com/';
14
13
  const analyticsType = 'endpoint';
15
14
 
@@ -56,7 +55,7 @@ function buildSessionIdTimeoutLocalStorageKey() {
56
55
 
57
56
  function updateSessionId() {
58
57
  if (isSessionIdTimeoutExpired()) {
59
- let newSessionId = utils.generateUUID();
58
+ let newSessionId = generateUUID();
60
59
  storage.setDataInLocalStorage(buildSessionIdLocalStorageKey(), newSessionId);
61
60
  }
62
61
  initOptions.sessionId = getSessionId();
@@ -206,7 +205,7 @@ sigmoidAdapter.originEnableAnalytics = sigmoidAdapter.enableAnalytics;
206
205
  sigmoidAdapter.enableAnalytics = function (config) {
207
206
  initOptions = config.options;
208
207
  initOptions.utmTagData = this.buildUtmTagData();
209
- utils.logInfo('Sigmoid Analytics enabled with config', initOptions);
208
+ logInfo('Sigmoid Analytics enabled with config', initOptions);
210
209
  sigmoidAdapter.originEnableAnalytics(config);
211
210
  };
212
211
 
@@ -246,7 +245,7 @@ function send(eventType, data, sendDataType) {
246
245
  AWS.config.credentials.get(function(err) {
247
246
  // attach event listener
248
247
  if (err) {
249
- utils.logError(err);
248
+ logError(err);
250
249
  return;
251
250
  }
252
251
  // create kinesis service object
@@ -7,7 +7,7 @@
7
7
  * @requires module:modules/realTimeData
8
8
  */
9
9
  import {getGlobal} from '../src/prebidGlobal.js';
10
- import * as utils from '../src/utils.js';
10
+ import { deepAccess, logError, deepEqual, deepSetValue, isEmpty, mergeDeep } from '../src/utils.js';
11
11
  import {submodule} from '../src/hook.js';
12
12
  import {ajax} from '../src/ajax.js';
13
13
  import findIndex from 'core-js-pure/features/array/find-index.js';
@@ -44,7 +44,7 @@ export function getSegmentsAndCategories(reqBidsConfigObj, onDone, moduleConfig,
44
44
  }
45
45
 
46
46
  // default global endpoint is cookie-based if no rules falls into cookieless or consent has been given or GDPR doesn't apply
47
- if (!sirdataDomain || !gdprApplies || (utils.deepAccess(userConsent, 'gdpr.vendorData.vendor.consents') && userConsent.gdpr.vendorData.vendor.consents[53] && userConsent.gdpr.vendorData.purpose.consents[1] && userConsent.gdpr.vendorData.purpose.consents[4])) {
47
+ if (!sirdataDomain || !gdprApplies || (deepAccess(userConsent, 'gdpr.vendorData.vendor.consents') && userConsent.gdpr.vendorData.vendor.consents[53] && userConsent.gdpr.vendorData.purpose.consents[1] && userConsent.gdpr.vendorData.purpose.consents[4])) {
48
48
  sirdataDomain = 'sddan.com';
49
49
  sendWithCredentials = true;
50
50
  }
@@ -64,7 +64,7 @@ export function getSegmentsAndCategories(reqBidsConfigObj, onDone, moduleConfig,
64
64
  }
65
65
  } catch (e) {
66
66
  onDone();
67
- utils.logError('unable to parse Sirdata data' + e);
67
+ logError('unable to parse Sirdata data' + e);
68
68
  }
69
69
  } else if (req.status === 204) {
70
70
  onDone();
@@ -72,7 +72,7 @@ export function getSegmentsAndCategories(reqBidsConfigObj, onDone, moduleConfig,
72
72
  },
73
73
  error: function () {
74
74
  onDone();
75
- utils.logError('unable to get Sirdata data');
75
+ logError('unable to get Sirdata data');
76
76
  }
77
77
  },
78
78
  null,
@@ -89,18 +89,18 @@ export function setGlobalOrtb2(segments, categories) {
89
89
  try {
90
90
  let addOrtb2 = {};
91
91
  let testGlobal = getGlobal().getConfig('ortb2') || {};
92
- if (!utils.deepAccess(testGlobal, 'user.ext.data.sd_rtd') || !utils.deepEqual(testGlobal.user.ext.data.sd_rtd, segments)) {
93
- utils.deepSetValue(addOrtb2, 'user.ext.data.sd_rtd', segments || {});
92
+ if (!deepAccess(testGlobal, 'user.ext.data.sd_rtd') || !deepEqual(testGlobal.user.ext.data.sd_rtd, segments)) {
93
+ deepSetValue(addOrtb2, 'user.ext.data.sd_rtd', segments || {});
94
94
  }
95
- if (!utils.deepAccess(testGlobal, 'site.ext.data.sd_rtd') || !utils.deepEqual(testGlobal.site.ext.data.sd_rtd, categories)) {
96
- utils.deepSetValue(addOrtb2, 'site.ext.data.sd_rtd', categories || {});
95
+ if (!deepAccess(testGlobal, 'site.ext.data.sd_rtd') || !deepEqual(testGlobal.site.ext.data.sd_rtd, categories)) {
96
+ deepSetValue(addOrtb2, 'site.ext.data.sd_rtd', categories || {});
97
97
  }
98
- if (!utils.isEmpty(addOrtb2)) {
99
- let ortb2 = {ortb2: utils.mergeDeep({}, testGlobal, addOrtb2)};
98
+ if (!isEmpty(addOrtb2)) {
99
+ let ortb2 = {ortb2: mergeDeep({}, testGlobal, addOrtb2)};
100
100
  getGlobal().setConfig(ortb2);
101
101
  }
102
102
  } catch (e) {
103
- utils.logError(e)
103
+ logError(e)
104
104
  }
105
105
 
106
106
  return true;
@@ -109,19 +109,19 @@ export function setGlobalOrtb2(segments, categories) {
109
109
  export function setBidderOrtb2(bidder, segments, categories) {
110
110
  try {
111
111
  let addOrtb2 = {};
112
- let testBidder = utils.deepAccess(config.getBidderConfig(), bidder + '.ortb2') || {};
113
- if (!utils.deepAccess(testBidder, 'user.ext.data.sd_rtd') || !utils.deepEqual(testBidder.user.ext.data.sd_rtd, segments)) {
114
- utils.deepSetValue(addOrtb2, 'user.ext.data.sd_rtd', segments || {});
112
+ let testBidder = deepAccess(config.getBidderConfig(), bidder + '.ortb2') || {};
113
+ if (!deepAccess(testBidder, 'user.ext.data.sd_rtd') || !deepEqual(testBidder.user.ext.data.sd_rtd, segments)) {
114
+ deepSetValue(addOrtb2, 'user.ext.data.sd_rtd', segments || {});
115
115
  }
116
- if (!utils.deepAccess(testBidder, 'site.ext.data.sd_rtd') || !utils.deepEqual(testBidder.site.ext.data.sd_rtd, categories)) {
117
- utils.deepSetValue(addOrtb2, 'site.ext.data.sd_rtd', categories || {});
116
+ if (!deepAccess(testBidder, 'site.ext.data.sd_rtd') || !deepEqual(testBidder.site.ext.data.sd_rtd, categories)) {
117
+ deepSetValue(addOrtb2, 'site.ext.data.sd_rtd', categories || {});
118
118
  }
119
- if (!utils.isEmpty(addOrtb2)) {
120
- let ortb2 = {ortb2: utils.mergeDeep({}, testBidder, addOrtb2)};
119
+ if (!isEmpty(addOrtb2)) {
120
+ let ortb2 = {ortb2: mergeDeep({}, testBidder, addOrtb2)};
121
121
  getGlobal().setBidderConfig({ bidders: [bidder], config: ortb2 });
122
122
  }
123
123
  } catch (e) {
124
- utils.logError(e)
124
+ logError(e)
125
125
  }
126
126
 
127
127
  return true;
@@ -132,7 +132,7 @@ export function loadCustomFunction (todo, adUnit, list, data, bid) {
132
132
  if (typeof todo == 'function') {
133
133
  todo(adUnit, list, data, bid);
134
134
  }
135
- } catch (e) { utils.logError(e); }
135
+ } catch (e) { logError(e); }
136
136
  return true;
137
137
  }
138
138
 
@@ -148,14 +148,14 @@ export function getSegAndCatsArray(data, minScore) {
148
148
  }
149
149
  }
150
150
  }
151
- } catch (e) { utils.logError(e); }
151
+ } catch (e) { logError(e); }
152
152
  try {
153
153
  if (data && data.segments) {
154
154
  for (let segId in data.segments) {
155
155
  sirdataData.segments.push(data.segments[segId].toString());
156
156
  }
157
157
  }
158
- } catch (e) { utils.logError(e); }
158
+ } catch (e) { logError(e); }
159
159
  return sirdataData;
160
160
  }
161
161
 
@@ -165,7 +165,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) {
165
165
  const globalMinScore = moduleConfig.params.hasOwnProperty('contextualMinRelevancyScore') ? moduleConfig.params.contextualMinRelevancyScore : 30;
166
166
  var sirdataData = getSegAndCatsArray(data, globalMinScore);
167
167
 
168
- if (!sirdataData || (sirdataData.segments.length < 1 && sirdataData.categories.length < 1)) { utils.logError('no cats'); onDone(); return adUnits; }
168
+ if (!sirdataData || (sirdataData.segments.length < 1 && sirdataData.categories.length < 1)) { logError('no cats'); onDone(); return adUnits; }
169
169
 
170
170
  const sirdataList = sirdataData.segments.concat(sirdataData.categories);
171
171
 
@@ -191,7 +191,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) {
191
191
  n.setTargeting('sd_rtd', sirdataList.concat(curationData.segments).concat(curationData.categories));
192
192
  }
193
193
  })
194
- } catch (e) { utils.logError(e); }
194
+ } catch (e) { logError(e); }
195
195
  }
196
196
 
197
197
  // Bid targeting level for FPD non-generic biders
@@ -199,8 +199,8 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) {
199
199
  var indexFound = false;
200
200
 
201
201
  adUnits.forEach(adUnit => {
202
- if (!biddersParamsExist && !utils.deepAccess(adUnit, 'ortb2Imp.ext.data.sd_rtd')) {
203
- utils.deepSetValue(adUnit, 'ortb2Imp.ext.data.sd_rtd', sirdataList);
202
+ if (!biddersParamsExist && !deepAccess(adUnit, 'ortb2Imp.ext.data.sd_rtd')) {
203
+ deepSetValue(adUnit, 'ortb2Imp.ext.data.sd_rtd', sirdataList);
204
204
  }
205
205
 
206
206
  adUnit.hasOwnProperty('bids') && adUnit.bids.forEach(bid => {
@@ -236,7 +236,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) {
236
236
  if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) {
237
237
  loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataList.concat(curationData.segments).concat(curationData.categories), data, bid);
238
238
  } else {
239
- utils.deepSetValue(bid, 'params.keywords.sd_rtd', sirdataList.concat(curationData.segments).concat(curationData.categories));
239
+ deepSetValue(bid, 'params.keywords.sd_rtd', sirdataList.concat(curationData.segments).concat(curationData.categories));
240
240
  }
241
241
  break;
242
242
 
@@ -259,7 +259,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) {
259
259
  target.push('sd_rtd=' + entry);
260
260
  }
261
261
  });
262
- utils.deepSetValue(bid, 'params.target', target.join(';'));
262
+ deepSetValue(bid, 'params.target', target.join(';'));
263
263
  }
264
264
  break;
265
265
 
@@ -313,7 +313,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) {
313
313
  if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) {
314
314
  loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataList.concat(curationData.segments).concat(curationData.categories), data, bid);
315
315
  } else {
316
- utils.deepSetValue(bid, 'ortb2.user.ext.data', {segments: sirdataData.segments.concat(curationData.segments), contextual_categories: {...data.contextual_categories, ...data.shared_taxonomy[curationId].contextual_categories}});
316
+ deepSetValue(bid, 'ortb2.user.ext.data', {segments: sirdataData.segments.concat(curationData.segments), contextual_categories: {...data.contextual_categories, ...data.shared_taxonomy[curationId].contextual_categories}});
317
317
  }
318
318
  break;
319
319
 
@@ -372,16 +372,16 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) {
372
372
 
373
373
  default:
374
374
  if (!biddersParamsExist || indexFound) {
375
- if (!utils.deepAccess(bid, 'ortb2.site.ext.data.sd_rtd')) {
376
- utils.deepSetValue(bid, 'ortb2.site.ext.data.sd_rtd', sirdataData.categories);
375
+ if (!deepAccess(bid, 'ortb2.site.ext.data.sd_rtd')) {
376
+ deepSetValue(bid, 'ortb2.site.ext.data.sd_rtd', sirdataData.categories);
377
377
  }
378
- if (!utils.deepAccess(bid, 'ortb2.user.ext.data.sd_rtd')) {
379
- utils.deepSetValue(bid, 'ortb2.user.ext.data.sd_rtd', sirdataData.segments);
378
+ if (!deepAccess(bid, 'ortb2.user.ext.data.sd_rtd')) {
379
+ deepSetValue(bid, 'ortb2.user.ext.data.sd_rtd', sirdataData.segments);
380
380
  }
381
381
  }
382
382
  }
383
383
  }
384
- } catch (e) { utils.logError(e) }
384
+ } catch (e) { logError(e) }
385
385
  })
386
386
  });
387
387
 
@@ -4,7 +4,7 @@
4
4
  * rendering. Read full API documentation on Prebid.org, http://prebid.org/dev-docs/modules/sizeMappingV2.html
5
5
  */
6
6
 
7
- import * as utils from '../src/utils.js';
7
+ import { isArray, logError, isArrayOfNums, deepClone, logWarn, getWindowTop, deepEqual, logInfo, isValidMediaTypes, deepAccess, getDefinedParams, getUniqueIdentifierStr, flatten } from '../src/utils.js';
8
8
  import { processNativeAdUnitParams } from '../src/native.js';
9
9
  import { adunitCounter } from '../src/adUnits.js';
10
10
  import includes from 'core-js-pure/features/array/includes.js';
@@ -66,7 +66,7 @@ export function isUsingNewSizeMapping(adUnits) {
66
66
  });
67
67
 
68
68
  // checks for the presence of sizeConfig property at the adUnit.bids[].bidder object
69
- adUnit.bids && utils.isArray(adUnit.bids) && adUnit.bids.forEach(bidder => {
69
+ adUnit.bids && isArray(adUnit.bids) && adUnit.bids.forEach(bidder => {
70
70
  if (bidder.sizeConfig) {
71
71
  if (isUsingSizeMappingBool === false) {
72
72
  isUsingSizeMappingBool = true;
@@ -108,7 +108,7 @@ export function checkAdUnitSetupHook(adUnits) {
108
108
  If they do not, return 'false'.
109
109
  */
110
110
  if (!(includes(keys, 'minViewPort') && includes(keys, propertyName))) {
111
- utils.logError(`Ad unit ${adUnitCode}: Missing required property 'minViewPort' or 'sizes' from 'mediaTypes.${mediaType}.sizeConfig[${index}]'. ${conditionalLogMessages[mediaType]}`);
111
+ logError(`Ad unit ${adUnitCode}: Missing required property 'minViewPort' or 'sizes' from 'mediaTypes.${mediaType}.sizeConfig[${index}]'. ${conditionalLogMessages[mediaType]}`);
112
112
  isValid = false;
113
113
  return;
114
114
  }
@@ -117,8 +117,8 @@ export function checkAdUnitSetupHook(adUnits) {
117
117
  Verify that 'config.minViewPort' property is in [width, height] format.
118
118
  If not, return false.
119
119
  */
120
- if (!utils.isArrayOfNums(config.minViewPort, 2)) {
121
- utils.logError(`Ad unit ${adUnitCode}: Invalid declaration of 'minViewPort' in 'mediaTypes.${mediaType}.sizeConfig[${index}]'. ${conditionalLogMessages[mediaType]}`);
120
+ if (!isArrayOfNums(config.minViewPort, 2)) {
121
+ logError(`Ad unit ${adUnitCode}: Invalid declaration of 'minViewPort' in 'mediaTypes.${mediaType}.sizeConfig[${index}]'. ${conditionalLogMessages[mediaType]}`);
122
122
  isValid = false
123
123
  return;
124
124
  }
@@ -141,7 +141,7 @@ export function checkAdUnitSetupHook(adUnits) {
141
141
  showError = true;
142
142
  }
143
143
  if (showError) {
144
- utils.logError(`Ad unit ${adUnitCode}: Invalid declaration of '${propertyName}' in 'mediaTypes.${mediaType}.sizeConfig[${index}]'. ${conditionalLogMessages[mediaType]}`);
144
+ logError(`Ad unit ${adUnitCode}: Invalid declaration of '${propertyName}' in 'mediaTypes.${mediaType}.sizeConfig[${index}]'. ${conditionalLogMessages[mediaType]}`);
145
145
  return;
146
146
  }
147
147
  }
@@ -152,13 +152,13 @@ export function checkAdUnitSetupHook(adUnits) {
152
152
  */
153
153
  if (mediaType === 'native') {
154
154
  if (typeof config[propertyName] !== 'boolean') {
155
- utils.logError(`Ad unit ${adUnitCode}: Invalid declaration of 'active' in 'mediaTypes.${mediaType}.sizeConfig[${index}]'. ${conditionalLogMessages[mediaType]}`);
155
+ logError(`Ad unit ${adUnitCode}: Invalid declaration of 'active' in 'mediaTypes.${mediaType}.sizeConfig[${index}]'. ${conditionalLogMessages[mediaType]}`);
156
156
  isValid = false;
157
157
  }
158
158
  }
159
159
  });
160
160
  } else {
161
- utils.logError(`Ad unit ${adUnitCode}: Invalid declaration of 'sizeConfig' in 'mediaTypes.${mediaType}.sizeConfig'. ${conditionalLogMessages[mediaType]}`);
161
+ logError(`Ad unit ${adUnitCode}: Invalid declaration of 'sizeConfig' in 'mediaTypes.${mediaType}.sizeConfig'. ${conditionalLogMessages[mediaType]}`);
162
162
  isValid = false;
163
163
  return isValid;
164
164
  }
@@ -172,13 +172,13 @@ export function checkAdUnitSetupHook(adUnits) {
172
172
  const mediaTypes = adUnit.mediaTypes;
173
173
  let validatedBanner, validatedVideo, validatedNative;
174
174
 
175
- if (!bids || !utils.isArray(bids)) {
176
- utils.logError(`Detected adUnit.code '${adUnit.code}' did not have 'adUnit.bids' defined or 'adUnit.bids' is not an array. Removing adUnit from auction.`);
175
+ if (!bids || !isArray(bids)) {
176
+ logError(`Detected adUnit.code '${adUnit.code}' did not have 'adUnit.bids' defined or 'adUnit.bids' is not an array. Removing adUnit from auction.`);
177
177
  return;
178
178
  }
179
179
 
180
180
  if (!mediaTypes || Object.keys(mediaTypes).length === 0) {
181
- utils.logError(`Detected adUnit.code '${adUnit.code}' did not have a 'mediaTypes' object defined. This is a required field for the auction, so this adUnit has been removed.`);
181
+ logError(`Detected adUnit.code '${adUnit.code}' did not have a 'mediaTypes' object defined. This is a required field for the auction, so this adUnit has been removed.`);
182
182
  return;
183
183
  }
184
184
  if (mediaTypes.banner) {
@@ -187,7 +187,7 @@ export function checkAdUnitSetupHook(adUnits) {
187
187
  validatedBanner = adUnitSetupChecks.validateBannerMediaType(adUnit);
188
188
  } else if (mediaTypes.banner.sizeConfig) {
189
189
  // Ad unit is using the 'sizeConfig' property, 'mediaTypes.banner.sizeConfig'. Apply the new checks!
190
- validatedBanner = utils.deepClone(adUnit);
190
+ validatedBanner = deepClone(adUnit);
191
191
  const isBannerValid = validateSizeConfig('banner', mediaTypes.banner.sizeConfig, adUnit.code);
192
192
  if (!isBannerValid) {
193
193
  delete validatedBanner.mediaTypes.banner;
@@ -204,8 +204,8 @@ export function checkAdUnitSetupHook(adUnits) {
204
204
  }
205
205
  } else {
206
206
  // Ad unit is invalid since it's mediaType property does not have either 'sizes' or 'sizeConfig' declared.
207
- utils.logError(`Ad unit ${adUnit.code}: 'mediaTypes.banner' does not contain either 'sizes' or 'sizeConfig' property. Removing 'mediaTypes.banner' from ad unit.`);
208
- validatedBanner = utils.deepClone(adUnit);
207
+ logError(`Ad unit ${adUnit.code}: 'mediaTypes.banner' does not contain either 'sizes' or 'sizeConfig' property. Removing 'mediaTypes.banner' from ad unit.`);
208
+ validatedBanner = deepClone(adUnit);
209
209
  delete validatedBanner.mediaTypes.banner;
210
210
  }
211
211
  }
@@ -216,7 +216,7 @@ export function checkAdUnitSetupHook(adUnits) {
216
216
  validatedVideo = validatedBanner ? adUnitSetupChecks.validateVideoMediaType(validatedBanner) : adUnitSetupChecks.validateVideoMediaType(adUnit);
217
217
  } else if (mediaTypes.video.sizeConfig) {
218
218
  // Ad unit is using the 'sizeConfig' property, 'mediaTypes.video.sizeConfig'. Apply the new checks!
219
- validatedVideo = validatedBanner || utils.deepClone(adUnit);
219
+ validatedVideo = validatedBanner || deepClone(adUnit);
220
220
  const isVideoValid = validateSizeConfig('video', mediaTypes.video.sizeConfig, adUnit.code);
221
221
  if (!isVideoValid) {
222
222
  delete validatedVideo.mediaTypes.video.sizeConfig;
@@ -274,7 +274,7 @@ export function checkBidderSizeConfigFormat(sizeConfig) {
274
274
  const keys = Object.keys(config);
275
275
  if ((includes(keys, 'minViewPort') &&
276
276
  includes(keys, 'relevantMediaTypes')) &&
277
- utils.isArrayOfNums(config.minViewPort, 2) &&
277
+ isArrayOfNums(config.minViewPort, 2) &&
278
278
  Array.isArray(config.relevantMediaTypes) &&
279
279
  config.relevantMediaTypes.length > 0 &&
280
280
  (config.relevantMediaTypes.length > 1 ? (config.relevantMediaTypes.every(mt => (includes(['banner', 'video', 'native'], mt))))
@@ -322,14 +322,14 @@ export function isLabelActivated(bidOrAdUnit, activeLabels, adUnitCode, adUnitIn
322
322
  let labelOperator;
323
323
  const labelsFound = Object.keys(bidOrAdUnit).filter(prop => prop === 'labelAny' || prop === 'labelAll');
324
324
  if (labelsFound && labelsFound.length > 1) {
325
- utils.logWarn(`Size Mapping V2:: ${(bidOrAdUnit.code)
325
+ logWarn(`Size Mapping V2:: ${(bidOrAdUnit.code)
326
326
  ? (`Ad Unit: ${bidOrAdUnit.code}(${adUnitInstance}) => Ad unit has multiple label operators. Using the first declared operator: ${labelsFound[0]}`)
327
327
  : (`Ad Unit: ${adUnitCode}(${adUnitInstance}), Bidder: ${bidOrAdUnit.bidder} => Bidder has multiple label operators. Using the first declared operator: ${labelsFound[0]}`)}`);
328
328
  }
329
329
  labelOperator = labelsFound[0];
330
330
 
331
331
  if (labelOperator && !activeLabels) {
332
- utils.logWarn(`Size Mapping V2:: ${(bidOrAdUnit.code)
332
+ logWarn(`Size Mapping V2:: ${(bidOrAdUnit.code)
333
333
  ? (`Ad Unit: ${bidOrAdUnit.code}(${adUnitInstance}) => Found '${labelOperator}' on ad unit, but 'labels' is not set. Did you pass 'labels' to pbjs.requestBids() ?`)
334
334
  : (`Ad Unit: ${adUnitCode}(${adUnitInstance}), Bidder: ${bidOrAdUnit.bidder} => Found '${labelOperator}' on bidder, but 'labels' is not set. Did you pass 'labels' to pbjs.requestBids() ?`)}`);
335
335
  return true;
@@ -337,13 +337,13 @@ export function isLabelActivated(bidOrAdUnit, activeLabels, adUnitCode, adUnitIn
337
337
 
338
338
  if (labelOperator === 'labelAll' && Array.isArray(bidOrAdUnit[labelOperator])) {
339
339
  if (bidOrAdUnit.labelAll.length === 0) {
340
- utils.logWarn(`Size Mapping V2:: Ad Unit: ${bidOrAdUnit.code}(${adUnitInstance}) => Ad unit has declared property 'labelAll' with an empty array.`);
340
+ logWarn(`Size Mapping V2:: Ad Unit: ${bidOrAdUnit.code}(${adUnitInstance}) => Ad unit has declared property 'labelAll' with an empty array.`);
341
341
  return true;
342
342
  }
343
343
  return bidOrAdUnit.labelAll.every(label => includes(activeLabels, label));
344
344
  } else if (labelOperator === 'labelAny' && Array.isArray(bidOrAdUnit[labelOperator])) {
345
345
  if (bidOrAdUnit.labelAny.length === 0) {
346
- utils.logWarn(`Size Mapping V2:: Ad Unit: ${bidOrAdUnit.code}(${adUnitInstance}) => Ad unit has declared property 'labelAny' with an empty array.`);
346
+ logWarn(`Size Mapping V2:: Ad Unit: ${bidOrAdUnit.code}(${adUnitInstance}) => Ad unit has declared property 'labelAny' with an empty array.`);
347
347
  return true;
348
348
  }
349
349
  return bidOrAdUnit.labelAny.some(label => includes(activeLabels, label));
@@ -363,7 +363,7 @@ export function getFilteredMediaTypes(mediaTypes) {
363
363
  activeViewportHeight,
364
364
  transformedMediaTypes;
365
365
 
366
- transformedMediaTypes = utils.deepClone(mediaTypes);
366
+ transformedMediaTypes = deepClone(mediaTypes);
367
367
 
368
368
  let activeSizeBucket = {
369
369
  banner: undefined,
@@ -372,10 +372,10 @@ export function getFilteredMediaTypes(mediaTypes) {
372
372
  }
373
373
 
374
374
  try {
375
- activeViewportWidth = utils.getWindowTop().innerWidth;
376
- activeViewportHeight = utils.getWindowTop().innerHeight;
375
+ activeViewportWidth = getWindowTop().innerWidth;
376
+ activeViewportHeight = getWindowTop().innerHeight;
377
377
  } catch (e) {
378
- utils.logWarn(`SizeMappingv2:: Unfriendly iframe blocks viewport size to be evaluated correctly`);
378
+ logWarn(`SizeMappingv2:: Unfriendly iframe blocks viewport size to be evaluated correctly`);
379
379
  activeViewportWidth = window.innerWidth;
380
380
  activeViewportHeight = window.innerHeight;
381
381
  }
@@ -490,7 +490,7 @@ export function getAdUnitDetail(auctionId, adUnit, labels) {
490
490
  const adUnitsForAuction = sizeMappingInternalStore.getAuctionDetail(auctionId).adUnits;
491
491
 
492
492
  // check if the adUnit exists already in the sizeMappingInterStore (check for equivalence of 'code' && 'mediaTypes' properties)
493
- const adUnitDetail = adUnitsForAuction.filter(adUnitDetail => adUnitDetail.adUnitCode === adUnit.code && utils.deepEqual(adUnitDetail.mediaTypes, adUnit.mediaTypes));
493
+ const adUnitDetail = adUnitsForAuction.filter(adUnitDetail => adUnitDetail.adUnitCode === adUnit.code && deepEqual(adUnitDetail.mediaTypes, adUnit.mediaTypes));
494
494
 
495
495
  if (adUnitDetail.length > 0) {
496
496
  adUnitDetail[0].cacheHits++;
@@ -514,7 +514,7 @@ export function getAdUnitDetail(auctionId, adUnit, labels) {
514
514
 
515
515
  // set adUnitDetail in sizeMappingInternalStore against the correct 'auctionId'.
516
516
  sizeMappingInternalStore.setAuctionDetail(auctionId, adUnitDetail);
517
- isLabelActivated && utils.logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}) => Active size buckets after filtration: `, sizeBucketToSizeMap);
517
+ isLabelActivated && logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}) => Active size buckets after filtration: `, sizeBucketToSizeMap);
518
518
 
519
519
  return adUnitDetail;
520
520
  }
@@ -522,13 +522,13 @@ export function getAdUnitDetail(auctionId, adUnit, labels) {
522
522
 
523
523
  export function getBids({ bidderCode, auctionId, bidderRequestId, adUnits, labels, src }) {
524
524
  return adUnits.reduce((result, adUnit) => {
525
- if (adUnit.mediaTypes && utils.isValidMediaTypes(adUnit.mediaTypes)) {
525
+ if (adUnit.mediaTypes && isValidMediaTypes(adUnit.mediaTypes)) {
526
526
  const { activeViewport, transformedMediaTypes, instance: adUnitInstance, isLabelActivated, cacheHits } = internal.getAdUnitDetail(auctionId, adUnit, labels);
527
527
  if (isLabelActivated) {
528
528
  // check if adUnit has any active media types remaining, if not drop the adUnit from auction,
529
529
  // else proceed to evaluate the bids object.
530
530
  if (Object.keys(transformedMediaTypes).length === 0) {
531
- cacheHits === 0 && utils.logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}) => Ad unit disabled since there are no active media types after sizeConfig filtration.`);
531
+ cacheHits === 0 && logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}) => Ad unit disabled since there are no active media types after sizeConfig filtration.`);
532
532
  return result;
533
533
  }
534
534
  result
@@ -536,19 +536,19 @@ export function getBids({ bidderCode, auctionId, bidderRequestId, adUnits, label
536
536
  .reduce((bids, bid) => {
537
537
  if (internal.isLabelActivated(bid, labels, adUnit.code, adUnitInstance)) {
538
538
  // handle native params
539
- const nativeParams = adUnit.nativeParams || utils.deepAccess(adUnit, 'mediaTypes.native');
539
+ const nativeParams = adUnit.nativeParams || deepAccess(adUnit, 'mediaTypes.native');
540
540
  if (nativeParams) {
541
541
  bid = Object.assign({}, bid, {
542
542
  nativeParams: processNativeAdUnitParams(nativeParams)
543
543
  });
544
544
  }
545
545
 
546
- bid = Object.assign({}, bid, utils.getDefinedParams(adUnit, ['mediaType', 'renderer']));
546
+ bid = Object.assign({}, bid, getDefinedParams(adUnit, ['mediaType', 'renderer']));
547
547
 
548
548
  if (bid.sizeConfig) {
549
549
  const relevantMediaTypes = internal.getRelevantMediaTypesForBidder(bid.sizeConfig, activeViewport);
550
550
  if (relevantMediaTypes.length === 0) {
551
- utils.logError(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}), Bidder: ${bidderCode} => 'sizeConfig' is not configured properly. This bidder won't be eligible for sizeConfig checks and will remail active.`);
551
+ logError(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}), Bidder: ${bidderCode} => 'sizeConfig' is not configured properly. This bidder won't be eligible for sizeConfig checks and will remail active.`);
552
552
  bid = Object.assign({}, bid);
553
553
  } else if (relevantMediaTypes[0] !== 'none') {
554
554
  const bidderMediaTypes = Object
@@ -562,20 +562,20 @@ export function getBids({ bidderCode, auctionId, bidderRequestId, adUnits, label
562
562
  if (Object.keys(bidderMediaTypes).length > 0) {
563
563
  bid = Object.assign({}, bid, { mediaTypes: bidderMediaTypes });
564
564
  } else {
565
- utils.logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}), Bidder: ${bid.bidder} => 'relevantMediaTypes' does not match with any of the active mediaTypes at the Ad Unit level. This bidder is disabled.`);
565
+ logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}), Bidder: ${bid.bidder} => 'relevantMediaTypes' does not match with any of the active mediaTypes at the Ad Unit level. This bidder is disabled.`);
566
566
  return bids;
567
567
  }
568
568
  } else {
569
- utils.logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}), Bidder: ${bid.bidder} => 'relevantMediaTypes' is set to 'none' in sizeConfig for current viewport size. This bidder is disabled.`);
569
+ logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}), Bidder: ${bid.bidder} => 'relevantMediaTypes' is set to 'none' in sizeConfig for current viewport size. This bidder is disabled.`);
570
570
  return bids;
571
571
  }
572
572
  }
573
573
  bids.push(Object.assign({}, bid, {
574
574
  adUnitCode: adUnit.code,
575
575
  transactionId: adUnit.transactionId,
576
- sizes: utils.deepAccess(transformedMediaTypes, 'banner.sizes') || utils.deepAccess(transformedMediaTypes, 'video.playerSize') || [],
576
+ sizes: deepAccess(transformedMediaTypes, 'banner.sizes') || deepAccess(transformedMediaTypes, 'video.playerSize') || [],
577
577
  mediaTypes: bid.mediaTypes || transformedMediaTypes,
578
- bidId: bid.bid_id || utils.getUniqueIdentifierStr(),
578
+ bidId: bid.bid_id || getUniqueIdentifierStr(),
579
579
  bidderRequestId,
580
580
  auctionId,
581
581
  src,
@@ -585,17 +585,17 @@ export function getBids({ bidderCode, auctionId, bidderRequestId, adUnits, label
585
585
  }));
586
586
  return bids;
587
587
  } else {
588
- utils.logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}), Bidder: ${bid.bidder} => Label check for this bidder has failed. This bidder is disabled.`);
588
+ logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}), Bidder: ${bid.bidder} => Label check for this bidder has failed. This bidder is disabled.`);
589
589
  return bids;
590
590
  }
591
591
  }, []));
592
592
  } else {
593
- cacheHits === 0 && utils.logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}) => Ad unit is disabled due to failing label check.`);
593
+ cacheHits === 0 && logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}) => Ad unit is disabled due to failing label check.`);
594
594
  }
595
595
  } else {
596
- utils.logWarn(`Size Mapping V2:: Ad Unit: ${adUnit.code} => Ad unit has declared invalid 'mediaTypes' or has not declared a 'mediaTypes' property`);
596
+ logWarn(`Size Mapping V2:: Ad Unit: ${adUnit.code} => Ad unit has declared invalid 'mediaTypes' or has not declared a 'mediaTypes' property`);
597
597
  return result;
598
598
  }
599
599
  return result;
600
- }, []).reduce(utils.flatten, []).filter(val => val !== '');
600
+ }, []).reduce(flatten, []).filter(val => val !== '');
601
601
  }
@@ -0,0 +1,121 @@
1
+ import { getValue, parseSizesInput, getBidIdParameter } from '../src/utils.js';
2
+ import {
3
+ registerBidder
4
+ } from '../src/adapters/bidderFactory.js';
5
+ import {
6
+ ajax
7
+ } from '../src/ajax.js';
8
+ const BIDDER_CODE = 'slimcut';
9
+ const ENDPOINT_URL = 'https://sb.freeskreen.com/pbr';
10
+ export const spec = {
11
+ code: BIDDER_CODE,
12
+ aliases: ['scm'],
13
+ supportedMediaTypes: ['video', 'banner'],
14
+ /**
15
+ * Determines whether or not the given bid request is valid.
16
+ *
17
+ * @param {BidRequest} bid The bid params to validate.
18
+ * @return boolean True if this is a valid bid, and false otherwise.
19
+ */
20
+ isBidRequestValid: function(bid) {
21
+ let isValid = false;
22
+ if (typeof bid.params !== 'undefined' && !isNaN(parseInt(getValue(bid.params, 'placementId'))) && parseInt(getValue(bid.params, 'placementId')) > 0) {
23
+ isValid = true;
24
+ }
25
+ return isValid;
26
+ },
27
+ /**
28
+ * Make a server request from the list of BidRequests.
29
+ *
30
+ * @param {validBidRequests[]} an array of bids
31
+ * @return ServerRequest Info describing the request to the server.
32
+ */
33
+ buildRequests: function(validBidRequests, bidderRequest) {
34
+ const bids = validBidRequests.map(buildRequestObject);
35
+ const payload = {
36
+ referrer: getReferrerInfo(bidderRequest),
37
+ data: bids,
38
+ deviceWidth: screen.width
39
+ };
40
+ let gdpr = bidderRequest.gdprConsent;
41
+ if (bidderRequest && gdpr) {
42
+ let isCmp = (typeof gdpr.gdprApplies === 'boolean')
43
+ let isConsentString = (typeof gdpr.consentString === 'string')
44
+ payload.gdpr_iab = {
45
+ consent: isConsentString ? gdpr.consentString : '',
46
+ status: isCmp ? gdpr.gdprApplies : -1
47
+ };
48
+ }
49
+ const payloadString = JSON.stringify(payload);
50
+ return {
51
+ method: 'POST',
52
+ url: ENDPOINT_URL,
53
+ data: payloadString,
54
+ };
55
+ },
56
+ /**
57
+ * Unpack the response from the server into a list of bids.
58
+ *
59
+ * @param {*} serverResponse A successful response from the server.
60
+ * @return {Bid[]} An array of bids which were nested inside the server.
61
+ */
62
+ interpretResponse: function(serverResponse, request) {
63
+ const bidResponses = [];
64
+ serverResponse = serverResponse.body;
65
+ if (serverResponse.responses) {
66
+ serverResponse.responses.forEach(function(bid) {
67
+ const bidResponse = {
68
+ cpm: bid.cpm,
69
+ width: bid.width,
70
+ height: bid.height,
71
+ currency: bid.currency,
72
+ netRevenue: bid.netRevenue,
73
+ ttl: bid.ttl,
74
+ ad: bid.ad,
75
+ requestId: bid.requestId,
76
+ creativeId: bid.creativeId,
77
+ transactionId: bid.tranactionId,
78
+ winUrl: bid.winUrl,
79
+ meta: {
80
+ advertiserDomains: bid.adomain || []
81
+ }
82
+ };
83
+ bidResponses.push(bidResponse);
84
+ });
85
+ }
86
+ return bidResponses;
87
+ },
88
+ getUserSyncs: function(syncOptions, serverResponses) {
89
+ if (syncOptions.iframeEnabled) {
90
+ return [{
91
+ type: 'iframe',
92
+ url: 'https://sb.freeskreen.com/async_usersync.html'
93
+ }];
94
+ }
95
+ return [];
96
+ },
97
+ onBidWon: function(bid) {
98
+ ajax(bid.winUrl + bid.cpm, null);
99
+ }
100
+ }
101
+ function buildRequestObject(bid) {
102
+ const reqObj = {};
103
+ let placementId = getValue(bid.params, 'placementId');
104
+ reqObj.sizes = parseSizesInput(bid.sizes);
105
+ reqObj.bidId = getBidIdParameter('bidId', bid);
106
+ reqObj.bidderRequestId = getBidIdParameter('bidderRequestId', bid);
107
+ reqObj.placementId = parseInt(placementId);
108
+ reqObj.adUnitCode = getBidIdParameter('adUnitCode', bid);
109
+ reqObj.auctionId = getBidIdParameter('auctionId', bid);
110
+ reqObj.transactionId = getBidIdParameter('transactionId', bid);
111
+ return reqObj;
112
+ }
113
+ function getReferrerInfo(bidderRequest) {
114
+ let ref = window.location.href;
115
+ if (bidderRequest && bidderRequest.refererInfo && bidderRequest.refererInfo.referer) {
116
+ ref = bidderRequest.refererInfo.referer;
117
+ }
118
+ return ref;
119
+ }
120
+
121
+ registerBidder(spec);