prebid.js 7.25.0 → 7.27.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 (353) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/adWMGAnalyticsAdapter.js +1 -1
  4. package/dist/adagioAnalyticsAdapter.js +1 -1
  5. package/dist/adagioBidAdapter.js +1 -1
  6. package/dist/adbookpspBidAdapter.js +1 -1
  7. package/dist/adgenerationBidAdapter.js +1 -1
  8. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  9. package/dist/adlooxAdServerVideo.js +1 -1
  10. package/dist/adlooxAnalyticsAdapter.js +1 -1
  11. package/dist/adlooxRtdProvider.js +1 -1
  12. package/dist/admaticBidAdapter.js +1 -1
  13. package/dist/admixerBidAdapter.js +1 -1
  14. package/dist/adomikAnalyticsAdapter.js +1 -1
  15. package/dist/adrelevantisBidAdapter.js +1 -1
  16. package/dist/adtrgtmeBidAdapter.js +1 -1
  17. package/dist/adxcgAnalyticsAdapter.js +1 -1
  18. package/dist/adxcgBidAdapter.js +1 -1
  19. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  20. package/dist/aidemBidAdapter.js +1 -0
  21. package/dist/ajaBidAdapter.js +1 -1
  22. package/dist/amxBidAdapter.js +1 -1
  23. package/dist/amxIdSystem.js +1 -1
  24. package/dist/analyticsAdapter.js +1 -1
  25. package/dist/appierAnalyticsAdapter.js +1 -1
  26. package/dist/appnexusBidAdapter.js +1 -1
  27. package/dist/asoBidAdapter.js +1 -1
  28. package/dist/atsAnalyticsAdapter.js +1 -1
  29. package/dist/axonixBidAdapter.js +1 -1
  30. package/dist/beopBidAdapter.js +1 -1
  31. package/dist/bidViewability.js +1 -1
  32. package/dist/bidglassBidAdapter.js +1 -1
  33. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  34. package/dist/big-richmediaBidAdapter.js +1 -1
  35. package/dist/bridgewellBidAdapter.js +1 -1
  36. package/dist/brightMountainMediaBidAdapter.js +1 -1
  37. package/dist/browsiRtdProvider.js +1 -1
  38. package/dist/bucksenseBidAdapter.js +1 -1
  39. package/dist/byDataAnalyticsAdapter.js +1 -1
  40. package/dist/captifyRtdProvider.js +1 -0
  41. package/dist/carodaBidAdapter.js +1 -1
  42. package/dist/chtnwBidAdapter.js +1 -1
  43. package/dist/concertAnalyticsAdapter.js +1 -1
  44. package/dist/concertBidAdapter.js +1 -1
  45. package/dist/connectadBidAdapter.js +1 -1
  46. package/dist/consentManagement.js +1 -1
  47. package/dist/consentManagementUsp.js +1 -1
  48. package/dist/consumableBidAdapter.js +1 -1
  49. package/dist/conversantAnalyticsAdapter.js +1 -1
  50. package/dist/conversantBidAdapter.js +1 -1
  51. package/dist/craftBidAdapter.js +1 -1
  52. package/dist/criteoBidAdapter.js +1 -1
  53. package/dist/datablocksAnalyticsAdapter.js +1 -1
  54. package/dist/dependencies.json +6 -0
  55. package/dist/dfpAdServerVideo.js +1 -1
  56. package/dist/discoveryBidAdapter.js +1 -1
  57. package/dist/dspxBidAdapter.js +1 -1
  58. package/dist/eplanningAnalyticsAdapter.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/finativeBidAdapter.js +1 -1
  61. package/dist/fintezaAnalyticsAdapter.js +1 -1
  62. package/dist/fluctBidAdapter.js +1 -1
  63. package/dist/ftrackIdSystem.js +1 -1
  64. package/dist/gdprEnforcement.js +1 -1
  65. package/dist/genericAnalyticsAdapter.js +1 -0
  66. package/dist/geoedgeRtdProvider.js +1 -1
  67. package/dist/glimpseBidAdapter.js +1 -1
  68. package/dist/glomexBidAdapter.js +1 -1
  69. package/dist/gmosspBidAdapter.js +1 -1
  70. package/dist/goldbachBidAdapter.js +1 -1
  71. package/dist/googleAnalyticsAdapter.js +1 -1
  72. package/dist/gravitoIdSystem.js +1 -1
  73. package/dist/gridBidAdapter.js +1 -1
  74. package/dist/gridNMBidAdapter.js +1 -1
  75. package/dist/growthCodeAnalyticsAdapter.js +1 -0
  76. package/dist/gumgumBidAdapter.js +1 -1
  77. package/dist/h12mediaBidAdapter.js +1 -1
  78. package/dist/hadronAnalyticsAdapter.js +1 -1
  79. package/dist/id5AnalyticsAdapter.js +1 -1
  80. package/dist/id5IdSystem.js +1 -1
  81. package/dist/impactifyBidAdapter.js +1 -1
  82. package/dist/improvedigitalBidAdapter.js +1 -1
  83. package/dist/inmarBidAdapter.js +1 -1
  84. package/dist/insticatorBidAdapter.js +1 -1
  85. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  86. package/dist/ixBidAdapter.js +1 -1
  87. package/dist/justpremiumBidAdapter.js +1 -1
  88. package/dist/jwplayerRtdProvider.js +1 -1
  89. package/dist/kargoAnalyticsAdapter.js +1 -1
  90. package/dist/kinessoIdSystem.js +1 -1
  91. package/dist/konduitAnalyticsAdapter.js +1 -1
  92. package/dist/kueezBidAdapter.js +1 -1
  93. package/dist/kueezRtbBidAdapter.js +1 -1
  94. package/dist/lassoBidAdapter.js +1 -1
  95. package/dist/lifestreetBidAdapter.js +1 -1
  96. package/dist/limelightDigitalBidAdapter.js +1 -1
  97. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  98. package/dist/liveIntentIdSystem.js +1 -1
  99. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  100. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  101. package/dist/logicadBidAdapter.js +1 -1
  102. package/dist/loglyliftBidAdapter.js +1 -1
  103. package/dist/lotamePanoramaIdSystem.js +1 -1
  104. package/dist/magniteAnalyticsAdapter.js +1 -1
  105. package/dist/malltvAnalyticsAdapter.js +1 -1
  106. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  107. package/dist/marsmediaBidAdapter.js +1 -1
  108. package/dist/mediafuseBidAdapter.js +1 -1
  109. package/dist/medianetAnalyticsAdapter.js +1 -1
  110. package/dist/mediasquareBidAdapter.js +1 -1
  111. package/dist/mgidBidAdapter.js +1 -1
  112. package/dist/minutemediaBidAdapter.js +1 -1
  113. package/dist/nextMillenniumBidAdapter.js +1 -1
  114. package/dist/nexx360BidAdapter.js +1 -1
  115. package/dist/not-for-prod/prebid.js +240 -202
  116. package/dist/oguryBidAdapter.js +1 -1
  117. package/dist/onetagBidAdapter.js +1 -1
  118. package/dist/ooloAnalyticsAdapter.js +1 -1
  119. package/dist/openxAnalyticsAdapter.js +1 -1
  120. package/dist/optimonAnalyticsAdapter.js +1 -1
  121. package/dist/outbrainBidAdapter.js +1 -1
  122. package/dist/parrableIdSystem.js +1 -1
  123. package/dist/pbsExtensions.js +1 -1
  124. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  125. package/dist/pixfutureBidAdapter.js +1 -1
  126. package/dist/prebid-core.js +1 -1
  127. package/dist/prebidServerBidAdapter.js +1 -1
  128. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  129. package/dist/pubCommonId.js +1 -1
  130. package/dist/pubProvidedIdSystem.js +1 -1
  131. package/dist/publinkIdSystem.js +1 -1
  132. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  133. package/dist/pubmaticBidAdapter.js +1 -1
  134. package/dist/pubperfAnalyticsAdapter.js +1 -1
  135. package/dist/pubstackAnalyticsAdapter.js +1 -1
  136. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  137. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  138. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  139. package/dist/pxyzBidAdapter.js +1 -1
  140. package/dist/quantcastBidAdapter.js +1 -1
  141. package/dist/quantcastIdSystem.js +1 -1
  142. package/dist/rasBidAdapter.js +1 -1
  143. package/dist/readpeakBidAdapter.js +1 -1
  144. package/dist/realvuAnalyticsAdapter.js +1 -1
  145. package/dist/redtramBidAdapter.js +1 -0
  146. package/dist/relaidoBidAdapter.js +1 -1
  147. package/dist/relevantAnalyticsAdapter.js +1 -1
  148. package/dist/rhythmoneBidAdapter.js +1 -1
  149. package/dist/riseBidAdapter.js +1 -1
  150. package/dist/rivrAnalyticsAdapter.js +1 -1
  151. package/dist/roxotAnalyticsAdapter.js +1 -1
  152. package/dist/rtbhouseBidAdapter.js +1 -1
  153. package/dist/rtdModule.js +1 -1
  154. package/dist/rubiconAnalyticsAdapter.js +1 -1
  155. package/dist/rubiconBidAdapter.js +1 -1
  156. package/dist/s2sTesting.js +1 -1
  157. package/dist/scaleableAnalyticsAdapter.js +1 -1
  158. package/dist/schain.js +1 -1
  159. package/dist/seedingAllianceBidAdapter.js +1 -1
  160. package/dist/seedtagBidAdapter.js +1 -1
  161. package/dist/sharedIdSystem.js +1 -1
  162. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  163. package/dist/sharethroughBidAdapter.js +1 -1
  164. package/dist/shinezBidAdapter.js +1 -1
  165. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  166. package/dist/smaatoBidAdapter.js +1 -1
  167. package/dist/smartadserverBidAdapter.js +1 -1
  168. package/dist/smartxBidAdapter.js +1 -1
  169. package/dist/smartytechBidAdapter.js +1 -0
  170. package/dist/smilewantedBidAdapter.js +1 -1
  171. package/dist/sonobiAnalyticsAdapter.js +1 -1
  172. package/dist/sonobiBidAdapter.js +1 -1
  173. package/dist/sovrnAnalyticsAdapter.js +1 -1
  174. package/dist/sovrnBidAdapter.js +1 -1
  175. package/dist/sspBCBidAdapter.js +1 -1
  176. package/dist/staqAnalyticsAdapter.js +1 -1
  177. package/dist/sublimeBidAdapter.js +1 -1
  178. package/dist/synacormediaBidAdapter.js +1 -1
  179. package/dist/taboolaBidAdapter.js +1 -1
  180. package/dist/tapadIdSystem.js +1 -1
  181. package/dist/tappxBidAdapter.js +1 -1
  182. package/dist/targetVideoBidAdapter.js +1 -1
  183. package/dist/teadsBidAdapter.js +1 -1
  184. package/dist/teadsIdSystem.js +1 -1
  185. package/dist/terceptAnalyticsAdapter.js +1 -1
  186. package/dist/trionBidAdapter.js +1 -1
  187. package/dist/tripleliftBidAdapter.js +1 -1
  188. package/dist/ttdBidAdapter.js +1 -1
  189. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  190. package/dist/underdogmediaBidAdapter.js +1 -1
  191. package/dist/undertoneBidAdapter.js +1 -1
  192. package/dist/userId.js +1 -1
  193. package/dist/vidazooBidAdapter.js +1 -1
  194. package/dist/videobyteBidAdapter.js +1 -1
  195. package/dist/viqeoBidAdapter.js +1 -0
  196. package/dist/visxBidAdapter.js +1 -1
  197. package/dist/vuukleBidAdapter.js +1 -1
  198. package/dist/weboramaRtdProvider.js +1 -1
  199. package/dist/widespaceBidAdapter.js +1 -1
  200. package/dist/winrBidAdapter.js +1 -1
  201. package/dist/yahoosspBidAdapter.js +1 -1
  202. package/dist/yandexBidAdapter.js +1 -1
  203. package/dist/yieldlabBidAdapter.js +1 -1
  204. package/dist/yieldliftBidAdapter.js +1 -1
  205. package/dist/yieldmoBidAdapter.js +1 -1
  206. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  207. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  208. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  209. package/dist/zeta_global_sspBidAdapter.js +1 -1
  210. package/dist/zeusPrimeRtdProvider.js +31 -0
  211. package/integrationExamples/gpt/captifyRtdProvider_example.html +167 -0
  212. package/integrationExamples/gpt/growthcode.html +134 -0
  213. package/libraries/analyticsAdapter/AnalyticsAdapter.js +95 -102
  214. package/modules/.submodules.json +3 -1
  215. package/modules/admaticBidAdapter.js +116 -58
  216. package/modules/admaticBidAdapter.md +2 -2
  217. package/modules/admixerBidAdapter.js +1 -1
  218. package/modules/aidemBidAdapter.js +492 -0
  219. package/modules/aidemBidAdapter.md +187 -0
  220. package/modules/beopBidAdapter.js +17 -2
  221. package/modules/browsiRtdProvider.js +6 -4
  222. package/modules/bucksenseBidAdapter.js +1 -1
  223. package/modules/captifyRtdProvider.js +146 -0
  224. package/modules/captifyRtdProvider.md +68 -0
  225. package/modules/criteoBidAdapter.js +3 -3
  226. package/modules/discoveryBidAdapter.js +38 -17
  227. package/modules/discoveryBidAdapter.md +7 -6
  228. package/modules/eplanningBidAdapter.js +2 -6
  229. package/modules/fluctBidAdapter.js +5 -0
  230. package/modules/gdprEnforcement.js +26 -24
  231. package/modules/genericAnalyticsAdapter.js +157 -0
  232. package/modules/geoedgeRtdProvider.js +22 -0
  233. package/modules/glomexBidAdapter.js +2 -0
  234. package/modules/gravitoIdSystem.js +3 -4
  235. package/modules/gridBidAdapter.js +441 -23
  236. package/modules/gridNMBidAdapter.js +1 -1
  237. package/modules/growthCodeAnalyticsAdapter.js +176 -0
  238. package/modules/growthCodeAnalyticsAdapter.md +41 -0
  239. package/modules/impactifyBidAdapter.js +19 -1
  240. package/modules/jwplayerRtdProvider.js +1 -2
  241. package/modules/limelightDigitalBidAdapter.js +1 -1
  242. package/modules/minutemediaBidAdapter.md +3 -3
  243. package/modules/nextMillenniumBidAdapter.js +19 -23
  244. package/modules/nexx360BidAdapter.js +264 -138
  245. package/modules/pubCommonId.js +2 -1
  246. package/modules/pubProvidedIdSystem.js +2 -0
  247. package/modules/rasBidAdapter.js +8 -3
  248. package/modules/rasBidAdapter.md +16 -15
  249. package/modules/redtramBidAdapter.js +155 -0
  250. package/modules/redtramBidAdapter.md +33 -0
  251. package/modules/riseBidAdapter.js +15 -0
  252. package/modules/riseBidAdapter.md +3 -3
  253. package/modules/rtbhouseBidAdapter.js +90 -29
  254. package/modules/rubiconBidAdapter.js +2 -1
  255. package/modules/seedtagBidAdapter.js +67 -56
  256. package/modules/seedtagBidAdapter.md +60 -0
  257. package/modules/sharedIdSystem.js +3 -1
  258. package/modules/smartadserverBidAdapter.js +6 -2
  259. package/modules/smartxBidAdapter.js +11 -8
  260. package/modules/smartytechBidAdapter.js +78 -0
  261. package/modules/smartytechBidAdapter.md +44 -0
  262. package/modules/smnBidAdapter.md +52 -0
  263. package/modules/taboolaBidAdapter.js +3 -3
  264. package/modules/taboolaBidAdapter.md +0 -2
  265. package/modules/tappxBidAdapter.js +21 -6
  266. package/modules/tripleliftBidAdapter.js +1 -1
  267. package/modules/ttdBidAdapter.js +8 -3
  268. package/modules/userId/index.js +1 -1
  269. package/modules/vidazooBidAdapter.js +26 -3
  270. package/modules/viqeoBidAdapter.js +180 -0
  271. package/modules/viqeoBidAdapter.md +56 -0
  272. package/modules/yandexBidAdapter.js +85 -19
  273. package/modules/yandexBidAdapter.md +7 -7
  274. package/modules/yieldlabBidAdapter.js +29 -12
  275. package/modules/yieldliftBidAdapter.js +3 -3
  276. package/modules/yieldoneBidAdapter.js +60 -8
  277. package/modules/yieldoneBidAdapter.md +109 -9
  278. package/modules/zeta_global_sspBidAdapter.js +4 -0
  279. package/modules/zeusPrimeRtdProvider.js +357 -0
  280. package/modules/zeusPrimeRtdProvider.md +60 -0
  281. package/package.json +1 -1
  282. package/src/adloader.js +0 -1
  283. package/src/auction.js +19 -3
  284. package/src/consentHandler.js +8 -0
  285. package/src/events.js +4 -0
  286. package/src/native.js +31 -20
  287. package/src/refererDetection.js +6 -1
  288. package/src/storageManager.js +6 -3
  289. package/test/helpers/analytics.js +34 -0
  290. package/test/mocks/analyticsStub.js +3 -1
  291. package/test/spec/AnalyticsAdapter_spec.js +119 -116
  292. package/test/spec/auctionmanager_spec.js +86 -0
  293. package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +10 -8
  294. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +18 -25
  295. package/test/spec/modules/admaticBidAdapter_spec.js +262 -3
  296. package/test/spec/modules/aidemBidAdapter_spec.js +664 -0
  297. package/test/spec/modules/beopBidAdapter_spec.js +52 -0
  298. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +0 -2
  299. package/test/spec/modules/browsiRtdProvider_spec.js +2 -1
  300. package/test/spec/modules/captifyRtdProvider_spec.js +253 -0
  301. package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -4
  302. package/test/spec/modules/discoveryBidAdapter_spec.js +9 -8
  303. package/test/spec/modules/enrichmentFpdModule_spec.js +3 -2
  304. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +0 -3
  305. package/test/spec/modules/eplanningBidAdapter_spec.js +4 -4
  306. package/test/spec/modules/fluctBidAdapter_spec.js +37 -1
  307. package/test/spec/modules/fpdModule_spec.js +1 -1
  308. package/test/spec/modules/gdprEnforcement_spec.js +115 -68
  309. package/test/spec/modules/genericAnalyticsAdapter_spec.js +284 -0
  310. package/test/spec/modules/geoedgeRtdProvider_spec.js +15 -0
  311. package/test/spec/modules/glomexBidAdapter_spec.js +4 -0
  312. package/test/spec/modules/gravitoIdSystem_spec.js +1 -1
  313. package/test/spec/modules/gridBidAdapter_spec.js +289 -1
  314. package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +70 -0
  315. package/test/spec/modules/impactifyBidAdapter_spec.js +13 -0
  316. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +17 -27
  317. package/test/spec/modules/jwplayerRtdProvider_spec.js +3 -3
  318. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +0 -2
  319. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -6
  320. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +7 -1
  321. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +4 -3
  322. package/test/spec/modules/nexx360BidAdapter_spec.js +441 -221
  323. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +3 -11
  324. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -11
  325. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +3 -12
  326. package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +6 -19
  327. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +3 -17
  328. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +13 -19
  329. package/test/spec/modules/rasBidAdapter_spec.js +5 -1
  330. package/test/spec/modules/redtramBidAdapter_spec.js +256 -0
  331. package/test/spec/modules/riseBidAdapter_spec.js +24 -0
  332. package/test/spec/modules/rtbhouseBidAdapter_spec.js +79 -0
  333. package/test/spec/modules/seedtagBidAdapter_spec.js +65 -92
  334. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +4 -8
  335. package/test/spec/modules/smartadserverBidAdapter_spec.js +80 -0
  336. package/test/spec/modules/smartxBidAdapter_spec.js +32 -0
  337. package/test/spec/modules/smartytechBidAdapter_spec.js +162 -0
  338. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +6 -18
  339. package/test/spec/modules/taboolaBidAdapter_spec.js +0 -77
  340. package/test/spec/modules/tripleliftBidAdapter_spec.js +3 -10
  341. package/test/spec/modules/ttdBidAdapter_spec.js +27 -0
  342. package/test/spec/modules/vidazooBidAdapter_spec.js +39 -24
  343. package/test/spec/modules/viqeoBidAdapter_spec.js +124 -0
  344. package/test/spec/modules/yandexBidAdapter_spec.js +22 -13
  345. package/test/spec/modules/yieldlabBidAdapter_spec.js +174 -20
  346. package/test/spec/modules/yieldliftBidAdapter_spec.js +1 -1
  347. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -2
  348. package/test/spec/modules/yieldoneBidAdapter_spec.js +30 -6
  349. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +16 -1
  350. package/test/spec/modules/zeusPrimeRtdProvider_spec.js +410 -0
  351. package/test/spec/native_spec.js +68 -56
  352. package/test/spec/refererDetection_spec.js +45 -7
  353. package/test/spec/unit/core/storageManager_spec.js +2 -1
