prebid.js 9.2.0 → 9.4.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 (279) hide show
  1. package/creative/constants.js +2 -1
  2. package/creative/crossDomain.js +16 -4
  3. package/dist/33acrossAnalyticsAdapter.js +1 -1
  4. package/dist/33acrossBidAdapter.js +1 -1
  5. package/dist/33acrossIdSystem.js +1 -1
  6. package/dist/BTBidAdapter.js +1 -1
  7. package/dist/adagioAnalyticsAdapter.js +1 -1
  8. package/dist/adagioBidAdapter.js +1 -1
  9. package/dist/adagioRtdProvider.js +1 -1
  10. package/dist/adagioUtils.js +1 -1
  11. package/dist/addefendBidAdapter.js +1 -1
  12. package/dist/adfBidAdapter.js +1 -1
  13. package/dist/adgenerationBidAdapter.js +1 -1
  14. package/dist/adlooxRtdProvider.js +1 -1
  15. package/dist/adnuntiusBidAdapter.js +1 -1
  16. package/dist/adqueryBidAdapter.js +1 -1
  17. package/dist/adrelevantisBidAdapter.js +1 -1
  18. package/dist/adstirBidAdapter.js +1 -1
  19. package/dist/adtrgtmeBidAdapter.js +1 -1
  20. package/dist/adxcgAnalyticsAdapter.js +1 -1
  21. package/dist/adxcgBidAdapter.js +1 -1
  22. package/dist/adyoulikeBidAdapter.js +1 -1
  23. package/dist/agmaAnalyticsAdapter.js +1 -1
  24. package/dist/ajaBidAdapter.js +1 -1
  25. package/dist/amxBidAdapter.js +1 -1
  26. package/dist/amxIdSystem.js +1 -1
  27. package/dist/appierAnalyticsAdapter.js +1 -1
  28. package/dist/appnexusBidAdapter.js +1 -1
  29. package/dist/asoBidAdapter.js +1 -1
  30. package/dist/axonixBidAdapter.js +1 -1
  31. package/dist/bidglassBidAdapter.js +1 -1
  32. package/dist/big-richmediaBidAdapter.js +1 -1
  33. package/dist/bridBidAdapter.js +1 -1
  34. package/dist/bridgewellBidAdapter.js +1 -1
  35. package/dist/brightMountainMediaBidAdapter.js +1 -1
  36. package/dist/carodaBidAdapter.js +1 -1
  37. package/dist/chtnwBidAdapter.js +1 -1
  38. package/dist/chunk-core.js +1 -1
  39. package/dist/codefuelBidAdapter.js +1 -1
  40. package/dist/concertBidAdapter.js +1 -1
  41. package/dist/connectadBidAdapter.js +1 -1
  42. package/dist/consentManagement.js +1 -0
  43. package/dist/consentManagementGpp.js +1 -1
  44. package/dist/consentManagementTcf.js +1 -1
  45. package/dist/consumableBidAdapter.js +1 -1
  46. package/dist/conversantAnalyticsAdapter.js +1 -1
  47. package/dist/conversantBidAdapter.js +1 -1
  48. package/dist/copper6sspBidAdapter.js +1 -0
  49. package/dist/cpmstarBidAdapter.js +1 -1
  50. package/dist/craftBidAdapter.js +1 -1
  51. package/dist/criteoBidAdapter.js +1 -1
  52. package/dist/cwireBidAdapter.js +1 -1
  53. package/dist/dailymotionBidAdapter.js +1 -1
  54. package/dist/deltaprojectsBidAdapter.js +1 -1
  55. package/dist/dependencies.json +51 -13
  56. package/dist/dianomiBidAdapter.js +1 -1
  57. package/dist/dspxBidAdapter.js +1 -1
  58. package/dist/dxkultureBidAdapter.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/euidIdSystem.js +1 -1
  61. package/dist/exadsBidAdapter.js +1 -1
  62. package/dist/feedadBidAdapter.js +1 -1
  63. package/dist/finativeBidAdapter.js +1 -1
  64. package/dist/freewheel-sspBidAdapter.js +1 -1
  65. package/dist/gmosspBidAdapter.js +1 -1
  66. package/dist/goldbachBidAdapter.js +1 -1
  67. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  68. package/dist/greenbidsRtdProvider.js +1 -1
  69. package/dist/gridBidAdapter.js +1 -1
  70. package/dist/gumgumBidAdapter.js +1 -1
  71. package/dist/h12mediaBidAdapter.js +1 -1
  72. package/dist/hypelabBidAdapter.js +1 -1
  73. package/dist/id5AnalyticsAdapter.js +1 -1
  74. package/dist/id5IdSystem.js +1 -1
  75. package/dist/illuminBidAdapter.js +1 -1
  76. package/dist/imdsBidAdapter.js +1 -1
  77. package/dist/improvedigitalBidAdapter.js +1 -1
  78. package/dist/insticatorBidAdapter.js +1 -1
  79. package/dist/intentIqIdSystem.js +1 -1
  80. package/dist/ixBidAdapter.js +1 -1
  81. package/dist/jixieBidAdapter.js +1 -1
  82. package/dist/justpremiumBidAdapter.js +1 -1
  83. package/dist/kargoBidAdapter.js +1 -1
  84. package/dist/kimberliteBidAdapter.js +1 -1
  85. package/dist/konduitAnalyticsAdapter.js +1 -1
  86. package/dist/kueezBidAdapter.js +1 -1
  87. package/dist/kueezRtbBidAdapter.js +1 -1
  88. package/dist/lassoBidAdapter.js +1 -1
  89. package/dist/lifestreetBidAdapter.js +1 -1
  90. package/dist/liveIntentIdSystem.js +1 -1
  91. package/dist/logicadBidAdapter.js +1 -1
  92. package/dist/loglyliftBidAdapter.js +1 -1
  93. package/dist/luceadBidAdapter.js +1 -1
  94. package/dist/luponmediaBidAdapter.js +1 -1
  95. package/dist/mabidderBidAdapter.js +1 -1
  96. package/dist/magniteAnalyticsAdapter.js +1 -1
  97. package/dist/malltvAnalyticsAdapter.js +1 -1
  98. package/dist/marsmediaBidAdapter.js +1 -1
  99. package/dist/mediafuseBidAdapter.js +1 -1
  100. package/dist/medianetAnalyticsAdapter.js +1 -1
  101. package/dist/medianetBidAdapter.js +1 -1
  102. package/dist/mediasquareBidAdapter.js +1 -1
  103. package/dist/mgidBidAdapter.js +1 -1
  104. package/dist/minutemediaBidAdapter.js +1 -1
  105. package/dist/missenaBidAdapter.js +1 -1
  106. package/dist/nexx360BidAdapter.js +1 -1
  107. package/dist/nobidAnalyticsAdapter.js +1 -1
  108. package/dist/nobidBidAdapter.js +1 -1
  109. package/dist/not-for-prod/prebid.js +184 -178
  110. package/dist/oguryBidAdapter.js +1 -1
  111. package/dist/onetagBidAdapter.js +1 -1
  112. package/dist/ooloAnalyticsAdapter.js +1 -1
  113. package/dist/openwebBidAdapter.js +1 -1
  114. package/dist/openxBidAdapter.js +1 -1
  115. package/dist/optidigitalBidAdapter.js +1 -1
  116. package/dist/orakiBidAdapter.js +1 -0
  117. package/dist/orbidderBidAdapter.js +1 -1
  118. package/dist/outbrainBidAdapter.js +1 -1
  119. package/dist/ozoneBidAdapter.js +1 -1
  120. package/dist/pairIdSystem.js +1 -1
  121. package/dist/pixfutureBidAdapter.js +1 -1
  122. package/dist/prebidServerBidAdapter.js +1 -1
  123. package/dist/processResponse.js +1 -0
  124. package/dist/publinkIdSystem.js +1 -1
  125. package/dist/publirBidAdapter.js +1 -1
  126. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  127. package/dist/pubmaticBidAdapter.js +1 -1
  128. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  129. package/dist/pxyzBidAdapter.js +1 -1
  130. package/dist/quantcastBidAdapter.js +1 -1
  131. package/dist/readpeakBidAdapter.js +1 -1
  132. package/dist/relaidoBidAdapter.js +1 -1
  133. package/dist/retailspotBidAdapter.js +1 -1
  134. package/dist/rhythmoneBidAdapter.js +1 -1
  135. package/dist/riseBidAdapter.js +1 -1
  136. package/dist/rubiconBidAdapter.js +1 -1
  137. package/dist/seedingAllianceBidAdapter.js +1 -1
  138. package/dist/seedtagBidAdapter.js +1 -1
  139. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  140. package/dist/sharethroughBidAdapter.js +1 -1
  141. package/dist/shinezBidAdapter.js +1 -1
  142. package/dist/shinezRtbBidAdapter.js +1 -1
  143. package/dist/smaatoBidAdapter.js +1 -1
  144. package/dist/smartadserverBidAdapter.js +1 -1
  145. package/dist/smartxBidAdapter.js +1 -1
  146. package/dist/smartyadsBidAdapter.js +1 -1
  147. package/dist/smartyadsUtils.js +1 -0
  148. package/dist/smilewantedBidAdapter.js +1 -1
  149. package/dist/snigelBidAdapter.js +1 -1
  150. package/dist/sonobiBidAdapter.js +1 -1
  151. package/dist/sovrnBidAdapter.js +1 -1
  152. package/dist/sspBCBidAdapter.js +1 -1
  153. package/dist/stnBidAdapter.js +1 -1
  154. package/dist/stvBidAdapter.js +1 -1
  155. package/dist/sublimeBidAdapter.js +1 -1
  156. package/dist/taboolaBidAdapter.js +1 -1
  157. package/dist/tagorasBidAdapter.js +1 -1
  158. package/dist/tappxBidAdapter.js +1 -1
  159. package/dist/targetVideoBidAdapter.js +1 -1
  160. package/dist/teadsBidAdapter.js +1 -1
  161. package/dist/terceptAnalyticsAdapter.js +1 -1
  162. package/dist/themoneytizerBidAdapter.js +1 -1
  163. package/dist/trionBidAdapter.js +1 -1
  164. package/dist/tripleliftBidAdapter.js +1 -1
  165. package/dist/ttdBidAdapter.js +1 -1
  166. package/dist/twistDigitalBidAdapter.js +1 -1
  167. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  168. package/dist/uid2IdSystem.js +1 -1
  169. package/dist/underdogmediaBidAdapter.js +1 -1
  170. package/dist/undertoneBidAdapter.js +1 -1
  171. package/dist/unrulyBidAdapter.js +1 -1
  172. package/dist/userId.js +1 -1
  173. package/dist/viantOrtbBidAdapter.js +1 -1
  174. package/dist/vidazooBidAdapter.js +1 -1
  175. package/dist/vidazooUtils.js +1 -0
  176. package/dist/videobyteBidAdapter.js +1 -1
  177. package/dist/visxBidAdapter.js +1 -1
  178. package/dist/vuukleBidAdapter.js +1 -1
  179. package/dist/widespaceBidAdapter.js +1 -1
  180. package/dist/winrBidAdapter.js +1 -1
  181. package/dist/yahooAdsBidAdapter.js +1 -1
  182. package/dist/yieldmoBidAdapter.js +1 -1
  183. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  184. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  185. package/dist/zeta_global_sspBidAdapter.js +1 -1
  186. package/integrationExamples/gpt/x-domain/creative.html +1 -1
  187. package/libraries/consentManagement/cmUtils.js +38 -0
  188. package/libraries/processResponse/index.js +12 -0
  189. package/libraries/smartyadsUtils/getAdUrlByRegion.js +32 -0
  190. package/libraries/vidazooUtils/bidderUtils.js +480 -0
  191. package/libraries/vidazooUtils/constants.js +7 -0
  192. package/modules/adagioRtdProvider.js +9 -7
  193. package/modules/addefendBidAdapter.js +1 -2
  194. package/modules/adfBidAdapter.js +1 -10
  195. package/modules/adlooxRtdProvider.js +1 -1
  196. package/modules/adnuntiusBidAdapter.js +1 -0
  197. package/modules/adxcgAnalyticsAdapter.js +1 -2
  198. package/modules/carodaBidAdapter.js +3 -8
  199. package/modules/codefuelBidAdapter.js +1 -10
  200. package/modules/consentManagementGpp.js +2 -38
  201. package/modules/consentManagementTcf.js +7 -38
  202. package/modules/conversantAnalyticsAdapter.js +1 -2
  203. package/modules/copper6sspBidAdapter.js +19 -0
  204. package/modules/copper6sspBidAdapter.md +79 -0
  205. package/modules/cpmstarBidAdapter.js +52 -36
  206. package/modules/cpmstarBidAdapter.md +1 -4
  207. package/modules/criteoBidAdapter.js +10 -3
  208. package/modules/dailymotionBidAdapter.js +1 -1
  209. package/modules/deltaprojectsBidAdapter.js +2 -11
  210. package/modules/dianomiBidAdapter.js +1 -9
  211. package/modules/finativeBidAdapter.js +1 -10
  212. package/modules/gridBidAdapter.js +2 -12
  213. package/modules/id5AnalyticsAdapter.js +1 -2
  214. package/modules/illuminBidAdapter.js +9 -304
  215. package/modules/intentIqIdSystem.js +408 -50
  216. package/modules/intentIqIdSystem.md +92 -0
  217. package/modules/kueezRtbBidAdapter.js +17 -312
  218. package/modules/liveIntentIdSystem.js +2 -2
  219. package/modules/luponmediaBidAdapter.js +4 -10
  220. package/modules/mabidderBidAdapter.js +1 -2
  221. package/modules/medianetAnalyticsAdapter.js +1 -2
  222. package/modules/medianetBidAdapter.js +1 -1
  223. package/modules/mgidBidAdapter.js +1 -10
  224. package/modules/orakiBidAdapter.js +19 -0
  225. package/modules/orakiBidAdapter.md +79 -0
  226. package/modules/orbidderBidAdapter.js +4 -2
  227. package/modules/outbrainBidAdapter.js +8 -43
  228. package/modules/ozoneBidAdapter.js +9 -7
  229. package/modules/pairIdSystem.js +27 -10
  230. package/modules/pixfutureBidAdapter.js +1 -2
  231. package/modules/prebidServerBidAdapter/index.js +1 -1
  232. package/modules/seedtagBidAdapter.js +4 -0
  233. package/modules/shinezRtbBidAdapter.js +12 -304
  234. package/modules/smartadserverBidAdapter.js +3 -0
  235. package/modules/smartyadsBidAdapter.js +6 -110
  236. package/modules/snigelBidAdapter.js +1 -2
  237. package/modules/tagorasBidAdapter.js +13 -316
  238. package/modules/tappxBidAdapter.js +1 -2
  239. package/modules/terceptAnalyticsAdapter.js +1 -2
  240. package/modules/twistDigitalBidAdapter.js +9 -433
  241. package/modules/userId/index.js +31 -21
  242. package/modules/viantOrtbBidAdapter.js +20 -0
  243. package/modules/vidazooBidAdapter.js +26 -468
  244. package/modules/visxBidAdapter.js +27 -29
  245. package/modules/yahooAdsBidAdapter.js +4 -1
  246. package/modules/yuktamediaAnalyticsAdapter.js +1 -2
  247. package/modules/zeta_global_sspBidAdapter.js +2 -2
  248. package/package.json +1 -1
  249. package/src/adRendering.js +25 -2
  250. package/src/constants.js +2 -0
  251. package/src/prebid.js +2 -1
  252. package/src/utils.js +19 -1
  253. package/test/spec/creative/crossDomainCreative_spec.js +38 -2
  254. package/test/spec/fpd/gdpr_spec.js +24 -2
  255. package/test/spec/libraries/processResponse_spec.js +60 -0
  256. package/test/spec/modules/adagioRtdProvider_spec.js +12 -0
  257. package/test/spec/modules/adnuntiusBidAdapter_spec.js +6 -3
  258. package/test/spec/modules/conversantAnalyticsAdapter_spec.js +1 -1
  259. package/test/spec/modules/copper6sspBidAdapter_spec.js +514 -0
  260. package/test/spec/modules/cpmstarBidAdapter_spec.js +1 -1
  261. package/test/spec/modules/dailymotionBidAdapter_spec.js +18 -14
  262. package/test/spec/modules/illuminBidAdapter_spec.js +26 -13
  263. package/test/spec/modules/intentIqIdSystem_spec.js +264 -36
  264. package/test/spec/modules/kueezRtbBidAdapter_spec.js +26 -15
  265. package/test/spec/modules/orakiBidAdapter_spec.js +510 -0
  266. package/test/spec/modules/outbrainBidAdapter_spec.js +32 -1
  267. package/test/spec/modules/seedtagBidAdapter_spec.js +27 -0
  268. package/test/spec/modules/shinezRtbBidAdapter_spec.js +26 -14
  269. package/test/spec/modules/smartadserverBidAdapter_spec.js +7 -0
  270. package/test/spec/modules/smartyadsBidAdapter_spec.js +6 -83
  271. package/test/spec/modules/tagorasBidAdapter_spec.js +26 -15
  272. package/test/spec/modules/twistDigitalBidAdapter_spec.js +19 -22
  273. package/test/spec/modules/userId_spec.js +86 -47
  274. package/test/spec/modules/viantOrtbBidAdapter_spec.js +87 -6
  275. package/test/spec/modules/vidazooBidAdapter_spec.js +21 -23
  276. package/test/spec/modules/visxBidAdapter_spec.js +180 -0
  277. package/test/spec/modules/yahooAdsBidAdapter_spec.js +1 -1
  278. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +11 -0
  279. package/test/spec/unit/pbjs_api_spec.js +6 -1
