prebid.js 7.10.0 → 7.13.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 (366) hide show
  1. package/.github/PULL_REQUEST_TEMPLATE.md +16 -10
  2. package/.github/codeql/codeql-config.yml +4 -0
  3. package/.github/workflows/codeql-analysis.yml +73 -0
  4. package/.github/workflows/issue_tracker.yml +1 -1
  5. package/README.md +0 -2
  6. package/babelConfig.js +10 -4
  7. package/dist/33acrossBidAdapter.js +1 -1
  8. package/dist/acuityAdsBidAdapter.js +1 -0
  9. package/dist/adagioBidAdapter.js +1 -1
  10. package/dist/adbookpspBidAdapter.js +1 -1
  11. package/dist/adgenerationBidAdapter.js +1 -1
  12. package/dist/adkernelBidAdapter.js +1 -1
  13. package/dist/adrelevantisBidAdapter.js +1 -1
  14. package/dist/adriverBidAdapter.js +1 -1
  15. package/dist/adriverIdSystem.js +1 -1
  16. package/dist/adtelligentBidAdapter.js +1 -1
  17. package/dist/adtrgtmeBidAdapter.js +1 -0
  18. package/dist/adxcgBidAdapter.js +1 -1
  19. package/dist/adyoulikeBidAdapter.js +1 -1
  20. package/dist/ajaBidAdapter.js +1 -1
  21. package/dist/alkimiBidAdapter.js +1 -1
  22. package/dist/amxBidAdapter.js +1 -1
  23. package/dist/amxIdSystem.js +1 -1
  24. package/dist/aniviewBidAdapter.js +1 -1
  25. package/dist/aolBidAdapter.js +1 -1
  26. package/dist/appierAnalyticsAdapter.js +1 -1
  27. package/dist/appnexusBidAdapter.js +1 -1
  28. package/dist/asoBidAdapter.js +1 -1
  29. package/dist/audiencerunBidAdapter.js +1 -1
  30. package/dist/axonixBidAdapter.js +1 -1
  31. package/dist/beopBidAdapter.js +1 -1
  32. package/dist/betweenBidAdapter.js +1 -1
  33. package/dist/bidglassBidAdapter.js +1 -1
  34. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  35. package/dist/big-richmediaBidAdapter.js +1 -1
  36. package/dist/bluebillywigBidAdapter.js +1 -1
  37. package/dist/brandmetricsRtdProvider.js +1 -1
  38. package/dist/bridgewellBidAdapter.js +1 -1
  39. package/dist/brightMountainMediaBidAdapter.js +1 -1
  40. package/dist/browsiRtdProvider.js +1 -1
  41. package/dist/cleanioRtdProvider.js +1 -1
  42. package/dist/concertBidAdapter.js +1 -1
  43. package/dist/connectadBidAdapter.js +1 -1
  44. package/dist/consentManagement.js +1 -1
  45. package/dist/consentManagementUsp.js +1 -1
  46. package/dist/consumableBidAdapter.js +1 -1
  47. package/dist/conversantBidAdapter.js +1 -1
  48. package/dist/cpmstarBidAdapter.js +1 -1
  49. package/dist/craftBidAdapter.js +1 -1
  50. package/dist/criteoBidAdapter.js +1 -1
  51. package/dist/currency.js +1 -1
  52. package/dist/datawrkzBidAdapter.js +1 -0
  53. package/dist/debugging-standalone.js +1 -1
  54. package/dist/dfpAdServerVideo.js +1 -1
  55. package/dist/dgkeywordRtdProvider.js +1 -1
  56. package/dist/displayioBidAdapter.js +1 -3
  57. package/dist/dspxBidAdapter.js +1 -1
  58. package/dist/enrichmentFpdModule.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/finativeBidAdapter.js +1 -1
  61. package/dist/glimpseBidAdapter.js +1 -1
  62. package/dist/gmosspBidAdapter.js +1 -1
  63. package/dist/goldbachBidAdapter.js +1 -1
  64. package/dist/gridBidAdapter.js +1 -1
  65. package/dist/gridNMBidAdapter.js +1 -1
  66. package/dist/gumgumBidAdapter.js +1 -1
  67. package/dist/h12mediaBidAdapter.js +1 -1
  68. package/dist/id5IdSystem.js +1 -1
  69. package/dist/imRtdProvider.js +1 -1
  70. package/dist/impactifyBidAdapter.js +1 -1
  71. package/dist/improvedigitalBidAdapter.js +1 -1
  72. package/dist/inmarBidAdapter.js +1 -1
  73. package/dist/insticatorBidAdapter.js +1 -1
  74. package/dist/ixBidAdapter.js +1 -1
  75. package/dist/jixieBidAdapter.js +1 -1
  76. package/dist/justpremiumBidAdapter.js +1 -1
  77. package/dist/kargoBidAdapter.js +1 -1
  78. package/dist/konduitAnalyticsAdapter.js +1 -1
  79. package/dist/kueezBidAdapter.js +1 -1
  80. package/dist/lassoBidAdapter.js +1 -1
  81. package/dist/lifestreetBidAdapter.js +1 -0
  82. package/dist/limelightDigitalBidAdapter.js +1 -1
  83. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  84. package/dist/logicadBidAdapter.js +1 -1
  85. package/dist/loglyliftBidAdapter.js +1 -1
  86. package/dist/mabidderBidAdapter.js +1 -0
  87. package/dist/malltvAnalyticsAdapter.js +1 -1
  88. package/dist/marsmediaBidAdapter.js +1 -1
  89. package/dist/mediafuseBidAdapter.js +1 -1
  90. package/dist/mediagoBidAdapter.js +1 -0
  91. package/dist/mediakeysBidAdapter.js +1 -1
  92. package/dist/mediasquareBidAdapter.js +1 -1
  93. package/dist/mgidBidAdapter.js +1 -1
  94. package/dist/minutemediaBidAdapter.js +1 -1
  95. package/dist/nextMillenniumBidAdapter.js +1 -1
  96. package/dist/not-for-prod/prebid.js +153 -147
  97. package/dist/oguryBidAdapter.js +1 -1
  98. package/dist/oneKeyIdSystem.js +1 -0
  99. package/dist/oneKeyRtdProvider.js +1 -0
  100. package/dist/onetagBidAdapter.js +1 -1
  101. package/dist/ooloAnalyticsAdapter.js +1 -1
  102. package/dist/openxAnalyticsAdapter.js +1 -1
  103. package/dist/outbrainBidAdapter.js +1 -1
  104. package/dist/parrableIdSystem.js +1 -1
  105. package/dist/permutiveRtdProvider.js +1 -1
  106. package/dist/pixfutureBidAdapter.js +1 -1
  107. package/dist/prebid-core.js +2 -2
  108. package/dist/publinkIdSystem.js +1 -1
  109. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  110. package/dist/pubmaticBidAdapter.js +1 -1
  111. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  112. package/dist/pxyzBidAdapter.js +1 -1
  113. package/dist/quantcastBidAdapter.js +1 -1
  114. package/dist/rasBidAdapter.js +1 -1
  115. package/dist/readpeakBidAdapter.js +1 -1
  116. package/dist/relaidoBidAdapter.js +1 -1
  117. package/dist/rhythmoneBidAdapter.js +1 -1
  118. package/dist/riseBidAdapter.js +1 -1
  119. package/dist/rtbhouseBidAdapter.js +1 -1
  120. package/dist/rubiconAnalyticsAdapter.js +1 -1
  121. package/dist/rubiconBidAdapter.js +1 -1
  122. package/dist/seedingAllianceBidAdapter.js +1 -1
  123. package/dist/seedtagBidAdapter.js +1 -1
  124. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  125. package/dist/sharethroughBidAdapter.js +1 -1
  126. package/dist/shinezBidAdapter.js +1 -1
  127. package/dist/smaatoBidAdapter.js +1 -1
  128. package/dist/smartadserverBidAdapter.js +1 -1
  129. package/dist/smartxBidAdapter.js +1 -1
  130. package/dist/smilewantedBidAdapter.js +1 -1
  131. package/dist/sonobiBidAdapter.js +1 -1
  132. package/dist/sovrnAnalyticsAdapter.js +1 -1
  133. package/dist/sovrnBidAdapter.js +1 -1
  134. package/dist/sspBCBidAdapter.js +1 -1
  135. package/dist/sublimeBidAdapter.js +1 -1
  136. package/dist/synacormediaBidAdapter.js +1 -1
  137. package/dist/tappxBidAdapter.js +1 -1
  138. package/dist/targetVideoBidAdapter.js +1 -1
  139. package/dist/teadsBidAdapter.js +1 -1
  140. package/dist/trionBidAdapter.js +1 -1
  141. package/dist/tripleliftBidAdapter.js +1 -1
  142. package/dist/trustpidSystem.js +1 -1
  143. package/dist/ttdBidAdapter.js +1 -1
  144. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  145. package/dist/underdogmediaBidAdapter.js +1 -1
  146. package/dist/undertoneBidAdapter.js +1 -1
  147. package/dist/userId.js +1 -1
  148. package/dist/vidazooBidAdapter.js +1 -1
  149. package/dist/videobyteBidAdapter.js +1 -1
  150. package/dist/viewability.js +1 -1
  151. package/dist/visxBidAdapter.js +1 -1
  152. package/dist/vuukleBidAdapter.js +1 -1
  153. package/dist/widespaceBidAdapter.js +1 -1
  154. package/dist/winrBidAdapter.js +1 -1
  155. package/dist/yahoosspBidAdapter.js +1 -1
  156. package/dist/yieldmoBidAdapter.js +1 -1
  157. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  158. package/dist/zeta_global_sspBidAdapter.js +1 -1
  159. package/integrationExamples/gpt/permutiveRtdProvider_example.html +1 -1
  160. package/karma.conf.maker.js +2 -13
  161. package/modules/.submodules.json +2 -0
  162. package/modules/acuityAdsBidAdapter.js +207 -0
  163. package/modules/acuityAdsBidAdapter.md +79 -0
  164. package/modules/adagioBidAdapter.js +2 -3
  165. package/modules/adgenerationBidAdapter.js +2 -2
  166. package/modules/adkernelBidAdapter.js +28 -12
  167. package/modules/admixerBidAdapter.js +1 -1
  168. package/modules/adnowBidAdapter.js +1 -1
  169. package/modules/adpod.js +1 -1
  170. package/modules/adrelevantisBidAdapter.js +2 -2
  171. package/modules/adriverBidAdapter.js +5 -12
  172. package/modules/adriverIdSystem.js +2 -1
  173. package/modules/adtargetBidAdapter.js +1 -1
  174. package/modules/adtelligentBidAdapter.js +6 -2
  175. package/modules/adtrgtmeBidAdapter.js +333 -0
  176. package/modules/adtrgtmeBidAdapter.md +69 -0
  177. package/modules/adtrueBidAdapter.js +1 -1
  178. package/modules/adxpremiumAnalyticsAdapter.js +1 -1
  179. package/modules/adyoulikeBidAdapter.js +1 -1
  180. package/modules/alkimiBidAdapter.js +2 -1
  181. package/modules/aniviewBidAdapter.js +1 -1
  182. package/modules/appnexusBidAdapter.js +13 -93
  183. package/modules/apstreamBidAdapter.js +2 -2
  184. package/modules/beopBidAdapter.js +4 -4
  185. package/modules/betweenBidAdapter.js +4 -4
  186. package/modules/bidwatchAnalyticsAdapter.js +112 -59
  187. package/modules/bizzclickBidAdapter.js +1 -1
  188. package/modules/brightMountainMediaBidAdapter.js +1 -1
  189. package/modules/browsiRtdProvider.js +24 -10
  190. package/modules/cleanmedianetBidAdapter.js +1 -1
  191. package/modules/consentManagement.js +1 -1
  192. package/modules/consentManagementUsp.js +1 -1
  193. package/modules/consumableBidAdapter.js +43 -3
  194. package/modules/cpmstarBidAdapter.js +23 -13
  195. package/modules/criteoBidAdapter.js +19 -13
  196. package/modules/currency.js +1 -0
  197. package/modules/cwireBidAdapter.js +1 -1
  198. package/modules/datablocksBidAdapter.js +1 -1
  199. package/modules/datawrkzBidAdapter.js +633 -0
  200. package/modules/datawrkzBidAdapter.md +160 -0
  201. package/modules/dfpAdServerVideo.js +2 -2
  202. package/modules/dgkeywordRtdProvider.js +10 -1
  203. package/modules/displayioBidAdapter.js +92 -97
  204. package/modules/dspxBidAdapter.js +1 -1
  205. package/modules/e_volutionBidAdapter.js +3 -3
  206. package/modules/ebdrBidAdapter.js +1 -1
  207. package/modules/emx_digitalBidAdapter.js +1 -1
  208. package/modules/enrichmentFpdModule.js +11 -0
  209. package/modules/fabrickIdSystem.js +2 -2
  210. package/modules/gamoshiBidAdapter.js +1 -1
  211. package/modules/getintentBidAdapter.js +1 -1
  212. package/modules/gjirafaBidAdapter.js +2 -2
  213. package/modules/goldbachBidAdapter.js +8 -8
  214. package/modules/gothamadsBidAdapter.js +2 -2
  215. package/modules/gumgumBidAdapter.js +3 -3
  216. package/modules/h12mediaBidAdapter.js +1 -1
  217. package/modules/id5AnalyticsAdapter.js +1 -1
  218. package/modules/id5IdSystem.js +160 -111
  219. package/modules/id5IdSystem.md +16 -14
  220. package/modules/imRtdProvider.js +20 -7
  221. package/modules/imRtdProvider.md +3 -1
  222. package/modules/impactifyBidAdapter.js +1 -1
  223. package/modules/improvedigitalBidAdapter.js +50 -28
  224. package/modules/inskinBidAdapter.js +1 -1
  225. package/modules/insticatorBidAdapter.js +1 -1
  226. package/modules/integr8BidAdapter.js +2 -2
  227. package/modules/intentIqIdSystem.js +2 -2
  228. package/modules/interactiveOffersBidAdapter.js +1 -1
  229. package/modules/iqmBidAdapter.js +1 -1
  230. package/modules/ixBidAdapter.js +21 -328
  231. package/modules/ixBidAdapter.md +1 -19
  232. package/modules/kargoBidAdapter.js +4 -5
  233. package/modules/krushmediaBidAdapter.js +2 -2
  234. package/modules/lassoBidAdapter.js +3 -3
  235. package/modules/lifestreetBidAdapter.js +143 -0
  236. package/modules/limelightDigitalBidAdapter.js +2 -1
  237. package/modules/livewrappedAnalyticsAdapter.js +3 -3
  238. package/modules/lkqdBidAdapter.js +3 -3
  239. package/modules/loganBidAdapter.js +2 -2
  240. package/modules/luponmediaBidAdapter.js +3 -3
  241. package/modules/mabidderBidAdapter.js +60 -0
  242. package/modules/mabidderBidAdapter.md +31 -0
  243. package/modules/malltvBidAdapter.js +2 -2
  244. package/modules/mediagoBidAdapter.js +462 -0
  245. package/modules/mediagoBidAdapter.md +34 -0
  246. package/modules/mediakeysBidAdapter.js +2 -2
  247. package/modules/mgidBidAdapter.js +2 -2
  248. package/modules/nextMillenniumBidAdapter.js +25 -6
  249. package/modules/nobidBidAdapter.js +2 -2
  250. package/modules/novatiqIdSystem.js +1 -1
  251. package/modules/oneKeyIdSystem.js +78 -0
  252. package/modules/oneKeyIdSystem.md +109 -0
  253. package/modules/oneKeyRtdProvider.js +98 -0
  254. package/modules/oneKeyRtdProvider.md +127 -0
  255. package/modules/open8BidAdapter.js +1 -1
  256. package/modules/openwebBidAdapter.js +1 -1
  257. package/modules/openxAnalyticsAdapter.js +5 -744
  258. package/modules/openxAnalyticsAdapter.md +4 -0
  259. package/modules/openxBidAdapter.js +3 -3
  260. package/modules/permutiveRtdProvider.js +55 -8
  261. package/modules/pixfutureBidAdapter.js +1 -1
  262. package/modules/prebidmanagerAnalyticsAdapter.js +1 -1
  263. package/modules/priceFloors.js +1 -1
  264. package/modules/pubmaticAnalyticsAdapter.js +1 -1
  265. package/modules/pubmaticBidAdapter.js +19 -1
  266. package/modules/pubwiseAnalyticsAdapter.js +1 -1
  267. package/modules/pubwiseBidAdapter.js +3 -3
  268. package/modules/pubxBidAdapter.js +1 -1
  269. package/modules/pubxaiAnalyticsAdapter.js +2 -2
  270. package/modules/quantcastIdSystem.js +1 -1
  271. package/modules/radsBidAdapter.js +1 -1
  272. package/modules/rasBidAdapter.js +8 -0
  273. package/modules/rasBidAdapter.md +14 -13
  274. package/modules/revcontentBidAdapter.js +1 -1
  275. package/modules/richaudienceBidAdapter.js +1 -1
  276. package/modules/rtbhouseBidAdapter.js +25 -1
  277. package/modules/schain.js +1 -1
  278. package/modules/seedtagBidAdapter.md +25 -56
  279. package/modules/showheroes-bsBidAdapter.js +1 -1
  280. package/modules/sizeMappingV2.js +1 -1
  281. package/modules/smaatoBidAdapter.js +2 -2
  282. package/modules/sonobiAnalyticsAdapter.js +1 -1
  283. package/modules/sonobiBidAdapter.js +4 -3
  284. package/modules/staqAnalyticsAdapter.js +1 -1
  285. package/modules/tappxBidAdapter.js +11 -2
  286. package/modules/targetVideoBidAdapter.js +1 -1
  287. package/modules/theAdxBidAdapter.js +2 -2
  288. package/modules/tpmnBidAdapter.js +1 -1
  289. package/modules/trionBidAdapter.js +2 -2
  290. package/modules/tripleliftBidAdapter.js +20 -1
  291. package/modules/trustpidSystem.js +6 -42
  292. package/modules/trustpidSystem.md +10 -10
  293. package/modules/underdogmediaBidAdapter.js +1 -1
  294. package/modules/userId/eids.js +26 -0
  295. package/modules/userId/userId.md +2 -2
  296. package/modules/vdoaiBidAdapter.js +1 -1
  297. package/modules/vidazooBidAdapter.js +7 -5
  298. package/modules/vidoomyBidAdapter.js +1 -1
  299. package/modules/viewability.js +14 -14
  300. package/modules/winrBidAdapter.js +1 -1
  301. package/modules/yahoosspBidAdapter.js +3 -3
  302. package/modules/yandexBidAdapter.js +1 -1
  303. package/modules/yieldmoBidAdapter.js +3 -3
  304. package/modules/yieldoneBidAdapter.js +2 -2
  305. package/modules/zeta_global_sspBidAdapter.js +24 -21
  306. package/package.json +3 -3
  307. package/src/Renderer.js +1 -1
  308. package/src/adloader.js +2 -1
  309. package/src/adserver.js +0 -56
  310. package/src/auction.js +60 -16
  311. package/src/bidfactory.js +1 -1
  312. package/src/native.js +75 -60
  313. package/src/refererDetection.js +12 -1
  314. package/src/sizeMapping.js +5 -7
  315. package/src/targeting.js +1 -1
  316. package/src/userSync.js +1 -1
  317. package/src/utils/promise.js +3 -1
  318. package/src/utils.js +27 -0
  319. package/src/video.js +5 -4
  320. package/src/videoCache.js +8 -2
  321. package/test/pages/instream.html +2 -2
  322. package/test/spec/modules/acuityAdsBidAdapter_spec.js +398 -0
  323. package/test/spec/modules/adagioBidAdapter_spec.js +2 -0
  324. package/test/spec/modules/adkernelBidAdapter_spec.js +11 -2
  325. package/test/spec/modules/adriverBidAdapter_spec.js +6 -13
  326. package/test/spec/modules/adriverIdSystem_spec.js +3 -8
  327. package/test/spec/modules/adtelligentBidAdapter_spec.js +2 -0
  328. package/test/spec/modules/adtrgtmeBidAdapter_spec.js +802 -0
  329. package/test/spec/modules/alkimiBidAdapter_spec.js +2 -1
  330. package/test/spec/modules/appnexusBidAdapter_spec.js +1 -0
  331. package/test/spec/modules/beopBidAdapter_spec.js +11 -0
  332. package/test/spec/modules/betweenBidAdapter_spec.js +17 -0
  333. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +28 -12
  334. package/test/spec/modules/big-richmediaBidAdapter_spec.js +1 -0
  335. package/test/spec/modules/browsiRtdProvider_spec.js +40 -1
  336. package/test/spec/modules/consumableBidAdapter_spec.js +158 -0
  337. package/test/spec/modules/cpmstarBidAdapter_spec.js +1 -1
  338. package/test/spec/modules/criteoBidAdapter_spec.js +35 -26
  339. package/test/spec/modules/currency_spec.js +22 -0
  340. package/test/spec/modules/datawrkzBidAdapter_spec.js +656 -0
  341. package/test/spec/modules/dgkeywordRtdProvider_spec.js +1 -1
  342. package/test/spec/modules/displayioBidAdapter_spec.js +16 -52
  343. package/test/spec/modules/enrichmentFpdModule_spec.js +16 -1
  344. package/test/spec/modules/fpdModule_spec.js +2 -1
  345. package/test/spec/modules/id5IdSystem_spec.js +529 -172
  346. package/test/spec/modules/imRtdProvider_spec.js +10 -5
  347. package/test/spec/modules/improvedigitalBidAdapter_spec.js +9 -13
  348. package/test/spec/modules/ixBidAdapter_spec.js +216 -123
  349. package/test/spec/modules/kargoBidAdapter_spec.js +11 -2
  350. package/test/spec/modules/lifestreetBidAdapter_spec.js +232 -0
  351. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +59 -7
  352. package/test/spec/modules/mabidderBidAdapter_spec.js +125 -0
  353. package/test/spec/modules/mediagoBidAdapter_spec.js +97 -0
  354. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +2 -7
  355. package/test/spec/modules/oneKeyIdSystem_spec.js +107 -0
  356. package/test/spec/modules/oneKeyRtdProvider_spec.js +152 -0
  357. package/test/spec/modules/openxAnalyticsAdapter_spec.js +6 -638
  358. package/test/spec/modules/permutiveRtdProvider_spec.js +152 -2
  359. package/test/spec/modules/pubmaticBidAdapter_spec.js +69 -4
  360. package/test/spec/modules/rasBidAdapter_spec.js +2 -0
  361. package/test/spec/modules/tripleliftBidAdapter_spec.js +18 -0
  362. package/test/spec/modules/trustpidSystem_spec.js +27 -45
  363. package/test/spec/modules/vidazooBidAdapter_spec.js +36 -23
  364. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +59 -0
  365. package/test/spec/native_spec.js +257 -2
  366. package/test/spec/videoCache_spec.js +37 -7