@@ -1,47 +1,68 @@
1
1
  import CONSTANTS from '../../src/constants.json';
2
- import { ajax } from '../../src/ajax.js';
3
- import { logMessage, _each } from '../../src/utils.js';
4
- import * as events from '../../src/events.js'
2
+ import {ajax} from '../../src/ajax.js';
3
+ import {logError, logMessage} from '../../src/utils.js';
4
+ import * as events from '../../src/events.js';
5
5
 
6
6
  export const _internal = {
7
7
  ajax
8
8
  };
9
-
10
- const {
11
- EVENTS: {
12
- AUCTION_INIT,
13
- AUCTION_END,
14
- REQUEST_BIDS,
15
- BID_REQUESTED,
16
- BID_TIMEOUT,
17
- BID_RESPONSE,
18
- NO_BID,
19
- BID_WON,
20
- BID_ADJUSTMENT,
21
- BIDDER_DONE,
22
- SET_TARGETING,
23
- AD_RENDER_FAILED,
24
- AD_RENDER_SUCCEEDED,
25
- AUCTION_DEBUG,
26
- ADD_AD_UNITS,
27
- BILLABLE_EVENT
28
- }
29
- } = CONSTANTS;
30
-
31
9
  const ENDPOINT = 'endpoint';
32
10
  const BUNDLE = 'bundle';