@@ -1,322 +1,27 @@
1
- import {_each, deepAccess, parseSizesInput, parseUrl, uniques, isFn} from '../src/utils.js';
2
1
  import {registerBidder} from '../src/adapters/bidderFactory.js';
3
2
  import {BANNER, VIDEO} from '../src/mediaTypes.js';
4
3
  import {getStorageManager} from '../src/storageManager.js';
5
- import {config} from '../src/config.js';
4
+ import {
5
+ isBidRequestValid, createUserSyncGetter, createInterpretResponseFn, createBuildRequestsFn
6
+ } from '../libraries/vidazooUtils/bidderUtils.js';
6
7
 
7
8
  const DEFAULT_SUB_DOMAIN = 'exchange';
8
9
  const BIDDER_CODE = 'illumin';
9
10
  const BIDDER_VERSION = '1.0.0';
10
11
  const GVLID = 149;
11
- const CURRENCY = 'USD';
12
- const TTL_SECONDS = 60 * 5;
13
- const UNIQUE_DEAL_ID_EXPIRY = 1000 * 60 * 15;
14
- const storage = getStorageManager({bidderCode: BIDDER_CODE});
15
-
16
- function getTopWindowQueryParams() {
17
- try {
18
- const parsedUrl = parseUrl(window.top.document.URL, {decodeSearchAsString: true});
19
- return parsedUrl.search;
20
- } catch (e) {
21
- return '';
22
- }
23
- }
12
+ export const storage = getStorageManager({bidderCode: BIDDER_CODE});
24
13
 