@@ -0,0 +1,143 @@
1
+ import { isInteger } from '../src/utils.js';
2
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
3
+ import { BANNER, VIDEO } from '../src/mediaTypes.js';
4
+
5
+ const BIDDER_CODE = 'lifestreet';
6
+ const ADAPTER_VERSION = '$prebid.version$';
7
+
8
+ const urlTemplate = template`https://ads.lfstmedia.com/gate/${'adapter'}/${'slot'}?adkey=${'adkey'}&ad_size=${'ad_size'}&__location=${'location'}&__referrer=${'referrer'}&__wn=${'wn'}&__sf=${'sf'}&__fif=${'fif'}&__if=${'if'}&__stamp=${'stamp'}&__pp=1&__hb=1&_prebid_json=1&__gz=1&deferred_format=vast_2_0,vast_3_0&__hbver=${'hbver'}`;
9
+
10
+ /**
11
+ * A helper function for template to generate string from boolean
12
+ */
13
+ function boolToString(value) {
14
+ return value ? '1' : '0';
15
+ }
16
+
17
+ /**
18
+ * A helper function to form URL from the template
19
+ */
20
+ function template(strings, ...keys) {
21
+ return function(...values) {
22
+ let dict = values[values.length - 1] || {};
23
+ let result = [strings[0]];
24
+ keys.forEach(function(key, i) {
25
+ let value = isInteger(key) ? values[key] : dict[key];
26
+ result.push(value, strings[i + 1]);
27
+ });
28
+ return result.join('');
29
+ };
30
+ }
31
+
32
+ /**
33
+ * Creates a bid requests for a given bid.
34
+ *
35
+ * @param {BidRequest} bid The bid params to use for formatting a request
36
+ */
37
+ function formatBidRequest(bid, bidderRequest = {}) {
38
+ const {params} = bid;
39
+ const {referer} = (bidderRequest.refererInfo || {});
40
+ let url = urlTemplate({
41
+ adapter: 'prebid',
42
+ slot: params.slot,
43
+ adkey: params.adkey,
44
+ ad_size: params.ad_size,
45
+ location: referer,
46
+ referrer: referer,
47
+ wn: boolToString(/fb_http/i.test(window.name)),
48
+ sf: boolToString(window['sfAPI'] || window['$sf']),
49
+ fif: boolToString(window['inDapIF'] === true),
50
+ if: boolToString(window !== window.top),
51
+ stamp: new Date().getTime(),
52
+ hbver: ADAPTER_VERSION
53
+ });
54
+
55
+ if (bidderRequest.gdprConsent) {
56
+ if (bidderRequest.gdprConsent.gdprApplies !== undefined) {
57
+ const gdpr = '&__gdpr=' + (bidderRequest.gdprConsent.gdprApplies ? '1' : '0');
58
+ url += gdpr;
59
+ }
60
+ if (bidderRequest.gdprConsent.consentString !== undefined) {
61
+ url += `&__consent=${bidderRequest.gdprConsent.consentString}`;
62
+ }
63
+ }
64
+
65
+ // ccpa support
66
+ if (bidderRequest.uspConsent) {
67
+ url += `&__us_privacy=${bidderRequest.uspConsent}`
68
+ }
69
+
70
+ return {
71
+ method: 'GET',
72
+ url: url,
73
+ bidId: bid.bidId
74
+ };
75
+ }
76
+
77
+ function isResponseValid(response) {
78
+ return !/^\s*\{\s*"advertisementAvailable"\s*:\s*false/i.test(response.content) &&
79
+ response.content.indexOf('<VAST version="2.0"></VAST>') === -1 && /* (typeof response.cpm !== 'undefined') && */
80
+ response.status === 1;
81
+ }
82
+
83
+ export const spec = {
84
+ code: BIDDER_CODE,
85
+ aliases: ['lsm'],
86
+ supportedMediaTypes: [BANNER, VIDEO],
87
+
88
+ isBidRequestValid: (bid = {}) => {
89
+ const {params = {}} = bid;
90
+ return !!(params.slot && params.adkey && params.ad_size);
91
+ },
92
+
93
+ buildRequests: (validBidRequests, bidderRequest) => {
94
+ return validBidRequests.map(bid => {
95
+ return formatBidRequest(bid, bidderRequest)
96
+ });
97
+ },
98
+
99
+ interpretResponse: (serverResponse, bidRequest) => {
100
+ const bidResponses = [];
101
+ let response = serverResponse.body;
102
+ if (!isResponseValid(response)) {
103
+ return bidResponses;
104
+ }
105
+
106
+ const isVideo = response.content_type.indexOf('vast') > -1;
107
+ const mediaType = isVideo ? VIDEO : BANNER;
108
+
109
+ const bidResponse = {
110
+ requestId: bidRequest.bidId,
111
+ cpm: response.cpm,
112
+ currency: response.currency ? response.currency : 'USD',
113
+ width: response.width,
114
+ height: response.height,
115
+ creativeId: response.creativeId,
116
+ netRevenue: response.netRevenue ? response.netRevenue : true,
117
+ ttl: response.ttl ? response.ttl : 86400,
118
+ mediaType,
119
+ meta: {
120
+ mediaType,
121
+ advertiserDomains: response.advertiserDomains
122
+ }
123
+ };
124
+
125
+ if (response.hasOwnProperty('dealId')) {
126
+ bidResponse.dealId = response.dealId;
127
+ }
128
+ if (isVideo) {
129
+ if (typeof response.vastUrl !== 'undefined') {
130
+ bidResponse.vastUrl = response.vastUrl;
131
+ } else {
132
+ bidResponse.vastXml = response.content;
133
+ }
134
+ } else {
135
+ bidResponse.ad = response.content;
136
+ }
137
+
138
+ bidResponses.push(bidResponse);
139
+ return bidResponses;
140
+ }
141
+ };
142
+
143
+ registerBidder(spec);
@@ -157,7 +157,8 @@ function buildPlacement(bidRequest) {
157
157
  }),