33
11
 
12
+ export const DEFAULT_INCLUDE_EVENTS = Object.values(CONSTANTS.EVENTS)
13
+ .filter(ev => ev !== CONSTANTS.EVENTS.AUCTION_DEBUG);
14
+
15
+ let debounceDelay = 100;
16
+
17
+ export function setDebounceDelay(delay) {
18
+ debounceDelay = delay;
19
+ }
20
+
34
21
  export default function AnalyticsAdapter({ url, analyticsType, global, handler }) {
35
- const _queue = [];
36
- let _eventCount = 0;
37
- let _enableCheck = true;
38
- let _handlers;
39
- let _enabled = false;
40
- let _sampled = true;
41
-
42
- if (analyticsType === ENDPOINT || BUNDLE) {
43
- _emptyQueue();
44
- }
22
+ const queue = [];
23
+ let handlers;
24
+ let enabled = false;
25
+ let sampled = true;
26
+ let provider;
27
+
28
+ const emptyQueue = (() => {
29
+ let running = false;
30
+ let timer;
31
+ const clearQueue = () => {
32
+ if (!running) {
33
+ running = true; // needed to avoid recursive re-processing when analytics event handlers trigger other events
34
+ try {
35
+ let i = 0;
36
+ let notDecreasing = 0;
37
+ while (queue.length > 0) {
38
+ i++;
39
+ const len = queue.length;
40
+ queue.shift()();
41
+ if (queue.length >= len) {
42
+ notDecreasing++;
43
+ } else {
44
+ notDecreasing = 0
45
+ }
46
+ if (notDecreasing >= 10) {
47
+ logError('Detected probable infinite loop, discarding events', queue)
48
+ queue.length = 0;
49
+ return;
50
+ }
51
+ }
52
+ logMessage(`${provider} analytics: processed ${i} events`);
53
+ } finally {
54
+ running = false;
55
+ }
56
+ }
57
+ };
58
+ return function () {
59
+ if (timer != null) {
60
+ clearTimeout(timer);
61
+ timer = null;
62
+ }
63
+ debounceDelay === 0 ? clearQueue() : timer = setTimeout(clearQueue, debounceDelay);
64
+ }
65
+ })();
45
66
 
46
67
  return Object.defineProperties({
47
68
  track: _track,
@@ -54,7 +75,7 @@ export default function AnalyticsAdapter({ url, analyticsType, global, handler }
54
75
  getUrl: () => url
55
76
  }, {
56
77
  enabled: {
57
- get: () => _enabled
78
+ get: () => enabled
58
79
  }
59
80
  });
60
81
 
@@ -72,69 +93,58 @@ export default function AnalyticsAdapter({ url, analyticsType, global, handler }
72
93
  _internal.ajax(url, callback, JSON.stringify({ eventType, args }));
73
94
  }
74
95
 
75
- function _enqueue({ eventType, args }) {
76
- const _this = this;
77
-
78
- if (global && window[global] && eventType && args) {
79
- this.track({ eventType, args });
80
- } else {
81
- _queue.push(function () {
82
- _eventCount++;
83
- _this.track({ eventType, args });
84
- });
85
- }
96
+ function _enqueue({eventType, args}) {
97
+ queue.push(() => {
98
+ this.track({eventType, args});
99
+ });
100
+ emptyQueue();
86
101
  }
87
102
 
88
103
  function _enable(config) {
104
+ provider = config?.provider;
89
105
  var _this = this;
90
106
 
91
107
  if (typeof config === 'object' && typeof config.options === 'object') {
92
- _sampled = typeof config.options.sampling === 'undefined' || Math.random() < parseFloat(config.options.sampling);
108
+ sampled = typeof config.options.sampling === 'undefined' || Math.random() < parseFloat(config.options.sampling);
93
109
  } else {
94
- _sampled = true;
110
+ sampled = true;
95
111
  }
96
112
 
97
- if (_sampled) {
113
+ if (sampled) {
114
+ const trackedEvents = (() => {
115
+ const {includeEvents = DEFAULT_INCLUDE_EVENTS, excludeEvents = []} = (config || {});
116
+ return new Set(
117
+ Object.values(CONSTANTS.EVENTS)
118
+ .filter(ev => includeEvents.includes(ev))
119
+ .filter(ev => !excludeEvents.includes(ev))
120
+ );
121
+ })();
122
+
98
123
  // first send all events fired before enableAnalytics called
99
124
  events.getEvents().forEach(event => {
100
- if (!event) {
125
+ if (!event || !trackedEvents.has(event.eventType)) {
101
126
  return;
102
127
  }
103
128
 
104
129
  const { eventType, args } = event;
105
-
106
- if (eventType !== BID_TIMEOUT) {
107
- _enqueue.call(_this, { eventType, args });
108
- }
130
+ _enqueue.call(_this, { eventType, args });
109
131
  });
110
132
 
111
133
  // Next register event listeners to send data immediately
112
-
113
- _handlers = {
114
- [REQUEST_BIDS]: args => this.enqueue({ eventType: REQUEST_BIDS, args }),
115
- [BID_REQUESTED]: args => this.enqueue({ eventType: BID_REQUESTED, args }),
116
- [BID_RESPONSE]: args => this.enqueue({ eventType: BID_RESPONSE, args }),
117
- [NO_BID]: args => this.enqueue({ eventType: NO_BID, args }),
118
- [BID_TIMEOUT]: args => this.enqueue({ eventType: BID_TIMEOUT, args }),
119
- [BID_WON]: args => this.enqueue({ eventType: BID_WON, args }),
120
- [BID_ADJUSTMENT]: args => this.enqueue({ eventType: BID_ADJUSTMENT, args }),
121
- [BIDDER_DONE]: args => this.enqueue({ eventType: BIDDER_DONE, args }),
122
- [SET_TARGETING]: args => this.enqueue({ eventType: SET_TARGETING, args }),
123
- [AUCTION_END]: args => this.enqueue({ eventType: AUCTION_END, args }),
124
- [AD_RENDER_FAILED]: args => this.enqueue({ eventType: AD_RENDER_FAILED, args }),
125
- [AD_RENDER_SUCCEEDED]: args => this.enqueue({ eventType: AD_RENDER_SUCCEEDED, args }),
126
- [AUCTION_DEBUG]: args => this.enqueue({ eventType: AUCTION_DEBUG, args }),
127
- [ADD_AD_UNITS]: args => this.enqueue({ eventType: ADD_AD_UNITS, args }),
128
- [BILLABLE_EVENT]: args => this.enqueue({ eventType: BILLABLE_EVENT, args }),
129
- [AUCTION_INIT]: args => {
130
- args.config = typeof config === 'object' ? config.options || {} : {}; // enableAnaltyics configuration object
131
- this.enqueue({ eventType: AUCTION_INIT, args });
132
- }
133
- };
134
-
135
- _each(_handlers, (handler, event) => {
136
- events.on(event, handler);
137
- });
134
+ handlers = Object.fromEntries(
135
+ Array.from(trackedEvents)
136
+ .map((ev) => {
137
+ const handler = ev === CONSTANTS.EVENTS.AUCTION_INIT
138
+ ? (args) => {
139
+ // TODO: remove this special case in v8
140
+ args.config = typeof config === 'object' ? config.options || {} : {};
141
+ this.enqueue({eventType: ev, args});
142
+ }
143
+ : (args) => this.enqueue({eventType: ev, args});
144
+ events.on(ev, handler);
145
+ return [ev, handler];
146
+ })
147
+ )
138
148
  } else {
139
149
  logMessage(`Analytics adapter for "${global}" disabled by sampling`);
140
150
  }
@@ -144,31 +154,14 @@ export default function AnalyticsAdapter({ url, analyticsType, global, handler }
144
154
  this.enableAnalytics = function _enable() {
145
155
  return logMessage(`Analytics adapter for "${global}" already enabled, unnecessary call to \`enableAnalytics\`.`);
146
156
  };
147
- _enabled = true;
157
+ enabled = true;
148
158
  }
149
159
 
150
160
  function _disable() {
151
- _each(_handlers, (handler, event) => {
161
+ Object.entries(handlers || {}).forEach(([event, handler]) => {
152
162
  events.off(event, handler);
153
- });
163
+ })
154
164
  this.enableAnalytics = this._oldEnable ? this._oldEnable : _enable;
155
- _enabled = false;
156
- }
157
-
158
- function _emptyQueue() {
159
- if (_enableCheck) {
160
- for (var i = 0; i < _queue.length; i++) {
161
- _queue[i]();
162
- }
163
-
164
- // override push to execute the command immediately from now on
165
- _queue.push = function (fn) {
166
- fn();
167
- };
168
-
169
- _enableCheck = false;
170
- }
171
-
172
- logMessage(`event count sent to ${global}: ${_eventCount}`);
165
+ enabled = false;
173
166
  }
174
167
  }
@@ -57,6 +57,7 @@
57
57
  "akamaiDapRtdProvider",
58
58
  "blueconicRtdProvider",
59
59
  "browsiRtdProvider",
60
+ "captifyRtdProvider",
60
61
  "dgkeywordRtdProvider",
61
62
  "geoedgeRtdProvider",
62
63
  "hadronRtdProvider",
@@ -71,7 +72,8 @@
71
72
  "reconciliationRtdProvider",
72
73
  "sirdataRtdProvider",
73
74
  "timeoutRtdProvider",
74
- "weboramaRtdProvider"
75
+ "weboramaRtdProvider",
76
+ "zeusPrimeRtdProvider"
75
77
  ],
76
78
  "fpdModule": [
77
79
  "enrichmentFpdModule",
@@ -1,94 +1,102 @@
1
1
  import { getValue, logError, deepAccess, getBidIdParameter, isArray } from '../src/utils.js';
2
- import { loadExternalScript } from '../src/adloader.js';
3
- import {registerBidder} from '../src/adapters/bidderFactory.js';
4
-
5
- const ENDPOINT_URL = 'https://layer.serve.admatic.com.tr/pb';
6
- const SYNC_URL = 'https://cdn.serve.admatic.com.tr/showad/sync.js';
2
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
3
+ import { BANNER, VIDEO } from '../src/mediaTypes.js';
4
+ let SYNC_URL = '';
7
5
  const BIDDER_CODE = 'admatic';
8
-
9
6
  export const spec = {
10
- code: 'admatic',
11
- supportedMediaTypes: ['video', 'banner'],
12
- /**
13
- * Determines whether or not the given bid request is valid.
14
- *
15
- * @param {BidRequest} bid The bid params to validate.
16
- * @return boolean True if this is a valid bid, and false otherwise.
7
+ code: BIDDER_CODE,
8
+ aliases: [
9
+ {code: 'pixad'}
10
+ ],
11
+ supportedMediaTypes: [BANNER, VIDEO],
12
+ /** f
13
+ * @param {object} bid
14
+ * @return {boolean}
17
15
  */
18
- isBidRequestValid: function(bid) {
16
+ isBidRequestValid: (bid) => {
19
17
  let isValid = false;
20
- if (typeof bid.params !== 'undefined') {
21
- let isValidNetworkId = _validateId(getValue(bid.params, 'networkId'));
22
- isValid = isValidNetworkId;// && isValidTypeId;
18
+ if (bid?.params) {
19
+ const isValidNetworkId = _validateId(getValue(bid.params, 'networkId'));
20
+ const isValidHost = _validateString(getValue(bid.params, 'host'));
21
+ isValid = isValidNetworkId && isValidHost;
23
22
  }
24
23
 
25
24
  if (!isValid) {
26
- logError('AdMatic networkId parameters are required. Bid aborted.');
25
+ logError(`${bid.bidder} networkId and host parameters are required. Bid aborted.`);
27
26
  }
28
27
  return isValid;
29
28
  },
29
+
30
30
  /**
31
- * Make a server request from the list of BidRequests.
32
- *
33
- * @param {validBidRequests[]} an array of bids
34
- * @return ServerRequest Info describing the request to the server.
31
+ * @param {BidRequest[]} validBidRequests
32
+ * @return {ServerRequest}
35
33
  */
36
- buildRequests: function(validBidRequests, bidderRequest) {
34
+ buildRequests: (validBidRequests, bidderRequest) => {
37
35
  const bids = validBidRequests.map(buildRequestObject);
38
36
  const networkId = getValue(validBidRequests[0].params, 'networkId');
37
+ const host = getValue(validBidRequests[0].params, 'host');
39
38
  const currency = getValue(validBidRequests[0].params, 'currency') || 'TRY';
40
-
41
- setTimeout(() => {
42
- loadExternalScript(SYNC_URL, BIDDER_CODE);
43
- }, bidderRequest.timeout);
39
+ const bidderName = validBidRequests[0].bidder;
44
40
 
45
41
  const payload = {
46
- 'user': {
47
- 'ua': navigator.userAgent
42
+ user: {
43
+ ua: navigator.userAgent
48
44
  },
49
- 'blacklist': [],
50
- 'site': {
51
- 'page': location.href,
52
- 'ref': location.origin,
53
- 'publisher': {
54
- 'name': location.hostname,
55
- 'publisherId': networkId
45
+ blacklist: [],
46
+ site: {
47
+ page: location.href,
48
+ ref: location.origin,
49
+ publisher: {
50
+ name: location.hostname,
51
+ publisherId: networkId
56
52
  }
57
53
  },
58
54
  imp: bids,
59
55
  ext: {
60
- 'cur': currency,
61
- 'type': 'admatic'
56
+ cur: currency,
57
+ bidder: bidderName
62
58
  }
63
59
  };
64
60
 
65
- const payloadString = JSON.stringify(payload);
66
- return {
67
- method: 'POST',
68
- url: ENDPOINT_URL,
69
- data: payloadString,
70
- options: {
71
- contentType: 'application/json'
61
+ if (payload) {
62
+ switch (bidderName) {
63
+ case 'pixad':
64
+ SYNC_URL = 'https://static.pixad.com.tr/sync.html';
65
+ break;
66
+ default:
67
+ SYNC_URL = 'https://cdn.serve.admatic.com.tr/showad/sync.html';
68
+ break;
72
69
  }
73
- };
70
+
71
+ return { method: 'POST', url: `https://${host}/pb?bidder=${bidderName}`, data: payload, options: { contentType: 'application/json' } };
72
+ }
73
+ },
74
+
75
+ getUserSyncs: function (syncOptions, responses) {
76
+ if (syncOptions.iframeEnabled) {
77
+ return [{
78
+ type: 'iframe',
79
+ url: SYNC_URL
80
+ }];
81
+ }
74
82
  },
83
+
75
84
  /**
76
- * Unpack the response from the server into a list of bids.
77
- *
78
- * @param {*} serverResponse A successful response from the server.
79
- * @return {Bid[]} An array of bids which were nested inside the server.
85
+ * @param {*} response
86
+ * @param {ServerRequest} request
87
+ * @return {Bid[]}
80
88
  */
81
89
  interpretResponse: (response, request) => {
82
90
  const body = response.body || response;
83
91
  const bidResponses = [];
84
- if (body.data.length > 0) {
85
- body.data.forEach(function (bid) {
92
+ if (body && body?.data && isArray(body.data)) {
93
+ body.data.forEach(bid => {
86
94
  const resbid = {
87
95
  requestId: bid.id,
88
96
  cpm: bid.price,
89
97
  width: bid.width,
90
98
  height: bid.height,
91
- currency: body.cur,
99
+ currency: body.cur || 'TRY',
92
100
  netRevenue: true,
93
101
  ad: bid.party_tag,
94
102
  creativeId: bid.creative_id,
@@ -96,22 +104,68 @@ export const spec = {
96
104
  advertiserDomains: bid && bid.adomain ? bid.adomain : []
97
105
  },
98
106
  ttl: 360,
99
- bidder: 'admatic',
100
- timeToRespond: 1,
101
- requestTimestamp: 1
107
+ bidder: bid.bidder
102
108
  };
109
+
103
110
  bidResponses.push(resbid);
104
111
  });
105
- };
112
+ }
106
113
  return bidResponses;
107
114
  }
108
115
  };
109
116
 
117
+ function enrichSlotWithFloors(slot, bidRequest) {
118
+ try {
119
+ const slotFloors = {};
120
+
121
+ if (bidRequest.getFloor) {
122
+ if (bidRequest.mediaTypes?.banner) {
123
+ slotFloors.banner = {};
124
+ const bannerSizes = parseSizes(deepAccess(bidRequest, 'mediaTypes.banner.sizes'))
125
+ bannerSizes.forEach(bannerSize => slotFloors.banner[parseSize(bannerSize).toString()] = bidRequest.getFloor({ size: bannerSize, mediaType: BANNER }));
126
+ }
127
+
128
+ if (bidRequest.mediaTypes?.video) {
129
+ slotFloors.video = {};
130
+ const videoSizes = parseSizes(deepAccess(bidRequest, 'mediaTypes.video.playerSize'))
131
+ videoSizes.forEach(videoSize => slotFloors.video[parseSize(videoSize).toString()] = bidRequest.getFloor({ size: videoSize, mediaType: VIDEO }));
132
+ }
133
+
134
+ if (Object.keys(slotFloors).length > 0) {
135
+ if (!slot) {
136
+ slot = {}
137
+ }
138
+ Object.assign(slot, {
139
+ floors: slotFloors
140
+ });
141
+ }
142
+ }
143
+ } catch (e) {
144
+ logError('Could not parse floors from Prebid: ' + e);
145
+ }
146
+ }
147
+
148
+ function parseSizes(sizes, parser = s => s) {
149
+ if (sizes == undefined) {
150
+ return [];
151
+ }
152
+ if (Array.isArray(sizes[0])) { // is there several sizes ? (ie. [[728,90],[200,300]])
153
+ return sizes.map(size => parser(size));
154
+ }
155
+ return [parser(sizes)]; // or a single one ? (ie. [728,90])
156
+ }
157
+
158
+ function parseSize(size) {
159
+ return size[0] + 'x' + size[1];
160
+ }
161
+
110
162
  function buildRequestObject(bid) {
111
163
  const reqObj = {};
112
164
  reqObj.size = getSizes(bid);
113
165
  reqObj.id = getBidIdParameter('bidId', bid);
114
- reqObj.floor = getValue(bid.params, 'floor') || 0.01;
166
+
167
+ enrichSlotWithFloors(reqObj, bid);
168
+
115
169
  return reqObj;
116
170
  }
117
171
 
@@ -144,4 +198,8 @@ function _validateId(id) {
144
198
  return (parseInt(id) > 0);
145
199
  }
146
200
 
201
+ function _validateString(str) {
202
+ return (typeof str == 'string');
203
+ }
204
+
147
205
  registerBidder(spec);
@@ -19,7 +19,7 @@ Use `admatic` as bidder.
19
19
  bidder: 'admatic',
20
20
  params: {
21
21
  networkId: 12345,
22
- floor: 0.5
22
+ host: 'layer.serve.admatic.com.tr'
23
23
  }
24
24
  }]
25
25
  },{
@@ -29,7 +29,7 @@ Use `admatic` as bidder.
29
29
  bidder: 'admatic',
30
30
  params: {
31
31
  networkId: 12345,
32
- floor: 0.5
32
+ host: 'layer.serve.admatic.com.tr'
33
33
  }
34
34
  }]
35
35
  }];
@@ -5,7 +5,7 @@ import {BANNER, VIDEO, NATIVE} from '../src/mediaTypes.js';
5
5
  import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
6
6
 
7
7
  const BIDDER_CODE = 'admixer';
8
- const ALIASES = ['go2net', 'adblender', 'adsyield', 'futureads'];
8
+ const ALIASES = ['go2net', 'adblender', 'adsyield', 'futureads', 'smn'];
9
9
  const ENDPOINT_URL = 'https://inv-nets.admixer.net/prebid.1.2.aspx';
10
10
  export const spec = {
11
11
  code: BIDDER_CODE,