prebid.js 9.2.0 → 9.3.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 (224) hide show
  1. package/dist/33acrossAnalyticsAdapter.js +1 -1
  2. package/dist/33acrossBidAdapter.js +1 -1
  3. package/dist/33acrossIdSystem.js +1 -1
  4. package/dist/BTBidAdapter.js +1 -1
  5. package/dist/adagioAnalyticsAdapter.js +1 -1
  6. package/dist/adagioBidAdapter.js +1 -1
  7. package/dist/adagioUtils.js +1 -1
  8. package/dist/addefendBidAdapter.js +1 -1
  9. package/dist/adgenerationBidAdapter.js +1 -1
  10. package/dist/adlooxRtdProvider.js +1 -1
  11. package/dist/adnuntiusBidAdapter.js +1 -1
  12. package/dist/adqueryBidAdapter.js +1 -1
  13. package/dist/adrelevantisBidAdapter.js +1 -1
  14. package/dist/adstirBidAdapter.js +1 -1
  15. package/dist/adtrgtmeBidAdapter.js +1 -1
  16. package/dist/adxcgAnalyticsAdapter.js +1 -1
  17. package/dist/adxcgBidAdapter.js +1 -1
  18. package/dist/adyoulikeBidAdapter.js +1 -1
  19. package/dist/agmaAnalyticsAdapter.js +1 -1
  20. package/dist/ajaBidAdapter.js +1 -1
  21. package/dist/amxBidAdapter.js +1 -1
  22. package/dist/amxIdSystem.js +1 -1
  23. package/dist/appierAnalyticsAdapter.js +1 -1
  24. package/dist/appnexusBidAdapter.js +1 -1
  25. package/dist/asoBidAdapter.js +1 -1
  26. package/dist/axonixBidAdapter.js +1 -1
  27. package/dist/bidglassBidAdapter.js +1 -1
  28. package/dist/big-richmediaBidAdapter.js +1 -1
  29. package/dist/bridBidAdapter.js +1 -1
  30. package/dist/bridgewellBidAdapter.js +1 -1
  31. package/dist/brightMountainMediaBidAdapter.js +1 -1
  32. package/dist/carodaBidAdapter.js +1 -1
  33. package/dist/chtnwBidAdapter.js +1 -1
  34. package/dist/chunk-core.js +1 -1
  35. package/dist/concertBidAdapter.js +1 -1
  36. package/dist/connectadBidAdapter.js +1 -1
  37. package/dist/consentManagement.js +1 -0
  38. package/dist/consentManagementGpp.js +1 -1
  39. package/dist/consentManagementTcf.js +1 -1
  40. package/dist/consumableBidAdapter.js +1 -1
  41. package/dist/conversantAnalyticsAdapter.js +1 -1
  42. package/dist/conversantBidAdapter.js +1 -1
  43. package/dist/copper6sspBidAdapter.js +1 -0
  44. package/dist/craftBidAdapter.js +1 -1
  45. package/dist/criteoBidAdapter.js +1 -1
  46. package/dist/cwireBidAdapter.js +1 -1
  47. package/dist/dailymotionBidAdapter.js +1 -1
  48. package/dist/dependencies.json +18 -4
  49. package/dist/dspxBidAdapter.js +1 -1
  50. package/dist/dxkultureBidAdapter.js +1 -1
  51. package/dist/eplanningBidAdapter.js +1 -1
  52. package/dist/euidIdSystem.js +1 -1
  53. package/dist/exadsBidAdapter.js +1 -1
  54. package/dist/feedadBidAdapter.js +1 -1
  55. package/dist/finativeBidAdapter.js +1 -1
  56. package/dist/freewheel-sspBidAdapter.js +1 -1
  57. package/dist/gmosspBidAdapter.js +1 -1
  58. package/dist/goldbachBidAdapter.js +1 -1
  59. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  60. package/dist/greenbidsRtdProvider.js +1 -1
  61. package/dist/gridBidAdapter.js +1 -1
  62. package/dist/gumgumBidAdapter.js +1 -1
  63. package/dist/h12mediaBidAdapter.js +1 -1
  64. package/dist/hypelabBidAdapter.js +1 -1
  65. package/dist/id5AnalyticsAdapter.js +1 -1
  66. package/dist/id5IdSystem.js +1 -1
  67. package/dist/illuminBidAdapter.js +1 -1
  68. package/dist/imdsBidAdapter.js +1 -1
  69. package/dist/improvedigitalBidAdapter.js +1 -1
  70. package/dist/insticatorBidAdapter.js +1 -1
  71. package/dist/intentIqIdSystem.js +1 -1
  72. package/dist/ixBidAdapter.js +1 -1
  73. package/dist/jixieBidAdapter.js +1 -1
  74. package/dist/justpremiumBidAdapter.js +1 -1
  75. package/dist/kargoBidAdapter.js +1 -1
  76. package/dist/kimberliteBidAdapter.js +1 -1
  77. package/dist/konduitAnalyticsAdapter.js +1 -1
  78. package/dist/kueezBidAdapter.js +1 -1
  79. package/dist/kueezRtbBidAdapter.js +1 -1
  80. package/dist/lassoBidAdapter.js +1 -1
  81. package/dist/lifestreetBidAdapter.js +1 -1
  82. package/dist/liveIntentIdSystem.js +1 -1
  83. package/dist/logicadBidAdapter.js +1 -1
  84. package/dist/loglyliftBidAdapter.js +1 -1
  85. package/dist/luceadBidAdapter.js +1 -1
  86. package/dist/mabidderBidAdapter.js +1 -1
  87. package/dist/magniteAnalyticsAdapter.js +1 -1
  88. package/dist/malltvAnalyticsAdapter.js +1 -1
  89. package/dist/marsmediaBidAdapter.js +1 -1
  90. package/dist/mediafuseBidAdapter.js +1 -1
  91. package/dist/medianetAnalyticsAdapter.js +1 -1
  92. package/dist/medianetBidAdapter.js +1 -1
  93. package/dist/mediasquareBidAdapter.js +1 -1
  94. package/dist/mgidBidAdapter.js +1 -1
  95. package/dist/minutemediaBidAdapter.js +1 -1
  96. package/dist/missenaBidAdapter.js +1 -1
  97. package/dist/nexx360BidAdapter.js +1 -1
  98. package/dist/nobidAnalyticsAdapter.js +1 -1
  99. package/dist/nobidBidAdapter.js +1 -1
  100. package/dist/not-for-prod/prebid.js +172 -167
  101. package/dist/oguryBidAdapter.js +1 -1
  102. package/dist/onetagBidAdapter.js +1 -1
  103. package/dist/ooloAnalyticsAdapter.js +1 -1
  104. package/dist/openwebBidAdapter.js +1 -1
  105. package/dist/openxBidAdapter.js +1 -1
  106. package/dist/optidigitalBidAdapter.js +1 -1
  107. package/dist/orakiBidAdapter.js +1 -0
  108. package/dist/orbidderBidAdapter.js +1 -1
  109. package/dist/outbrainBidAdapter.js +1 -1
  110. package/dist/pairIdSystem.js +1 -1
  111. package/dist/pixfutureBidAdapter.js +1 -1
  112. package/dist/prebidServerBidAdapter.js +1 -1
  113. package/dist/publinkIdSystem.js +1 -1
  114. package/dist/publirBidAdapter.js +1 -1
  115. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  116. package/dist/pubmaticBidAdapter.js +1 -1
  117. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  118. package/dist/pxyzBidAdapter.js +1 -1
  119. package/dist/quantcastBidAdapter.js +1 -1
  120. package/dist/readpeakBidAdapter.js +1 -1
  121. package/dist/relaidoBidAdapter.js +1 -1
  122. package/dist/retailspotBidAdapter.js +1 -1
  123. package/dist/rhythmoneBidAdapter.js +1 -1
  124. package/dist/riseBidAdapter.js +1 -1
  125. package/dist/rubiconBidAdapter.js +1 -1
  126. package/dist/seedingAllianceBidAdapter.js +1 -1
  127. package/dist/seedtagBidAdapter.js +1 -1
  128. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  129. package/dist/sharethroughBidAdapter.js +1 -1
  130. package/dist/shinezBidAdapter.js +1 -1
  131. package/dist/shinezRtbBidAdapter.js +1 -1
  132. package/dist/smaatoBidAdapter.js +1 -1
  133. package/dist/smartadserverBidAdapter.js +1 -1
  134. package/dist/smartxBidAdapter.js +1 -1
  135. package/dist/smartyadsBidAdapter.js +1 -1
  136. package/dist/smartyadsUtils.js +1 -0
  137. package/dist/smilewantedBidAdapter.js +1 -1
  138. package/dist/snigelBidAdapter.js +1 -1
  139. package/dist/sonobiBidAdapter.js +1 -1
  140. package/dist/sovrnBidAdapter.js +1 -1
  141. package/dist/sspBCBidAdapter.js +1 -1
  142. package/dist/stnBidAdapter.js +1 -1
  143. package/dist/stvBidAdapter.js +1 -1
  144. package/dist/sublimeBidAdapter.js +1 -1
  145. package/dist/taboolaBidAdapter.js +1 -1
  146. package/dist/tagorasBidAdapter.js +1 -1
  147. package/dist/tappxBidAdapter.js +1 -1
  148. package/dist/targetVideoBidAdapter.js +1 -1
  149. package/dist/teadsBidAdapter.js +1 -1
  150. package/dist/terceptAnalyticsAdapter.js +1 -1
  151. package/dist/themoneytizerBidAdapter.js +1 -1
  152. package/dist/trionBidAdapter.js +1 -1
  153. package/dist/tripleliftBidAdapter.js +1 -1
  154. package/dist/ttdBidAdapter.js +1 -1
  155. package/dist/twistDigitalBidAdapter.js +1 -1
  156. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  157. package/dist/uid2IdSystem.js +1 -1
  158. package/dist/underdogmediaBidAdapter.js +1 -1
  159. package/dist/undertoneBidAdapter.js +1 -1
  160. package/dist/unrulyBidAdapter.js +1 -1
  161. package/dist/userId.js +1 -1
  162. package/dist/vidazooBidAdapter.js +1 -1
  163. package/dist/vidazooUtils.js +1 -0
  164. package/dist/videobyteBidAdapter.js +1 -1
  165. package/dist/visxBidAdapter.js +1 -1
  166. package/dist/vuukleBidAdapter.js +1 -1
  167. package/dist/widespaceBidAdapter.js +1 -1
  168. package/dist/winrBidAdapter.js +1 -1
  169. package/dist/yahooAdsBidAdapter.js +1 -1
  170. package/dist/yieldmoBidAdapter.js +1 -1
  171. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  172. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  173. package/libraries/consentManagement/cmUtils.js +38 -0
  174. package/libraries/smartyadsUtils/getAdUrlByRegion.js +32 -0
  175. package/libraries/vidazooUtils/bidderUtils.js +481 -0
  176. package/libraries/vidazooUtils/constants.js +7 -0
  177. package/modules/addefendBidAdapter.js +1 -2
  178. package/modules/adlooxRtdProvider.js +1 -1
  179. package/modules/adnuntiusBidAdapter.js +1 -0
  180. package/modules/adxcgAnalyticsAdapter.js +1 -2
  181. package/modules/consentManagementGpp.js +2 -38
  182. package/modules/consentManagementTcf.js +7 -38
  183. package/modules/conversantAnalyticsAdapter.js +1 -2
  184. package/modules/copper6sspBidAdapter.js +19 -0
  185. package/modules/copper6sspBidAdapter.md +79 -0
  186. package/modules/criteoBidAdapter.js +10 -3
  187. package/modules/id5AnalyticsAdapter.js +1 -2
  188. package/modules/intentIqIdSystem.js +408 -50
  189. package/modules/intentIqIdSystem.md +92 -0
  190. package/modules/liveIntentIdSystem.js +2 -2
  191. package/modules/mabidderBidAdapter.js +1 -2
  192. package/modules/medianetAnalyticsAdapter.js +1 -2
  193. package/modules/medianetBidAdapter.js +1 -1
  194. package/modules/orakiBidAdapter.js +19 -0
  195. package/modules/orakiBidAdapter.md +79 -0
  196. package/modules/orbidderBidAdapter.js +4 -2
  197. package/modules/pairIdSystem.js +27 -10
  198. package/modules/pixfutureBidAdapter.js +1 -2
  199. package/modules/prebidServerBidAdapter/index.js +1 -1
  200. package/modules/seedtagBidAdapter.js +4 -0
  201. package/modules/smartadserverBidAdapter.js +3 -0
  202. package/modules/smartyadsBidAdapter.js +6 -110
  203. package/modules/snigelBidAdapter.js +1 -2
  204. package/modules/tappxBidAdapter.js +1 -2
  205. package/modules/terceptAnalyticsAdapter.js +1 -2
  206. package/modules/twistDigitalBidAdapter.js +1 -12
  207. package/modules/userId/index.js +31 -21
  208. package/modules/vidazooBidAdapter.js +26 -468
  209. package/modules/yahooAdsBidAdapter.js +4 -1
  210. package/modules/yuktamediaAnalyticsAdapter.js +1 -2
  211. package/package.json +1 -1
  212. package/test/spec/fpd/gdpr_spec.js +24 -2
  213. package/test/spec/modules/adnuntiusBidAdapter_spec.js +6 -3
  214. package/test/spec/modules/conversantAnalyticsAdapter_spec.js +1 -1
  215. package/test/spec/modules/copper6sspBidAdapter_spec.js +514 -0
  216. package/test/spec/modules/intentIqIdSystem_spec.js +264 -36
  217. package/test/spec/modules/orakiBidAdapter_spec.js +510 -0
  218. package/test/spec/modules/seedtagBidAdapter_spec.js +27 -0
  219. package/test/spec/modules/smartadserverBidAdapter_spec.js +7 -0
  220. package/test/spec/modules/smartyadsBidAdapter_spec.js +6 -83
  221. package/test/spec/modules/twistDigitalBidAdapter_spec.js +5 -3
  222. package/test/spec/modules/userId_spec.js +86 -47
  223. package/test/spec/modules/vidazooBidAdapter_spec.js +21 -23
  224. package/test/spec/modules/yahooAdsBidAdapter_spec.js +1 -1