158
158
  type: bidRequest.params.adUnitType.toUpperCase(),
159
159
  publisherId: bidRequest.params.publisherId,
160
- userIdAsEids: bidRequest.userIdAsEids
160
+ userIdAsEids: bidRequest.userIdAsEids,
161
+ supplyChain: bidRequest.schain
161
162
  }
162
163
  }
163
164
  }
@@ -67,10 +67,10 @@ let livewrappedAnalyticsAdapter = Object.assign(adapter({EMPTYURL, ANALYTICSTYPE
67
67
  auc: bidRequest.auc,
68
68
  buc: bidRequest.buc,
69
69
  lw: bidRequest.lw
70
- }
70
+ };
71
71
 
72
72
  logInfo(bidRequest);
73
- })
73
+ });
74
74
  logInfo(livewrappedAnalyticsAdapter.requestEvents);
75
75
  break;
76
76
  case CONSTANTS.EVENTS.BID_RESPONSE:
@@ -183,7 +183,7 @@ livewrappedAnalyticsAdapter.sendEvents = function() {
183
183
  }
184
184
 
185
185
  ajax(initOptions.endpoint || URL, undefined, JSON.stringify(events), {method: 'POST'});
186
- }
186
+ };
187
187
 
188
188
  function getAdblockerRecovered() {
189
189
  try {
@@ -38,7 +38,7 @@ export const spec = {
38
38
  const UA = navigator.userAgent;
39
39
  const USP = BIDDER_REQUEST.uspConsent || null;
40
40
  // TODO: does the fallback make sense here?
41
- const REFERER = BIDDER_REQUEST?.refererInfo?.domain || window.location.host
41
+ const REFERER = BIDDER_REQUEST?.refererInfo?.domain || window.location.host;
42
42
  const BIDDER_GDPR = BIDDER_REQUEST.gdprConsent && BIDDER_REQUEST.gdprConsent.gdprApplies ? 1 : null;
43
43
  const BIDDER_GDPRS = BIDDER_REQUEST.gdprConsent && BIDDER_REQUEST.gdprConsent.consentString ? BIDDER_REQUEST.gdprConsent.consentString : null;
44
44
 
@@ -74,7 +74,7 @@ export const spec = {
74
74
  us_privacy: USP
75
75
  }
76
76
  }
77
- }
77
+ };
78
78
 