25
14
  export function createDomain(subDomain = DEFAULT_SUB_DOMAIN) {
26
15
  return `https://${subDomain}.illumin.com`;
27
16
  }
28
17
 
29
- export function extractCID(params) {
30
- return params.cId;
31
- }
32
-
33
- export function extractPID(params) {
34
- return params.pId;
35
- }
36
-
37
- export function extractSubDomain(params) {
38
- return params.subDomain;
39
- }
40
-
41
- function isBidRequestValid(bid) {
42
- const params = bid.params || {};
43
- return !!(extractCID(params) && extractPID(params));
44
- }
45
-
46
- function buildRequest(bid, topWindowUrl, sizes, bidderRequest, bidderTimeout) {
47
- const {
48
- params,
49
- bidId,
50
- userId,
51
- adUnitCode,
52
- schain,
53
- mediaTypes,
54
- ortb2Imp,
55
- bidderRequestId,
56
- bidRequestsCount,
57
- bidderRequestsCount,
58
- bidderWinsCount
59
- } = bid;
60
- let {bidFloor, ext} = params;
61
- const hashUrl = hashCode(topWindowUrl);
62
- const uniqueDealId = getUniqueDealId(hashUrl);
63
- const cId = extractCID(params);
64
- const pId = extractPID(params);
65
- const subDomain = extractSubDomain(params);
66
-
67
- const gpid = deepAccess(bid, 'ortb2Imp.ext.gpid', deepAccess(bid, 'ortb2Imp.ext.data.pbadslot', ''));
68
-
69
- if (isFn(bid.getFloor)) {
70
- const floorInfo = bid.getFloor({
71
- currency: 'USD',
72
- mediaType: '*',
73
- size: '*'
74
- });
75
-
76
- if (floorInfo.currency === 'USD') {
77
- bidFloor = floorInfo.floor;
78
- }
79
- }
18
+ const buildRequests = createBuildRequestsFn(createDomain, null, storage, BIDDER_CODE, BIDDER_VERSION, false);
80
19
 
81
- let data = {
82
- url: encodeURIComponent(topWindowUrl),
83
- uqs: getTopWindowQueryParams(),
84
- cb: Date.now(),
85
- bidFloor: bidFloor,
86
- bidId: bidId,
87
- referrer: bidderRequest.refererInfo.ref,
88
- adUnitCode: adUnitCode,
89
- publisherId: pId,
90
- sizes: sizes,
91
- uniqueDealId: uniqueDealId,
92
- bidderVersion: BIDDER_VERSION,
93
- prebidVersion: '$prebid.version$',
94
- res: `${screen.width}x${screen.height}`,
95
- schain: schain,
96
- mediaTypes: mediaTypes,
97
- gpid: gpid,
98
- transactionId: ortb2Imp?.ext?.tid,
99
- bidderRequestId: bidderRequestId,
100
- bidRequestsCount: bidRequestsCount,
101
- bidderRequestsCount: bidderRequestsCount,
102
- bidderWinsCount: bidderWinsCount,
103
- bidderTimeout: bidderTimeout
104
- };
105
-
106
- appendUserIdsToRequestPayload(data, userId);
107
-
108
- const sua = deepAccess(bidderRequest, 'ortb2.device.sua');
109
-
110
- if (sua) {
111
- data.sua = sua;
112
- }
113
-
114
- if (bidderRequest.gdprConsent) {
115
- if (bidderRequest.gdprConsent.consentString) {
116
- data.gdprConsent = bidderRequest.gdprConsent.consentString;
117
- }
118
- if (bidderRequest.gdprConsent.gdprApplies !== undefined) {
119
- data.gdpr = bidderRequest.gdprConsent.gdprApplies ? 1 : 0;
120
- }
121
- }
122
- if (bidderRequest.uspConsent) {
123
- data.usPrivacy = bidderRequest.uspConsent;
124
- }
125
-
126
- if (bidderRequest.gppConsent) {
127
- data.gppString = bidderRequest.gppConsent.gppString;
128
- data.gppSid = bidderRequest.gppConsent.applicableSections;
129
- } else if (bidderRequest.ortb2?.regs?.gpp) {
130
- data.gppString = bidderRequest.ortb2.regs.gpp;
131
- data.gppSid = bidderRequest.ortb2.regs.gpp_sid;
132
- }
133
-
134
- const dto = {
135
- method: 'POST',
136
- url: `${createDomain(subDomain)}/prebid/multi/${cId}`,
137
- data: data
138
- };
139
-
140
- _each(ext, (value, key) => {
141
- dto.data['ext.' + key] = value;
142
- });
143
-
144
- return dto;
145
- }
146
-
147
- function appendUserIdsToRequestPayload(payloadRef, userIds) {
148
- let key;
149
- _each(userIds, (userId, idSystemProviderName) => {
150
- key = `uid.${idSystemProviderName}`;
151
-
152
- switch (idSystemProviderName) {
153
- case 'lipb':
154
- payloadRef[key] = userId.lipbid;
155
- break;
156
- case 'id5id':
157
- payloadRef[key] = userId.uid;
158
- break;
159
- default:
160
- payloadRef[key] = userId;
161
- }
162
- });
163
- }
20
+ const interpretResponse = createInterpretResponseFn(BIDDER_CODE, false);
164
21
 