@@ -1,6 +1,5 @@
1
1
  import { registerBidder } from '../src/adapters/bidderFactory.js';
2
2
  import { BANNER } from '../src/mediaTypes.js';
3
- import { getGlobal } from '../src/prebidGlobal.js';
4
3
  import { ortbConverter } from '../libraries/ortbConverter/converter.js';
5
4
 
6
5
  const BIDDER_CODE = 'mabidder';
@@ -39,7 +38,7 @@ export const spec = {
39
38
  url: baseUrl,
40
39
  method: 'POST',
41
40
  data: {
42
- v: getGlobal().version,
41
+ v: 'v' + '$prebid.version$',
43
42
  bids: bids,
44
43
  url: bidderRequest.refererInfo.page || '',
45
44
  referer: bidderRequest.refererInfo.ref || '',
@@ -36,8 +36,7 @@ const PRICE_GRANULARITY = {
36
36
  };
37
37
 
38
38
  const MEDIANET_BIDDER_CODE = 'medianet';
39
- // eslint-disable-next-line no-undef
40
- const PREBID_VERSION = getGlobal().version;
39
+ const PREBID_VERSION = '$prebid.version$'
41
40
  const ERROR_CONFIG_JSON_PARSE = 'analytics_config_parse_fail';
42
41
  const ERROR_CONFIG_FETCH = 'analytics_config_ajax_fail';
43
42
  const ERROR_WINNING_BID_ABSENT = 'winning_bid_absent';
@@ -186,7 +186,7 @@ function extParams(bidRequest, bidderRequests) {
186
186
  const coppaApplies = !!(config.getConfig('coppa'));
187
187
  return Object.assign({},
188
188
  { customer_id: params.cid },
189
- { prebid_version: getGlobal().version },
189
+ { prebid_version: 'v' + '$prebid.version$' },
190
190
  { gdpr_applies: gdprApplies },
191
191
  (gdprApplies) && { gdpr_consent_string: gdpr.consentString || '' },
192
192
  { usp_applies: uspApplies },
@@ -0,0 +1,19 @@
1
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
2
+ import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
3
+ import { isBidRequestValid, buildRequests, interpretResponse, getUserSyncs } from '../libraries/teqblazeUtils/bidderUtils.js';
4
+
5
+ const BIDDER_CODE = 'oraki';
6
+ const AD_URL = 'https://eu1.oraki.io/pbjs';
7
+ const SYNC_URL = 'https://sync.oraki.io';
8
+
9
+ export const spec = {
10
+ code: BIDDER_CODE,
11
+ supportedMediaTypes: [BANNER, VIDEO, NATIVE],
12
+
13
+ isBidRequestValid: isBidRequestValid(),
14
+ buildRequests: buildRequests(AD_URL),
15
+ interpretResponse,
16
+ getUserSyncs: getUserSyncs(SYNC_URL)
17
+ };
18
+
19
+ registerBidder(spec);
@@ -0,0 +1,79 @@
1
+ # Overview
2
+
3
+ ```
4
+ Module Name: Oraki Bidder Adapter
5
+ Module Type: Oraki Bidder Adapter
6
+ Maintainer: ben@oraki.io
7
+ ```
8
+
9
+ # Description
10
+
11
+ Connects to Oraki exchange for bids.
12
+ Oraki bid adapter supports Banner, Video (instream and outstream) and Native.
13
+
14
+ # Test Parameters
15
+ ```
16
+ var adUnits = [
17
+ // Will return static test banner
18
+ {
19
+ code: 'adunit1',
20
+ mediaTypes: {
21
+ banner: {
22
+ sizes: [ [300, 250], [320, 50] ],
23
+ }
24
+ },
25
+ bids: [
26
+ {
27
+ bidder: 'oraki',
28
+ params: {
29
+ placementId: 'testBanner',
30
+ }
31
+ }
32
+ ]
33
+ },
34
+ {
35
+ code: 'addunit2',
36
+ mediaTypes: {
37
+ video: {
38
+ playerSize: [ [640, 480] ],
39
+ context: 'instream',
40
+ minduration: 5,
41
+ maxduration: 60,
42
+ }
43
+ },
44
+ bids: [
45
+ {
46
+ bidder: 'oraki',
47
+ params: {
48
+ placementId: 'testVideo',
49
+ }
50
+ }
51
+ ]
52
+ },
53
+ {
54
+ code: 'addunit3',
55
+ mediaTypes: {
56
+ native: {
57
+ title: {
58
+ required: true
59
+ },
60
+ body: {
61
+ required: true
62
+ },
63
+ icon: {
64
+ required: true,
65
+ size: [64, 64]
66
+ }
67
+ }
68
+ },
69
+ bids: [
70
+ {
71
+ bidder: 'oraki',
72
+ params: {
73
+ placementId: 'testNative',
74
+ }
75
+ }
76
+ ]
77
+ }
78
+ ];
79
+ ```
@@ -3,7 +3,6 @@ import { registerBidder } from '../src/adapters/bidderFactory.js';
3
3
  import { getStorageManager } from '../src/storageManager.js';
4
4
  import { BANNER, NATIVE } from '../src/mediaTypes.js';
5
5
  import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
6
- import { getGlobal } from '../src/prebidGlobal.js';
7
6
 
8
7
  /**
9
8
  * @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
@@ -93,6 +92,9 @@ export const spec = {
93
92
  if (bidderRequest && bidderRequest.refererInfo) {
94
93
  referer = bidderRequest.refererInfo.page || '';
95
94
  }
95
+ if (bidRequest?.mediaTypes?.video) {
96
+ delete bidRequest.mediaTypes.video;
97
+ }
96
98
 
97
99
  bidRequest.params.bidfloor = getBidFloor(bidRequest);
98
100
 
@@ -101,7 +103,7 @@ export const spec = {
101
103
  method: 'POST',
102
104
  options: { withCredentials: true },
103
105
  data: {
104
- v: getGlobal().version,
106
+ v: 'v' + '$prebid.version$',
105
107
  pageUrl: referer,
106
108
  ...bidRequest // get all data provided by bid request
107
109
  }
@@ -50,9 +50,11 @@ export const pairIdSubmodule = {
50
50
  return value && Array.isArray(value) ? {'pairId': value} : undefined
51
51
  },
52
52
  /**
53
- * performs action to obtain id and return a value in the callback's response argument
54
- * @function
55
- * @returns {id: string | undefined }
53
+ * Performs action to obtain ID and return a value in the callback's response argument.
54
+ * @function getId
55
+ * @param {Object} config - The configuration object.
56
+ * @param {Object} config.params - The parameters from the configuration.
57
+ * @returns {{id: string[] | undefined}} The obtained IDs or undefined if no IDs are found.
56
58
  */
57
59
  getId(config) {
58
60
  const pairIdsString = pairIdFromLocalStorage(PAIR_ID_KEY) || pairIdFromCookie(PAIR_ID_KEY)
@@ -67,13 +69,28 @@ export const pairIdSubmodule = {
67
69
 
68
70
  const configParams = (config && config.params) || {};
69
71
  if (configParams && configParams.liveramp) {
70
- let LRStorageLocation = configParams.liveramp.storageKey || DEFAULT_LIVERAMP_PAIR_ID_KEY
71
- const liverampValue = pairIdFromLocalStorage(LRStorageLocation) || pairIdFromCookie(LRStorageLocation)
72
- try {
73
- const obj = JSON.parse(atob(liverampValue));
74
- ids = ids.concat(obj.envelope);
75
- } catch (error) {
76
- logInfo(error)
72
+ let LRStorageLocation = configParams.liveramp.storageKey || DEFAULT_LIVERAMP_PAIR_ID_KEY;
73
+ const liverampValue = pairIdFromLocalStorage(LRStorageLocation) || pairIdFromCookie(LRStorageLocation);
74
+
75
+ if (liverampValue) {
76
+ try {
77
+ const parsedValue = atob(liverampValue);
78
+ if (parsedValue) {
79
+ const obj = JSON.parse(parsedValue);
80
+
81
+ if (obj && typeof obj === 'object' && obj.envelope) {
82
+ ids = ids.concat(obj.envelope);
83
+ } else {
84
+ logInfo('Pairid: Parsed object is not valid or does not contain envelope');
85
+ }
86
+ } else {
87
+ logInfo('Pairid: Decoded value is empty');
88
+ }
89
+ } catch (error) {
90
+ logInfo('Pairid: Error parsing JSON: ', error);
91
+ }
92
+ } else {
93
+ logInfo('Pairid: liverampValue for pairId from storage is empty or null');
77
94
  }
78
95
  }
79
96
 
@@ -5,7 +5,6 @@ import {config} from '../src/config.js';
5
5
  import {find, includes} from '../src/polyfill.js';
6
6
  import {deepAccess, isArray, isFn, isNumber, isPlainObject} from '../src/utils.js';
7
7
  import {auctionManager} from '../src/auctionManager.js';
8
- import {getGlobal} from '../src/prebidGlobal.js';
9
8
  import {getANKeywordParam} from '../libraries/appnexusUtils/anKeywords.js';
10
9
  import {convertCamelToUnderscore} from '../libraries/appnexusUtils/anUtils.js';
11
10
 
@@ -126,7 +125,7 @@ export const spec = {
126
125
  method: 'POST',
127
126
  options: {withCredentials: true},
128
127
  data: {
129
- v: getGlobal().version,
128
+ v: 'v' + '$prebid.version$',
130
129
  pageUrl: referer,
131
130
  bidId: bidRequest.bidId,
132
131
  // TODO: fix auctionId leak: https://github.com/prebid/Prebid.js/issues/9781
@@ -179,7 +179,7 @@ function setS2sConfig(options) {
179
179
 
180
180
  const activeBidders = [];
181
181
  const optionsValid = normalizedOptions.every((option, i, array) => {
182
- formatUrlParams(options);
182
+ formatUrlParams(option);
183
183
  const updateSuccess = updateConfigDefaultVendor(option);
184
184
  if (updateSuccess !== false) {
185
185
  const valid = validateConfigRequiredProps(option);
@@ -333,6 +333,10 @@ export const spec = {
333
333
  payload.badv = bidderRequest.ortb2?.badv
334
334
  }
335
335
 
336
+ if (bidderRequest.ortb2?.device?.sua) {
337
+ payload.sua = bidderRequest.ortb2.device.sua
338
+ }
339
+
336
340
  const payloadString = JSON.stringify(payload);
337
341
 
338
342
  return {
@@ -156,6 +156,9 @@ export const spec = {
156
156
  method: 'POST',
157
157
  url: (domain !== undefined ? domain : 'https://prg.smartadserver.com') + '/prebid/v1',
158
158
  data: JSON.stringify(payload),
159
+ options: {
160
+ browsingTopics: false
161
+ }
159
162
  };
160
163
  },
161
164
 
@@ -1,63 +1,15 @@
1
- import {registerBidder} from '../src/adapters/bidderFactory.js';
1
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
2
2
  import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
3
3
  import { config } from '../src/config.js';
4
4
  import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
5
- import { ajax } from '../src/ajax.js';
5
+ import { getAdUrlByRegion } from '../libraries/smartyadsUtils/getAdUrlByRegion.js';
6
+ import { interpretResponse, getUserSyncs } from '../libraries/teqblazeUtils/bidderUtils.js';
6
7
 
7
8
  const BIDDER_CODE = 'smartyads';
8
9
  const GVLID = 534;
9
- const adUrls = {
10
- US_EAST: 'https://n1.smartyads.com/?c=o&m=prebid&secret_key=prebid_js',
11
- EU: 'https://n2.smartyads.com/?c=o&m=prebid&secret_key=prebid_js',
12
- SGP: 'https://n6.smartyads.com/?c=o&m=prebid&secret_key=prebid_js'
13
- }
14
10
 
15
11
  const URL_SYNC = 'https://as.ck-ie.com/prebidjs?p=7c47322e527cf8bdeb7facc1bb03387a';
16
12
 
17
- function isBidResponseValid(bid) {
18
- if (!bid.requestId || !bid.cpm || !bid.creativeId ||
19
- !bid.ttl || !bid.currency) {
20
- return false;
21
- }
22
- switch (bid['mediaType']) {
23
- case BANNER:
24
- return Boolean(bid.width && bid.height && bid.ad);
25
- case VIDEO:
26
- return Boolean(bid.vastUrl) || Boolean(bid.vastXml);
27
- case NATIVE:
28
- return Boolean(bid.native && bid.native.title && bid.native.image && bid.native.impressionTrackers);
29
- default:
30
- return false;
31
- }
32
- }
33
-
34
- function getAdUrlByRegion(bid) {
35
- let adUrl;
36
-
37
- if (bid.params.region && adUrls[bid.params.region]) {
38
- adUrl = adUrls[bid.params.region];
39
- } else {
40
- try {
41
- const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
42
- const region = timezone.split('/')[0];
43
-
44
- switch (region) {
45
- case 'Europe':
46
- adUrl = adUrls['EU'];
47
- break;
48
- case 'Asia':
49
- adUrl = adUrls['SGP'];
50
- break;
51
- default: adUrl = adUrls['US_EAST'];
52
- }
53
- } catch (err) {
54
- adUrl = adUrls['US_EAST'];
55
- }
56
- }
57
-
58
- return adUrl;
59
- }
60
-
61
13
  export const spec = {
62
14
  code: BIDDER_CODE,
63
15
  gvlid: GVLID,
@@ -78,8 +30,6 @@ export const spec = {
78
30
  let request = {
79
31
  'deviceWidth': winTop.screen.width,
80
32
  'deviceHeight': winTop.screen.height,
81
- 'language': (navigator && navigator.language) ? navigator.language : '',
82
- 'secure': 1,
83
33
  'host': location?.domain ?? '',
84
34
  'page': location?.page ?? '',
85
35
  'coppa': config.getConfig('coppa') === true ? 1 : 0,
@@ -87,11 +37,8 @@ export const spec = {
87
37
  'eeid': validBidRequests[0]?.userIdAsEids,
88
38
  'ifa': bidderRequest?.ortb2?.device?.ifa,
89
39
  };
90
- request.language.indexOf('-') != -1 && (request.language = request.language.split('-')[0])
40
+
91
41
  if (bidderRequest) {
92
- if (bidderRequest.uspConsent) {
93
- request.ccpa = bidderRequest.uspConsent;
94
- }
95
42
  if (bidderRequest.gdprConsent) {
96
43
  request.gdpr = bidderRequest.gdprConsent
97
44
  }
@@ -128,59 +75,8 @@ export const spec = {
128
75
  }
129
76
  },
130
77
 
131
- interpretResponse: (serverResponse) => {
132
- let response = [];
133
- serverResponse = serverResponse.body;
134
- for (let i = 0; i < serverResponse.length; i++) {
135
- let resItem = serverResponse[i];
136
- if (isBidResponseValid(resItem)) {
137
- response.push(resItem);
138
- }
139
- }
140
- return response;
141
- },
142
-
143
- getUserSyncs: (syncOptions, serverResponses = [], gdprConsent = {}, uspConsent = '', gppConsent = '') => {
144
- let syncs = [];
145
- let { gdprApplies, consentString = '' } = gdprConsent;
146
-
147
- if (syncOptions.iframeEnabled) {
148
- syncs.push({
149
- type: 'iframe',
150
- url: `${URL_SYNC}&gdpr=${gdprApplies ? 1 : 0}&gdpr_consent=${consentString}&type=iframe&us_privacy=${uspConsent}&gpp=${gppConsent}`
151
- });
152
- } else {
153
- syncs.push({
154
- type: 'image',
155
- url: `${URL_SYNC}&gdpr=${gdprApplies ? 1 : 0}&gdpr_consent=${consentString}&type=image&us_privacy=${uspConsent}&gpp=${gppConsent}`
156
- });
157
- }
158
-
159
- return syncs
160
- },
161
-
162
- onBidWon: function(bid) {
163
- if (bid.winUrl) {
164
- ajax(bid.winUrl, () => {}, JSON.stringify(bid));
165
- } else {
166
- if (bid?.postData && bid?.postData[0] && bid?.postData[0].params && bid?.postData[0].params[0].host == 'prebid') {
167
- ajax('https://et-nd43.itdsmr.com/?c=o&m=prebid&secret_key=prebid_js&winTest=1', () => {}, JSON.stringify(bid));
168
- }
169
- }
170
- },
171
-
172
- onTimeout: function(bid) {
173
- if (bid?.postData && bid?.postData[0] && bid?.postData[0].params && bid?.postData[0].params[0].host == 'prebid') {
174
- ajax('https://et-nd43.itdsmr.com/?c=o&m=prebid&secret_key=prebid_js&bidTimeout=1', () => {}, JSON.stringify(bid));
175
- }
176
- },
177
-
178
- onBidderError: function(bid) {
179
- if (bid?.postData && bid?.postData[0] && bid?.postData[0].params && bid?.postData[0].params[0].host == 'prebid') {
180
- ajax('https://et-nd43.itdsmr.com/?c=o&m=prebid&secret_key=prebid_js&bidderError=1', () => {}, JSON.stringify(bid));
181
- }
182
- },
183
-
78
+ interpretResponse,
79
+ getUserSyncs: getUserSyncs(URL_SYNC),
184
80
  };
185
81
 
186
82
  registerBidder(spec);
@@ -3,7 +3,6 @@ import {registerBidder} from '../src/adapters/bidderFactory.js';
3
3
  import {BANNER} from '../src/mediaTypes.js';
4
4
  import {deepAccess, isArray, isFn, isPlainObject, inIframe, getDNT, generateUUID} from '../src/utils.js';
5
5
  import {hasPurpose1Consent} from '../src/utils/gpdr.js';
6
- import {getGlobal} from '../src/prebidGlobal.js';
7
6
  import {getStorageManager} from '../src/storageManager.js';
8
7
 
9
8
  const BIDDER_CODE = 'snigel';
@@ -46,7 +45,7 @@ export const spec = {
46
45
  gdprConsent: gdprApplies === true ? hasFullGdprConsent(deepAccess(bidderRequest, 'gdprConsent')) : false,
47
46
  cur: getCurrencies(),
48
47
  test: getTestFlag(),
49
- version: getGlobal().version,
48
+ version: 'v' + '$prebid.version$',
50
49
  gpp: deepAccess(bidderRequest, 'gppConsent.gppString') || deepAccess(bidderRequest, 'ortb2.regs.gpp'),
51
50
  gpp_sid:
52
51
  deepAccess(bidderRequest, 'gppConsent.applicableSections') || deepAccess(bidderRequest, 'ortb2.regs.gpp_sid'),
@@ -6,7 +6,6 @@ import { BANNER, VIDEO } from '../src/mediaTypes.js';
6
6
  import { config } from '../src/config.js';
7
7
  import { Renderer } from '../src/Renderer.js';
8
8
  import { parseDomain } from '../src/refererDetection.js';
9
- import { getGlobal } from '../src/prebidGlobal.js';
10
9
 
11
10
  /**
12
11
  * @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
@@ -494,7 +493,7 @@ function buildOneRequest(validBidRequests, bidderRequest) {
494
493
  payload.regs = regs;
495
494
  // < Payload
496
495
 
497
- let pbjsv = (getGlobal().version !== null) ? encodeURIComponent(getGlobal().version) : -1;
496
+ let pbjsv = 'v' + '$prebid.version$';
498
497
 
499
498
  return {
500
499
  method: 'POST',
@@ -3,7 +3,6 @@ import { ajax } from '../src/ajax.js';
3
3
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
4
4
  import adapterManager from '../src/adapterManager.js';
5
5
  import { EVENTS } from '../src/constants.js';
6
- import {getGlobal} from '../src/prebidGlobal.js';
7
6
 
8
7
  const emptyUrl = '';
9
8
  const analyticsType = 'endpoint';
@@ -124,7 +123,7 @@ function send(data, status) {
124
123
  search: {
125
124
  auctionTimestamp: auctionTimestamp,
126
125
  terceptAnalyticsVersion: terceptAnalyticsVersion,
127
- prebidVersion: getGlobal().version
126
+ prebidVersion: 'v' + '$prebid.version$'
128
127
  }
129
128
  });
130
129
 
@@ -15,6 +15,7 @@ import {getStorageManager} from '../src/storageManager.js';
15
15
  import {bidderSettings} from '../src/bidderSettings.js';
16
16
  import {config} from '../src/config.js';
17
17
  import {chunk} from '../libraries/chunk/chunk.js';
18
+ import {extractCID, extractPID, extractSubDomain} from '../libraries/vidazooUtils/bidderUtils.js';
18
19
 
19
20
  const GVLID = 1292;
20
21
  const DEFAULT_SUB_DOMAIN = 'exchange';
@@ -40,18 +41,6 @@ export function createDomain(subDomain = DEFAULT_SUB_DOMAIN) {
40
41
  return `https://${subDomain}.twist.win`;
41
42
  }
42
43
 
43
- export function extractCID(params) {
44
- return params.cId || params.CID || params.cID || params.CId || params.cid || params.ciD || params.Cid || params.CiD;
45
- }
46
-
47
- export function extractPID(params) {
48
- return params.pId || params.PID || params.pID || params.PId || params.pid || params.piD || params.Pid || params.PiD;
49
- }
50
-
51
- export function extractSubDomain(params) {
52
- return params.subDomain || params.SubDomain || params.Subdomain || params.subdomain || params.SUBDOMAIN || params.subDOMAIN;
53
- }
54
-
55
44
  function isBidRequestValid(bid) {
56
45
  const params = bid.params || {};
57
46
  return !!(extractCID(params) && extractPID(params));
@@ -131,7 +131,7 @@ import {config} from '../../src/config.js';
131
131
  import * as events from '../../src/events.js';
132
132
  import {getGlobal} from '../../src/prebidGlobal.js';
133
133
  import adapterManager, {gdprDataHandler} from '../../src/adapterManager.js';
134
- import { EVENTS } from '../../src/constants.js';
134
+ import {EVENTS} from '../../src/constants.js';
135
135
  import {module, ready as hooksReady} from '../../src/hook.js';
136
136
  import {buildEidPermissions, createEidsArray, EID_CONFIG} from './eids.js';
137
137
  import {
@@ -147,7 +147,6 @@ import {
147
147
  getPrebidInternal,
148
148
  isArray,
149
149
  isEmpty,
150
- isEmptyStr,
151
150
  isFn,
152
151
  isGptPubadsDefined,
153
152
  isNumber,
@@ -951,29 +950,40 @@ function hasValidStorageTypes(config) {
951
950
  * @param {SubmoduleConfig[]} configRegistry
952
951
  * @returns {SubmoduleConfig[]}
953
952
  */
954
- function getValidSubmoduleConfigs(configRegistry) {
953
+ export function getValidSubmoduleConfigs(configRegistry) {
954
+ function err(msg, ...args) {
955
+ logWarn(`Invalid userSync.userId config: ${msg}`, ...args)
956
+ }
955
957
  if (!Array.isArray(configRegistry)) {
958
+ if (configRegistry != null) {
959
+ err('must be an array', configRegistry);
960
+ }
956
961
  return [];
957
962
  }
958
- return configRegistry.reduce((carry, config) => {
959
- // every submodule config obj must contain a valid 'name'
960
- if (!config || isEmptyStr(config.name)) {
961
- return carry;
962
- }
963
- // Validate storage config contains 'type' and 'name' properties with non-empty string values
964
- // 'type' must be one of html5, cookies
965
- if (config.storage &&
966
- !isEmptyStr(config.storage.type) &&
967
- !isEmptyStr(config.storage.name) &&
968
- hasValidStorageTypes(config)) {
969
- carry.push(config);
970
- } else if (isPlainObject(config.value)) {
971
- carry.push(config);
972
- } else if (!config.storage && !config.value) {
973
- carry.push(config);
963
+ return configRegistry.filter(config => {
964
+ if (!config?.name) {
965
+ return err('must specify "name"', config);
966
+ } else if (config.storage) {
967
+ if (!config.storage.name || !config.storage.type) {
968
+ return err('must specify "storage.name" and "storage.type"', config);
969
+ } else if (!hasValidStorageTypes(config)) {
970
+ return err('invalid "storage.type"', config)
971
+ }
972
+ ['expires', 'refreshInSeconds'].forEach(param => {
973
+ let value = config.storage[param];
974
+ if (value != null && typeof value !== 'number') {
975
+ value = Number(value)
976
+ if (isNaN(value)) {
977
+ err(`storage.${param} must be a number and will be ignored`, config);
978
+ delete config.storage[param];
979
+ } else {
980
+ config.storage[param] = value;
981
+ }
982
+ }
983
+ });
974
984
  }
975
- return carry;
976
- }, []);
985
+ return true;
986
+ })
977
987
  }
978
988
 
979
989
  const ALL_STORAGE_TYPES = new Set([LOCAL_STORAGE, COOKIE]);