79
79
  if (isSet(DNT)) {
80
80
  requestData.device.dnt = DNT;
@@ -94,7 +94,7 @@ export const spec = {
94
94
  id: bid.params.aid,
95
95
  name: bid.params.appname,
96
96
  bundle: bid.params.bundleid
97
- }
97
+ };
98
98
 
99
99
  if (bid.params.contentId) {
100
100
  requestData.app.content = {
@@ -72,7 +72,7 @@ export const spec = {
72
72
  request.ccpa = bidderRequest.uspConsent;
73
73
  }
74
74
  if (bidderRequest.gdprConsent) {
75
- request.gdpr = bidderRequest.gdprConsent
75
+ request.gdpr = bidderRequest.gdprConsent;
76
76
  }
77
77
  }
78
78
 
@@ -85,7 +85,7 @@ export const spec = {
85
85
  schain: bid.schain || {},
86
86
  bidfloor: getBidFloor(bid)
87
87
  };
88
- const mediaType = bid.mediaTypes
88
+ const mediaType = bid.mediaTypes;
89
89
 
90
90
  if (mediaType && mediaType[BANNER] && mediaType[BANNER].sizes) {
91
91
  placement.sizes = mediaType[BANNER].sizes;
@@ -176,7 +176,7 @@ export const spec = {
176
176
  responses.forEach(csResp => {
177
177
  if (csResp.body && csResp.body.ext && csResp.body.ext.usersyncs) {
178
178
  try {
179
- let response = csResp.body.ext.usersyncs
179
+ let response = csResp.body.ext.usersyncs;
180
180
  let bidders = response.bidder_status;
181
181
  for (let synci in bidders) {
182
182
  let thisSync = bidders[synci];
@@ -314,7 +314,7 @@ function newOrtbBidRequest(bidRequest, bidderRequest, currentImps) {
314
314
  },
315
315
  user: {
316
316
  }
317
- }
317
+ };
318
318
 
319
319
  let bidFloor;
320
320
  if (isFn(bidRequest.getFloor) && !config.getConfig('disableFloors')) {
@@ -566,7 +566,7 @@ function parseSizes(bid, mediaType) {
566
566
  } else if (typeof deepAccess(bid, 'mediaTypes.banner.sizes') !== 'undefined') {
567
567
  sizes = mapSizes(bid.mediaTypes.banner.sizes);
568
568
  } else if (Array.isArray(bid.sizes) && bid.sizes.length > 0) {
569
- sizes = mapSizes(bid.sizes)
569
+ sizes = mapSizes(bid.sizes);
570
570
  } else {
571
571
  logWarn('LuponMedia: no sizes are setup or found');
572
572
  }
@@ -0,0 +1,60 @@
1
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
2
+ import { BANNER } from '../src/mediaTypes.js';
3
+ const BIDDER_CODE = 'mabidder';
4
+ export const baseUrl = 'https://prebid.ecdrsvc.com/bid';
5
+ export const spec = {
6
+ supportedMediaTypes: [BANNER],
7
+ code: BIDDER_CODE,
8
+ isBidRequestValid: function(bid) {
9
+ if (typeof bid.params === 'undefined') {
10
+ return false;
11
+ }
12
+ return !!(bid.params.ppid && bid.sizes && Array.isArray(bid.sizes) && Array.isArray(bid.sizes[0]))
13
+ },
14
+ buildRequests: function(validBidRequests, bidderRequest) {
15
+ const fpd = bidderRequest.ortb2;
16
+ const bids = [];
17
+ validBidRequests.forEach(bidRequest => {
18
+ const sizes = [];
19
+ bidRequest.sizes.forEach(size => {
20
+ sizes.push({
21
+ width: size[0],
22
+ height: size[1]
23
+ });
24
+ });
25
+ bids.push({
26
+ bidId: bidRequest.bidId,
27
+ sizes: sizes,
28
+ ppid: bidRequest.params.ppid,
29
+ mediaType: BANNER
30
+ })
31
+ });
32
+ const req = {
33
+ url: baseUrl,
34
+ method: 'POST',
35
+ data: {
36
+ v: $$PREBID_GLOBAL$$.version,
37
+ bids: bids,
38
+ url: bidderRequest.refererInfo.page || '',
39
+ referer: bidderRequest.refererInfo.ref || '',
40
+ fpd: fpd || {}
41
+ }
42
+ };
43
+
44
+ return req;
45
+ },
46
+ interpretResponse: function(serverResponse, request) {
47
+ const bidResponses = [];
48
+ if (serverResponse.body) {
49
+ const body = serverResponse.body;
50
+ if (!body || typeof body !== 'object' || !body.Responses || !(body.Responses.length > 0)) {
51
+ return [];
52
+ }
53
+ body.Responses.forEach((bidResponse) => {
54
+ bidResponses.push(bidResponse);
55
+ });
56
+ }
57
+ return bidResponses;
58
+ }
59
+ }
60
+ registerBidder(spec);
@@ -0,0 +1,31 @@
1
+ #Overview
2
+
3
+ ```
4
+ Module Name: mabidder Bid Adapter
5
+ Module Type: Bidder Adapter
6
+ Maintainer: lmprebidadapter@loblaw.ca
7
+ ```
8
+
9
+ # Description
10
+
11
+ Module that connects to MediaAisle demand sources
12
+
13
+ # Test Parameters
14
+ ```
15
+ var adUnits = [
16
+ {
17
+ code: 'test_banner',
18
+ mediaTypes: {
19
+ banner: {
20
+ sizes: [300, 250]
21
+ }
22
+ },
23
+ bids: [{
24
+ bidder: 'mabidder',
25
+ params: {
26
+ ppid: 'test'
27
+ }
28
+ }],
29
+ }
30
+ ];
31
+ ```
@@ -81,7 +81,7 @@ export const spec = {
81
81
  data: data,
82
82
  gdpr_applies: gdrpApplies,
83
83
  gdpr_consent: gdprConsent,
84
- }
84
+ };
85
85
 
86
86
  return [{
87
87
  method: 'POST',
@@ -120,7 +120,7 @@ export const spec = {
120
120
  }
121
121
  return bidResponses;
122
122
  }
123
- }
123
+ };
124
124
 
125
125
  /**
126
126
  * Generate size param for bid request using sizes array