165
- function buildRequests(validBidRequests, bidderRequest) {
166
- const topWindowUrl = bidderRequest.refererInfo.page || bidderRequest.refererInfo.topmostLocation;
167
- const bidderTimeout = config.getConfig('bidderTimeout');
168
- const requests = [];
169
- validBidRequests.forEach(validBidRequest => {
170
- const sizes = parseSizesInput(validBidRequest.sizes);
171
- const request = buildRequest(validBidRequest, topWindowUrl, sizes, bidderRequest, bidderTimeout);
172
- requests.push(request);
173
- });
174
- return requests;
175
- }
176
-
177
- function interpretResponse(serverResponse, request) {
178
- if (!serverResponse || !serverResponse.body) {
179
- return [];
180
- }
181
- const {bidId} = request.data;
182
- const {results} = serverResponse.body;
183
-
184
- let output = [];
185
-
186
- try {
187
- results.forEach(result => {
188
- const {
189
- creativeId,
190
- ad,
191
- price,
192
- exp,
193
- width,
194
- height,
195
- currency,
196
- metaData,
197
- advertiserDomains,
198
- mediaType = BANNER
199
- } = result;
200
- if (!ad || !price) {
201
- return;
202
- }
203
-
204
- const response = {
205
- requestId: bidId,
206
- cpm: price,
207
- width: width,
208
- height: height,
209
- creativeId: creativeId,
210
- currency: currency || CURRENCY,
211
- netRevenue: true,
212
- ttl: exp || TTL_SECONDS,
213
- };
214
-
215
- if (metaData) {
216
- Object.assign(response, {
217
- meta: metaData
218
- })
219
- } else {
220
- Object.assign(response, {
221
- meta: {
222
- advertiserDomains: advertiserDomains || []
223
- }
224
- })
225
- }
226
-
227
- if (mediaType === BANNER) {
228
- Object.assign(response, {
229
- ad: ad,
230
- });
231
- } else {
232
- Object.assign(response, {
233
- vastXml: ad,
234
- mediaType: VIDEO
235
- });
236
- }
237
- output.push(response);
238
- });
239
- return output;
240
- } catch (e) {
241
- return [];
242
- }
243
- }
244
-
245
- function getUserSyncs(syncOptions, responses, gdprConsent = {}, uspConsent = '') {
246
- let syncs = [];
247
- const {iframeEnabled, pixelEnabled} = syncOptions;
248
- const {gdprApplies, consentString = ''} = gdprConsent;
249
-
250
- const cidArr = responses.filter(resp => deepAccess(resp, 'body.cid')).map(resp => resp.body.cid).filter(uniques);
251
- const params = `?cid=${encodeURIComponent(cidArr.join(','))}&gdpr=${gdprApplies ? 1 : 0}&gdpr_consent=${encodeURIComponent(consentString || '')}&us_privacy=${encodeURIComponent(uspConsent || '')}`
252
- if (iframeEnabled) {
253
- syncs.push({
254
- type: 'iframe',
255
- url: `https://sync.illumin.com/api/sync/iframe/${params}`
256
- });
257
- }
258
- if (pixelEnabled) {
259
- syncs.push({
260
- type: 'image',
261
- url: `https://sync.illumin.com/api/sync/image/${params}`
262
- });
263
- }
264
- return syncs;
265
- }
266
-
267
- export function hashCode(s, prefix = '_') {
268
- const l = s.length;
269
- let h = 0
270
- let i = 0;
271
- if (l > 0) {
272
- while (i < l) {
273
- h = (h << 5) - h + s.charCodeAt(i++) | 0;
274
- }
275
- }
276
- return prefix + h;
277
- }
278
-
279
- export function getUniqueDealId(key, expiry = UNIQUE_DEAL_ID_EXPIRY) {
280
- const storageKey = `u_${key}`;
281
- const now = Date.now();
282
- const data = getStorageItem(storageKey);
283
- let uniqueId;
284
-
285
- if (!data || !data.value || now - data.created > expiry) {
286
- uniqueId = `${key}_${now.toString()}`;
287
- setStorageItem(storageKey, uniqueId);
288
- } else {
289
- uniqueId = data.value;
290
- }
291
-
292
- return uniqueId;
293
- }
294
-
295
- export function getStorageItem(key) {
296
- try {
297
- return tryParseJSON(storage.getDataFromLocalStorage(key));
298
- } catch (e) {
299
- }
300
-
301
- return null;
302
- }
303
-
304
- export function setStorageItem(key, value, timestamp) {
305
- try {
306
- const created = timestamp || Date.now();
307
- const data = JSON.stringify({value, created});
308
- storage.setDataInLocalStorage(key, data);
309
- } catch (e) {
310
- }
311
- }
312
-
313
- export function tryParseJSON(value) {
314
- try {
315
- return JSON.parse(value);
316
- } catch (e) {
317
- return value;
318
- }
319
- }
22
+ const getUserSyncs = createUserSyncGetter({
23
+ iframeSyncUrl: 'https://sync.illumin.com/api/sync/iframe', imageSyncUrl: 'https://sync.illumin.com/api/sync/image'
24
+ });
320
25
 
321
26
  export const spec = {
322
27
  code: BIDDER_CODE,