prebid.js 7.26.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 (305) 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/bidViewability.js +1 -1
  31. package/dist/bidglassBidAdapter.js +1 -1
  32. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  33. package/dist/big-richmediaBidAdapter.js +1 -1
  34. package/dist/bridgewellBidAdapter.js +1 -1
  35. package/dist/brightMountainMediaBidAdapter.js +1 -1
  36. package/dist/browsiRtdProvider.js +1 -1
  37. package/dist/bucksenseBidAdapter.js +1 -1
  38. package/dist/byDataAnalyticsAdapter.js +1 -1
  39. package/dist/carodaBidAdapter.js +1 -1
  40. package/dist/chtnwBidAdapter.js +1 -1
  41. package/dist/concertAnalyticsAdapter.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/conversantAnalyticsAdapter.js +1 -1
  48. package/dist/conversantBidAdapter.js +1 -1
  49. package/dist/craftBidAdapter.js +1 -1
  50. package/dist/criteoBidAdapter.js +1 -1
  51. package/dist/datablocksAnalyticsAdapter.js +1 -1
  52. package/dist/dependencies.json +6 -0
  53. package/dist/dfpAdServerVideo.js +1 -1
  54. package/dist/dspxBidAdapter.js +1 -1
  55. package/dist/eplanningAnalyticsAdapter.js +1 -1
  56. package/dist/eplanningBidAdapter.js +1 -1
  57. package/dist/finativeBidAdapter.js +1 -1
  58. package/dist/fintezaAnalyticsAdapter.js +1 -1
  59. package/dist/fluctBidAdapter.js +1 -1
  60. package/dist/ftrackIdSystem.js +1 -1
  61. package/dist/gdprEnforcement.js +1 -1
  62. package/dist/genericAnalyticsAdapter.js +1 -0
  63. package/dist/geoedgeRtdProvider.js +1 -1
  64. package/dist/glimpseBidAdapter.js +1 -1
  65. package/dist/glomexBidAdapter.js +1 -1
  66. package/dist/gmosspBidAdapter.js +1 -1
  67. package/dist/goldbachBidAdapter.js +1 -1
  68. package/dist/googleAnalyticsAdapter.js +1 -1
  69. package/dist/gravitoIdSystem.js +1 -1
  70. package/dist/gridBidAdapter.js +1 -1
  71. package/dist/gridNMBidAdapter.js +1 -1
  72. package/dist/growthCodeAnalyticsAdapter.js +1 -0
  73. package/dist/gumgumBidAdapter.js +1 -1
  74. package/dist/h12mediaBidAdapter.js +1 -1
  75. package/dist/hadronAnalyticsAdapter.js +1 -1
  76. package/dist/id5AnalyticsAdapter.js +1 -1
  77. package/dist/id5IdSystem.js +1 -1
  78. package/dist/impactifyBidAdapter.js +1 -1
  79. package/dist/improvedigitalBidAdapter.js +1 -1
  80. package/dist/inmarBidAdapter.js +1 -1
  81. package/dist/insticatorBidAdapter.js +1 -1
  82. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  83. package/dist/ixBidAdapter.js +1 -1
  84. package/dist/justpremiumBidAdapter.js +1 -1
  85. package/dist/jwplayerRtdProvider.js +1 -1
  86. package/dist/kargoAnalyticsAdapter.js +1 -1
  87. package/dist/kinessoIdSystem.js +1 -1
  88. package/dist/konduitAnalyticsAdapter.js +1 -1
  89. package/dist/kueezBidAdapter.js +1 -1
  90. package/dist/kueezRtbBidAdapter.js +1 -1
  91. package/dist/lassoBidAdapter.js +1 -1
  92. package/dist/lifestreetBidAdapter.js +1 -1
  93. package/dist/limelightDigitalBidAdapter.js +1 -1
  94. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  95. package/dist/liveIntentIdSystem.js +1 -1
  96. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  97. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  98. package/dist/logicadBidAdapter.js +1 -1
  99. package/dist/loglyliftBidAdapter.js +1 -1
  100. package/dist/lotamePanoramaIdSystem.js +1 -1
  101. package/dist/magniteAnalyticsAdapter.js +1 -1
  102. package/dist/malltvAnalyticsAdapter.js +1 -1
  103. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  104. package/dist/marsmediaBidAdapter.js +1 -1
  105. package/dist/mediafuseBidAdapter.js +1 -1
  106. package/dist/medianetAnalyticsAdapter.js +1 -1
  107. package/dist/mediasquareBidAdapter.js +1 -1
  108. package/dist/mgidBidAdapter.js +1 -1
  109. package/dist/minutemediaBidAdapter.js +1 -1
  110. package/dist/nexx360BidAdapter.js +1 -1
  111. package/dist/not-for-prod/prebid.js +200 -196
  112. package/dist/oguryBidAdapter.js +1 -1
  113. package/dist/onetagBidAdapter.js +1 -1
  114. package/dist/ooloAnalyticsAdapter.js +1 -1
  115. package/dist/openxAnalyticsAdapter.js +1 -1
  116. package/dist/optimonAnalyticsAdapter.js +1 -1
  117. package/dist/outbrainBidAdapter.js +1 -1
  118. package/dist/parrableIdSystem.js +1 -1
  119. package/dist/pbsExtensions.js +1 -1
  120. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  121. package/dist/pixfutureBidAdapter.js +1 -1
  122. package/dist/prebid-core.js +1 -1
  123. package/dist/prebidServerBidAdapter.js +1 -1
  124. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  125. package/dist/pubCommonId.js +1 -1
  126. package/dist/pubProvidedIdSystem.js +1 -1
  127. package/dist/publinkIdSystem.js +1 -1
  128. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  129. package/dist/pubmaticBidAdapter.js +1 -1
  130. package/dist/pubperfAnalyticsAdapter.js +1 -1
  131. package/dist/pubstackAnalyticsAdapter.js +1 -1
  132. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  133. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  134. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  135. package/dist/pxyzBidAdapter.js +1 -1
  136. package/dist/quantcastBidAdapter.js +1 -1
  137. package/dist/quantcastIdSystem.js +1 -1
  138. package/dist/rasBidAdapter.js +1 -1
  139. package/dist/readpeakBidAdapter.js +1 -1
  140. package/dist/realvuAnalyticsAdapter.js +1 -1
  141. package/dist/redtramBidAdapter.js +1 -0
  142. package/dist/relaidoBidAdapter.js +1 -1
  143. package/dist/relevantAnalyticsAdapter.js +1 -1
  144. package/dist/rhythmoneBidAdapter.js +1 -1
  145. package/dist/riseBidAdapter.js +1 -1
  146. package/dist/rivrAnalyticsAdapter.js +1 -1
  147. package/dist/roxotAnalyticsAdapter.js +1 -1
  148. package/dist/rtbhouseBidAdapter.js +1 -1
  149. package/dist/rtdModule.js +1 -1
  150. package/dist/rubiconAnalyticsAdapter.js +1 -1
  151. package/dist/rubiconBidAdapter.js +1 -1
  152. package/dist/s2sTesting.js +1 -1
  153. package/dist/scaleableAnalyticsAdapter.js +1 -1
  154. package/dist/schain.js +1 -1
  155. package/dist/seedingAllianceBidAdapter.js +1 -1
  156. package/dist/seedtagBidAdapter.js +1 -1
  157. package/dist/sharedIdSystem.js +1 -1
  158. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  159. package/dist/sharethroughBidAdapter.js +1 -1
  160. package/dist/shinezBidAdapter.js +1 -1
  161. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  162. package/dist/smaatoBidAdapter.js +1 -1
  163. package/dist/smartadserverBidAdapter.js +1 -1
  164. package/dist/smartxBidAdapter.js +1 -1
  165. package/dist/smilewantedBidAdapter.js +1 -1
  166. package/dist/sonobiAnalyticsAdapter.js +1 -1
  167. package/dist/sonobiBidAdapter.js +1 -1
  168. package/dist/sovrnAnalyticsAdapter.js +1 -1
  169. package/dist/sovrnBidAdapter.js +1 -1
  170. package/dist/sspBCBidAdapter.js +1 -1
  171. package/dist/staqAnalyticsAdapter.js +1 -1
  172. package/dist/sublimeBidAdapter.js +1 -1
  173. package/dist/synacormediaBidAdapter.js +1 -1
  174. package/dist/tapadIdSystem.js +1 -1
  175. package/dist/targetVideoBidAdapter.js +1 -1
  176. package/dist/teadsBidAdapter.js +1 -1
  177. package/dist/teadsIdSystem.js +1 -1
  178. package/dist/terceptAnalyticsAdapter.js +1 -1
  179. package/dist/trionBidAdapter.js +1 -1
  180. package/dist/tripleliftBidAdapter.js +1 -1
  181. package/dist/ttdBidAdapter.js +1 -1
  182. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  183. package/dist/underdogmediaBidAdapter.js +1 -1
  184. package/dist/undertoneBidAdapter.js +1 -1
  185. package/dist/userId.js +1 -1
  186. package/dist/vidazooBidAdapter.js +1 -1
  187. package/dist/videobyteBidAdapter.js +1 -1
  188. package/dist/visxBidAdapter.js +1 -1
  189. package/dist/vuukleBidAdapter.js +1 -1
  190. package/dist/weboramaRtdProvider.js +1 -1
  191. package/dist/widespaceBidAdapter.js +1 -1
  192. package/dist/winrBidAdapter.js +1 -1
  193. package/dist/yahoosspBidAdapter.js +1 -1
  194. package/dist/yandexBidAdapter.js +1 -1
  195. package/dist/yieldlabBidAdapter.js +1 -1
  196. package/dist/yieldliftBidAdapter.js +1 -1
  197. package/dist/yieldmoBidAdapter.js +1 -1
  198. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  199. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  200. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  201. package/integrationExamples/gpt/growthcode.html +134 -0
  202. package/libraries/analyticsAdapter/AnalyticsAdapter.js +95 -102
  203. package/modules/admaticBidAdapter.js +10 -1
  204. package/modules/admixerBidAdapter.js +1 -1
  205. package/modules/aidemBidAdapter.js +492 -0
  206. package/modules/aidemBidAdapter.md +187 -0
  207. package/modules/browsiRtdProvider.js +6 -4
  208. package/modules/bucksenseBidAdapter.js +1 -1
  209. package/modules/criteoBidAdapter.js +3 -3
  210. package/modules/eplanningBidAdapter.js +2 -6
  211. package/modules/fluctBidAdapter.js +5 -0
  212. package/modules/gdprEnforcement.js +26 -24
  213. package/modules/genericAnalyticsAdapter.js +157 -0
  214. package/modules/geoedgeRtdProvider.js +22 -0
  215. package/modules/glomexBidAdapter.js +2 -0
  216. package/modules/gravitoIdSystem.js +3 -4
  217. package/modules/gridBidAdapter.js +1 -1
  218. package/modules/gridNMBidAdapter.js +1 -1
  219. package/modules/growthCodeAnalyticsAdapter.js +176 -0
  220. package/modules/growthCodeAnalyticsAdapter.md +41 -0
  221. package/modules/impactifyBidAdapter.js +19 -1
  222. package/modules/jwplayerRtdProvider.js +1 -2
  223. package/modules/limelightDigitalBidAdapter.js +1 -1
  224. package/modules/minutemediaBidAdapter.md +3 -3
  225. package/modules/nexx360BidAdapter.js +264 -138
  226. package/modules/pubCommonId.js +2 -1
  227. package/modules/pubProvidedIdSystem.js +2 -0
  228. package/modules/rasBidAdapter.js +8 -3
  229. package/modules/rasBidAdapter.md +16 -15
  230. package/modules/redtramBidAdapter.js +155 -0
  231. package/modules/redtramBidAdapter.md +33 -0
  232. package/modules/riseBidAdapter.js +15 -0
  233. package/modules/riseBidAdapter.md +3 -3
  234. package/modules/rtbhouseBidAdapter.js +90 -29
  235. package/modules/rubiconBidAdapter.js +2 -1
  236. package/modules/seedtagBidAdapter.js +67 -56
  237. package/modules/seedtagBidAdapter.md +60 -0
  238. package/modules/sharedIdSystem.js +3 -1
  239. package/modules/smartxBidAdapter.js +1 -1
  240. package/modules/smnBidAdapter.md +52 -0
  241. package/modules/tripleliftBidAdapter.js +1 -1
  242. package/modules/ttdBidAdapter.js +4 -0
  243. package/modules/vidazooBidAdapter.js +11 -1
  244. package/modules/yandexBidAdapter.js +85 -19
  245. package/modules/yandexBidAdapter.md +7 -7
  246. package/modules/yieldlabBidAdapter.js +10 -4
  247. package/modules/yieldliftBidAdapter.js +3 -3
  248. package/package.json +1 -1
  249. package/src/auction.js +19 -3
  250. package/src/consentHandler.js +8 -0
  251. package/src/events.js +4 -0
  252. package/src/native.js +31 -20
  253. package/src/refererDetection.js +6 -1
  254. package/src/storageManager.js +6 -3
  255. package/test/helpers/analytics.js +34 -0
  256. package/test/mocks/analyticsStub.js +3 -1
  257. package/test/spec/AnalyticsAdapter_spec.js +119 -116
  258. package/test/spec/auctionmanager_spec.js +86 -0
  259. package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +10 -8
  260. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +18 -25
  261. package/test/spec/modules/aidemBidAdapter_spec.js +664 -0
  262. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +0 -2
  263. package/test/spec/modules/browsiRtdProvider_spec.js +2 -1
  264. package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -4
  265. package/test/spec/modules/enrichmentFpdModule_spec.js +3 -2
  266. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +0 -3
  267. package/test/spec/modules/eplanningBidAdapter_spec.js +4 -4
  268. package/test/spec/modules/fluctBidAdapter_spec.js +37 -1
  269. package/test/spec/modules/fpdModule_spec.js +1 -1
  270. package/test/spec/modules/gdprEnforcement_spec.js +115 -68
  271. package/test/spec/modules/genericAnalyticsAdapter_spec.js +284 -0
  272. package/test/spec/modules/geoedgeRtdProvider_spec.js +15 -0
  273. package/test/spec/modules/glomexBidAdapter_spec.js +4 -0
  274. package/test/spec/modules/gravitoIdSystem_spec.js +1 -1
  275. package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +70 -0
  276. package/test/spec/modules/impactifyBidAdapter_spec.js +13 -0
  277. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +17 -27
  278. package/test/spec/modules/jwplayerRtdProvider_spec.js +3 -3
  279. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +0 -2
  280. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -6
  281. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +7 -1
  282. package/test/spec/modules/nexx360BidAdapter_spec.js +441 -221
  283. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +3 -11
  284. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -11
  285. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +3 -12
  286. package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +6 -19
  287. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +3 -17
  288. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +13 -19
  289. package/test/spec/modules/rasBidAdapter_spec.js +5 -1
  290. package/test/spec/modules/redtramBidAdapter_spec.js +256 -0
  291. package/test/spec/modules/riseBidAdapter_spec.js +24 -0
  292. package/test/spec/modules/rtbhouseBidAdapter_spec.js +79 -0
  293. package/test/spec/modules/seedtagBidAdapter_spec.js +65 -92
  294. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +4 -8
  295. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +6 -18
  296. package/test/spec/modules/tripleliftBidAdapter_spec.js +3 -10
  297. package/test/spec/modules/ttdBidAdapter_spec.js +14 -0
  298. package/test/spec/modules/vidazooBidAdapter_spec.js +39 -24
  299. package/test/spec/modules/yandexBidAdapter_spec.js +22 -13
  300. package/test/spec/modules/yieldlabBidAdapter_spec.js +49 -20
  301. package/test/spec/modules/yieldliftBidAdapter_spec.js +1 -1
  302. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -2
  303. package/test/spec/native_spec.js +68 -56
  304. package/test/spec/refererDetection_spec.js +45 -7
  305. 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
  }
@@ -1,7 +1,7 @@
1
1
  import { getValue, logError, deepAccess, getBidIdParameter, isArray } from '../src/utils.js';
2
2
  import { registerBidder } from '../src/adapters/bidderFactory.js';
3
3
  import { BANNER, VIDEO } from '../src/mediaTypes.js';
4
- const SYNC_URL = 'https://cdn.serve.admatic.com.tr/showad/sync.html';
4
+ let SYNC_URL = '';
5
5
  const BIDDER_CODE = 'admatic';
6
6
  export const spec = {
7
7
  code: BIDDER_CODE,
@@ -59,6 +59,15 @@ export const spec = {
59
59
  };
60
60
 
61
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;
69
+ }
70
+
62
71
  return { method: 'POST', url: `https://${host}/pb?bidder=${bidderName}`, data: payload, options: { contentType: 'application/json' } };
63
72
  }
64
73
  },
@@ -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,