prebid.js 7.11.0 → 7.12.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 (170) hide show
  1. package/.github/workflows/issue_tracker.yml +1 -1
  2. package/dist/33acrossBidAdapter.js +1 -1
  3. package/dist/adagioBidAdapter.js +1 -1
  4. package/dist/adbookpspBidAdapter.js +1 -1
  5. package/dist/adgenerationBidAdapter.js +1 -1
  6. package/dist/adkernelBidAdapter.js +1 -1
  7. package/dist/adrelevantisBidAdapter.js +1 -1
  8. package/dist/adriverBidAdapter.js +1 -1
  9. package/dist/adriverIdSystem.js +1 -1
  10. package/dist/adtelligentBidAdapter.js +1 -1
  11. package/dist/adtrgtmeBidAdapter.js +1 -1
  12. package/dist/adxcgBidAdapter.js +1 -1
  13. package/dist/ajaBidAdapter.js +1 -1
  14. package/dist/alkimiBidAdapter.js +1 -1
  15. package/dist/amxBidAdapter.js +1 -1
  16. package/dist/amxIdSystem.js +1 -1
  17. package/dist/appierAnalyticsAdapter.js +1 -1
  18. package/dist/appnexusBidAdapter.js +1 -1
  19. package/dist/asoBidAdapter.js +1 -1
  20. package/dist/axonixBidAdapter.js +1 -1
  21. package/dist/betweenBidAdapter.js +1 -1
  22. package/dist/bidglassBidAdapter.js +1 -1
  23. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  24. package/dist/big-richmediaBidAdapter.js +1 -1
  25. package/dist/bridgewellBidAdapter.js +1 -1
  26. package/dist/brightMountainMediaBidAdapter.js +1 -1
  27. package/dist/concertBidAdapter.js +1 -1
  28. package/dist/connectadBidAdapter.js +1 -1
  29. package/dist/consumableBidAdapter.js +1 -1
  30. package/dist/conversantBidAdapter.js +1 -1
  31. package/dist/craftBidAdapter.js +1 -1
  32. package/dist/criteoBidAdapter.js +1 -1
  33. package/dist/dfpAdServerVideo.js +1 -1
  34. package/dist/dgkeywordRtdProvider.js +1 -1
  35. package/dist/displayioBidAdapter.js +1 -3
  36. package/dist/dspxBidAdapter.js +1 -1
  37. package/dist/eplanningBidAdapter.js +1 -1
  38. package/dist/finativeBidAdapter.js +1 -1
  39. package/dist/glimpseBidAdapter.js +1 -1
  40. package/dist/gmosspBidAdapter.js +1 -1
  41. package/dist/goldbachBidAdapter.js +1 -1
  42. package/dist/gridBidAdapter.js +1 -1
  43. package/dist/gridNMBidAdapter.js +1 -1
  44. package/dist/gumgumBidAdapter.js +1 -1
  45. package/dist/h12mediaBidAdapter.js +1 -1
  46. package/dist/id5IdSystem.js +1 -1
  47. package/dist/improvedigitalBidAdapter.js +1 -1
  48. package/dist/inmarBidAdapter.js +1 -1
  49. package/dist/insticatorBidAdapter.js +1 -1
  50. package/dist/ixBidAdapter.js +1 -1
  51. package/dist/justpremiumBidAdapter.js +1 -1
  52. package/dist/konduitAnalyticsAdapter.js +1 -1
  53. package/dist/kueezBidAdapter.js +1 -1
  54. package/dist/lassoBidAdapter.js +1 -1
  55. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  56. package/dist/logicadBidAdapter.js +1 -1
  57. package/dist/loglyliftBidAdapter.js +1 -1
  58. package/dist/malltvAnalyticsAdapter.js +1 -1
  59. package/dist/marsmediaBidAdapter.js +1 -1
  60. package/dist/mediafuseBidAdapter.js +1 -1
  61. package/dist/mediagoBidAdapter.js +1 -0
  62. package/dist/mediasquareBidAdapter.js +1 -1
  63. package/dist/mgidBidAdapter.js +1 -1
  64. package/dist/minutemediaBidAdapter.js +1 -1
  65. package/dist/nextMillenniumBidAdapter.js +1 -1
  66. package/dist/not-for-prod/prebid.js +120 -121
  67. package/dist/oguryBidAdapter.js +1 -1
  68. package/dist/onetagBidAdapter.js +1 -1
  69. package/dist/ooloAnalyticsAdapter.js +1 -1
  70. package/dist/outbrainBidAdapter.js +1 -1
  71. package/dist/parrableIdSystem.js +1 -1
  72. package/dist/pixfutureBidAdapter.js +1 -1
  73. package/dist/prebid-core.js +1 -1
  74. package/dist/publinkIdSystem.js +1 -1
  75. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  76. package/dist/pubmaticBidAdapter.js +1 -1
  77. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  78. package/dist/pxyzBidAdapter.js +1 -1
  79. package/dist/quantcastBidAdapter.js +1 -1
  80. package/dist/rasBidAdapter.js +1 -1
  81. package/dist/readpeakBidAdapter.js +1 -1
  82. package/dist/relaidoBidAdapter.js +1 -1
  83. package/dist/rhythmoneBidAdapter.js +1 -1
  84. package/dist/riseBidAdapter.js +1 -1
  85. package/dist/rubiconAnalyticsAdapter.js +1 -1
  86. package/dist/rubiconBidAdapter.js +1 -1
  87. package/dist/seedingAllianceBidAdapter.js +1 -1
  88. package/dist/seedtagBidAdapter.js +1 -1
  89. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  90. package/dist/sharethroughBidAdapter.js +1 -1
  91. package/dist/shinezBidAdapter.js +1 -1
  92. package/dist/smaatoBidAdapter.js +1 -1
  93. package/dist/smartadserverBidAdapter.js +1 -1
  94. package/dist/smartxBidAdapter.js +1 -1
  95. package/dist/smilewantedBidAdapter.js +1 -1
  96. package/dist/sonobiBidAdapter.js +1 -1
  97. package/dist/sovrnAnalyticsAdapter.js +1 -1
  98. package/dist/sovrnBidAdapter.js +1 -1
  99. package/dist/sspBCBidAdapter.js +1 -1
  100. package/dist/sublimeBidAdapter.js +1 -1
  101. package/dist/synacormediaBidAdapter.js +1 -1
  102. package/dist/tappxBidAdapter.js +1 -1
  103. package/dist/targetVideoBidAdapter.js +1 -1
  104. package/dist/teadsBidAdapter.js +1 -1
  105. package/dist/trionBidAdapter.js +1 -1
  106. package/dist/tripleliftBidAdapter.js +1 -1
  107. package/dist/ttdBidAdapter.js +1 -1
  108. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  109. package/dist/underdogmediaBidAdapter.js +1 -1
  110. package/dist/undertoneBidAdapter.js +1 -1
  111. package/dist/userId.js +1 -1
  112. package/dist/vidazooBidAdapter.js +1 -1
  113. package/dist/videobyteBidAdapter.js +1 -1
  114. package/dist/visxBidAdapter.js +1 -1
  115. package/dist/vuukleBidAdapter.js +1 -1
  116. package/dist/widespaceBidAdapter.js +1 -1
  117. package/dist/winrBidAdapter.js +1 -1
  118. package/dist/yahoosspBidAdapter.js +1 -1
  119. package/dist/yieldmoBidAdapter.js +1 -1
  120. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  121. package/modules/adkernelBidAdapter.js +28 -12
  122. package/modules/adriverBidAdapter.js +5 -12
  123. package/modules/adriverIdSystem.js +2 -1
  124. package/modules/adtelligentBidAdapter.js +2 -0
  125. package/modules/alkimiBidAdapter.js +2 -1
  126. package/modules/betweenBidAdapter.js +3 -3
  127. package/modules/bidwatchAnalyticsAdapter.js +112 -59
  128. package/modules/consumableBidAdapter.js +2 -2
  129. package/modules/criteoBidAdapter.js +19 -13
  130. package/modules/dgkeywordRtdProvider.js +9 -0
  131. package/modules/displayioBidAdapter.js +92 -97
  132. package/modules/id5IdSystem.js +160 -111
  133. package/modules/id5IdSystem.md +16 -14
  134. package/modules/improvedigitalBidAdapter.js +50 -28
  135. package/modules/ixBidAdapter.js +13 -306
  136. package/modules/mediagoBidAdapter.js +462 -0
  137. package/modules/mediagoBidAdapter.md +34 -0
  138. package/modules/nextMillenniumBidAdapter.js +25 -6
  139. package/modules/pubmaticAnalyticsAdapter.js +1 -1
  140. package/modules/rasBidAdapter.js +8 -0
  141. package/modules/rasBidAdapter.md +14 -13
  142. package/modules/sonobiBidAdapter.js +1 -0
  143. package/modules/tappxBidAdapter.js +9 -0
  144. package/package.json +1 -1
  145. package/src/adloader.js +2 -1
  146. package/src/adserver.js +0 -56
  147. package/src/auction.js +58 -15
  148. package/src/native.js +1 -0
  149. package/src/refererDetection.js +12 -1
  150. package/src/videoCache.js +8 -2
  151. package/test/spec/modules/adkernelBidAdapter_spec.js +11 -2
  152. package/test/spec/modules/adriverBidAdapter_spec.js +6 -13
  153. package/test/spec/modules/adriverIdSystem_spec.js +3 -8
  154. package/test/spec/modules/adtelligentBidAdapter_spec.js +1 -0
  155. package/test/spec/modules/alkimiBidAdapter_spec.js +2 -1
  156. package/test/spec/modules/betweenBidAdapter_spec.js +17 -0
  157. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +28 -12
  158. package/test/spec/modules/criteoBidAdapter_spec.js +35 -26
  159. package/test/spec/modules/dgkeywordRtdProvider_spec.js +1 -1
  160. package/test/spec/modules/displayioBidAdapter_spec.js +16 -52
  161. package/test/spec/modules/enrichmentFpdModule_spec.js +2 -1
  162. package/test/spec/modules/fpdModule_spec.js +2 -1
  163. package/test/spec/modules/id5IdSystem_spec.js +529 -172
  164. package/test/spec/modules/improvedigitalBidAdapter_spec.js +9 -13
  165. package/test/spec/modules/ixBidAdapter_spec.js +210 -104
  166. package/test/spec/modules/mediagoBidAdapter_spec.js +97 -0
  167. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +2 -7
  168. package/test/spec/modules/rasBidAdapter_spec.js +2 -0
  169. package/test/spec/native_spec.js +144 -0
  170. package/test/spec/videoCache_spec.js +37 -7
@@ -25,7 +25,6 @@ import {find} from '../src/polyfill.js';
25
25
  import {registerBidder} from '../src/adapters/bidderFactory.js';
26
26
  import {INSTREAM, OUTSTREAM} from '../src/video.js';
27
27
  import {Renderer} from '../src/Renderer.js';
28
- import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
29
28
 
30
29
  const BIDDER_CODE = 'ix';
31
30
  const ALIAS_BIDDER_CODE = 'roundel';
@@ -100,93 +99,6 @@ const VIDEO_PARAMS_ALLOW_LIST = [
100
99
  'delivery', 'pos', 'companionad', 'api', 'companiontype', 'ext',
101
100
  'playerSize', 'w', 'h'
102
101
  ];
103
- const NATIVE_ASSET_TYPES = {
104
- TITLE: 100,
105
- IMG: 200,
106
- VIDEO: 300,
107
- DATA: 400
108
- };
109
- const NATIVE_IMAGE_TYPES = {
110
- ICON: 1,
111
- MAIN: 3
112
- };
113
- const NATIVE_DATA_TYPES = {
114
- SPONSORED: 1,
115
- DESC: 2,
116
- RATING: 3,
117
- LIKES: 4,
118
- DOWNLOADS: 5,
119
- PRICE: 6,
120
- SALEPRICE: 7,
121
- PHONE: 8,
122
- ADDRESS: 9,
123
- DESC2: 10,
124
- DISPLAYURL: 11,
125
- CTATEXT: 12
126
- };
127
- const NATIVE_DATA_MAP = {
128
- [NATIVE_DATA_TYPES.SPONSORED]: 'sponsoredBy',
129
- [NATIVE_DATA_TYPES.DESC]: 'body',
130
- [NATIVE_DATA_TYPES.RATING]: 'rating',
131
- [NATIVE_DATA_TYPES.LIKES]: 'likes',
132
- [NATIVE_DATA_TYPES.DOWNLOADS]: 'downloads',
133
- [NATIVE_DATA_TYPES.PRICE]: 'price',
134
- [NATIVE_DATA_TYPES.SALEPRICE]: 'salePrice',
135
- [NATIVE_DATA_TYPES.PHONE]: 'phone',
136
- [NATIVE_DATA_TYPES.ADDRESS]: 'address',
137
- [NATIVE_DATA_TYPES.DESC2]: 'body2',
138
- [NATIVE_DATA_TYPES.DISPLAYURL]: 'displayUrl',
139
- [NATIVE_DATA_TYPES.CTATEXT]: 'cta'
140
- };
141
- const NATIVE_ASSETS_MAP = {
142
- 'title': { assetType: NATIVE_ASSET_TYPES.TITLE },
143
- 'icon': { assetType: NATIVE_ASSET_TYPES.IMG, subtype: NATIVE_IMAGE_TYPES.ICON },
144
- 'image': { assetType: NATIVE_ASSET_TYPES.IMG, subtype: NATIVE_IMAGE_TYPES.MAIN },
145
- 'sponsoredBy': { assetType: NATIVE_ASSET_TYPES.DATA, subtype: NATIVE_DATA_TYPES.SPONSORED },
146
- 'body': { assetType: NATIVE_ASSET_TYPES.DATA, subtype: NATIVE_DATA_TYPES.DESC },
147
- 'rating': { assetType: NATIVE_ASSET_TYPES.DATA, subtype: NATIVE_DATA_TYPES.RATING },
148
- 'likes': { assetType: NATIVE_ASSET_TYPES.DATA, subtype: NATIVE_DATA_TYPES.LIKES },
149
- 'downloads': { assetType: NATIVE_ASSET_TYPES.DATA, subtype: NATIVE_DATA_TYPES.DOWNLOADS },
150
- 'price': { assetType: NATIVE_ASSET_TYPES.DATA, subtype: NATIVE_DATA_TYPES.PRICE },
151
- 'salePrice': { assetType: NATIVE_ASSET_TYPES.DATA, subtype: NATIVE_DATA_TYPES.SALEPRICE },
152
- 'phone': { assetType: NATIVE_ASSET_TYPES.DATA, subtype: NATIVE_DATA_TYPES.PHONE },
153
- 'address': { assetType: NATIVE_ASSET_TYPES.DATA, subtype: NATIVE_DATA_TYPES.ADDRESS },
154
- 'body2': { assetType: NATIVE_ASSET_TYPES.DATA, subtype: NATIVE_DATA_TYPES.DESC2 },
155
- 'displayUrl': { assetType: NATIVE_ASSET_TYPES.DATA, subtype: NATIVE_DATA_TYPES.DISPLAYURL },
156
- 'cta': { assetType: NATIVE_ASSET_TYPES.DATA, subtype: NATIVE_DATA_TYPES.CTATEXT },
157
- 'video': { assetType: NATIVE_ASSET_TYPES.VIDEO }
158
- };
159
- const NATIVE_ALLOWED_PROPERTIES = [
160
- 'rendererUrl',
161
- 'sendTargetingKeys',
162
- 'adTemplate',
163
- 'type',
164
- 'ext',
165
- 'privacyLink',
166
- 'clickUrl',
167
- 'privacyIcon'
168
- ];
169
- const NATIVE_ASSET_DEFAULT = {
170
- TITLE: {
171
- LEN: 25
172
- },
173
- VIDEO: {
174
- MIMES: [
175
- 'video/mp4',
176
- 'video/webm'
177
- ],
178
- MINDURATION: 0,
179
- MAXDURATION: 120,
180
- PROTOCOLS: [2, 3, 5, 6],
181
- }
182
- };
183
- const NATIVE_EVENT_TYPES = {
184
- IMRESSION: 1
185
- };
186
- const NATIVE_EVENT_TRACKING_METHOD = {
187
- IMG: 1,
188
- JS: 2
189
- };
190
102
  const LOCAL_STORAGE_KEY = 'ixdiag';
191
103
  let hasRegisteredHandler = false;
192
104
  export const storage = getStorageManager({gvlid: GLOBAL_VENDOR_ID, bidderCode: BIDDER_CODE});
@@ -307,50 +219,13 @@ function bidToVideoImp(bid) {
307
219
  */
308
220
  function bidToNativeImp(bid) {
309
221
  const imp = bidToImp(bid);
310
- const nativeAdUnitRef = deepAccess(bid, 'mediaTypes.native');
311
-
312
- const assets = [];
313
-
314
- // Convert all native assets to imp object
315
- for (const [adUnitProperty, adUnitValues] of Object.entries(nativeAdUnitRef)) {
316
- if (!NATIVE_ASSETS_MAP[adUnitProperty]) {
317
- continue;
318
- }
319
-
320
- const { assetType, subtype } = NATIVE_ASSETS_MAP[adUnitProperty];
321
- let asset;
322
- switch (assetType) {
323
- case NATIVE_ASSET_TYPES.TITLE:
324
- asset = createNativeTitleRequest(adUnitValues);
325
- break;
326
- case NATIVE_ASSET_TYPES.IMG:
327
- asset = createNativeImgRequest(adUnitValues, subtype);
328
- break;
329
- case NATIVE_ASSET_TYPES.VIDEO:
330
- asset = createNativeVideoRequest(adUnitValues);
331
- break;
332
- case NATIVE_ASSET_TYPES.DATA:
333
- asset = createNativeDataRequest(adUnitValues, subtype);
334
- break;
335
- }
336
- asset.id = assetType + (subtype || 0);
337
- assets.push(asset);
338
- }
339
-
340
- if (assets.length === 0) {
341
- logWarn('IX Bid Adapter: Native bid does not contain recognised assets in [mediaTypes.native]');
342
- return {};
343
- }
344
222
 
345
- const request = {
346
- assets: assets,
347
- ver: '1.2',
348
- eventtrackers: [{
349
- event: 1,
350
- methods: [1, 2]
351
- }],
352
- privacy: 1
353
- };
223
+ const request = bid.nativeOrtbRequest
224
+ request.eventtrackers = [{
225
+ event: 1,
226
+ methods: [1, 2]
227
+ }];
228
+ request.privacy = 1;
354
229
 
355
230
  imp.native = {
356
231
  request: JSON.stringify(request),
@@ -365,80 +240,6 @@ function bidToNativeImp(bid) {
365
240
  return imp;
366
241
  }
367
242
 
368
- /**
369
- * Converts native bid asset to a native impression asset
370
- * @param {object} bidAsset PBJS bid asset object
371
- * @returns {object} IX impression asset object
372
- */
373
- function createNativeTitleRequest(bidAsset) {
374
- return {
375
- required: bidAsset.required ? 1 : 0,
376
- title: {
377
- len: bidAsset.len ? bidAsset.len : NATIVE_ASSET_DEFAULT.TITLE.LEN,
378
- ext: bidAsset.ext
379
- }
380
- }
381
- }
382
-
383
- /**
384
- * Converts native bid asset to a native impression asset
385
- * @param {object} bidAsset PBJS bid asset object
386
- * @param {int} type The image type
387
- * @returns {object} IX impression asset object
388
- */
389
- function createNativeImgRequest(bidAsset, type) {
390
- let asset = {
391
- required: bidAsset.required ? 1 : 0,
392
- img: {
393
- type: type,
394
- mimes: bidAsset.mimes,
395
- ext: bidAsset.ext
396
- }
397
- }
398
-
399
- if (bidAsset.hasOwnProperty('sizes') && bidAsset.sizes.length === 2) {
400
- asset.img.wmin = bidAsset.sizes[0];
401
- asset.img.hmin = bidAsset.sizes[1];
402
- }
403
-
404
- return asset
405
- }
406
-
407
- /**
408
- * Converts native bid asset to a native impression asset
409
- * @param {object} bidAsset PBJS bid asset object
410
- * @returns {object} IX impression asset object
411
- */
412
- function createNativeVideoRequest(bidAsset) {
413
- return {
414
- required: bidAsset.required ? 1 : 0,
415
- video: {
416
- mimes: bidAsset.mimes ? bidAsset.mimes : NATIVE_ASSET_DEFAULT.VIDEO.MIMES,
417
- minduration: bidAsset.minduration ? bidAsset.minduration : NATIVE_ASSET_DEFAULT.VIDEO.MINDURATION,
418
- maxduration: bidAsset.maxduration ? bidAsset.maxduration : NATIVE_ASSET_DEFAULT.VIDEO.MAXDURATION,
419
- protocols: bidAsset.protocols ? bidAsset.protocols : NATIVE_ASSET_DEFAULT.VIDEO.PROTOCOLS,
420
- ext: bidAsset.ext
421
- }
422
- }
423
- }
424
-
425
- /**
426
- * Converts native bid asset to a native impression asset
427
- * @param {object} bidAsset PBJS bid asset object
428
- * @param {int} type The image type
429
- * @returns {object} IX impression asset object
430
- */
431
- function createNativeDataRequest(bidAsset, type) {
432
- return {
433
- required: bidAsset.required ? 1 : 0,
434
- data: {
435
- type: type,
436
- len: bidAsset.len,
437
- ext: bidAsset.ext
438
- }
439
- }
440
- }
441
-
442
243
  /**
443
244
  * Converts an incoming PBJS bid to an IX Impression
444
245
  * @param {object} bid PBJS bid object
@@ -559,7 +360,7 @@ function parseBid(rawBid, currency, bidRequest) {
559
360
  bid.mediaTypes = bidRequest.mediaTypes;
560
361
  bid.ttl = isValidExpiry ? rawBid.exp : VIDEO_TIME_TO_LIVE;
561
362
  } else if (parsedAdm && parsedAdm.native) {
562
- bid.native = interpretNativeAdm(parsedAdm.native);
363
+ bid.native = {ortb: parsedAdm.native};
563
364
  bid.width = rawBid.w ? rawBid.w : 1;
564
365
  bid.height = rawBid.h ? rawBid.h : 1;
565
366
  bid.mediaType = NATIVE;
@@ -583,84 +384,6 @@ function parseBid(rawBid, currency, bidRequest) {
583
384
  return bid;
584
385
  }
585
386
 
586
- /**
587
- * Parse native adm and set native asset key names recognized by Prebid.js
588
- * @param {string} adm Native adm complience
589
- */
590
- function interpretNativeAdm(nativeResponse) {
591
- const native = {
592
- clickUrl: nativeResponse.link.url,
593
- privacyLink: nativeResponse.privacy
594
- };
595
-
596
- for (const asset of nativeResponse.assets) {
597
- const subtype = asset.id % 100;
598
- const assetType = asset.id - subtype;
599
-
600
- switch (assetType) {
601
- case NATIVE_ASSET_TYPES.TITLE:
602
- native.title = asset.title && asset.title.text;
603
- break;
604
- case NATIVE_ASSET_TYPES.IMG:
605
- const image = {
606
- url: asset.img && asset.img.url,
607
- height: asset.img && asset.img.h,
608
- width: asset.img && asset.img.w
609
- };
610
- native[subtype === NATIVE_IMAGE_TYPES.ICON ? 'icon' : 'image'] = image;
611
- break;
612
- case NATIVE_ASSET_TYPES.VIDEO:
613
- native.video = asset.video && asset.video.vasttag;
614
- break;
615
- case NATIVE_ASSET_TYPES.DATA:
616
- setDataAsset(native, asset, subtype);
617
- break;
618
- default:
619
- logWarn(`IX Bid Adapter: native asset ID ${asset.id} could not be recognized`);
620
- }
621
- }
622
-
623
- setTrackers(native, nativeResponse);
624
- return native;
625
- }
626
-
627
- function setDataAsset(native, asset, type) {
628
- if (!(type in NATIVE_DATA_MAP)) {
629
- logWarn(`IX Bid Adapter: native data asset type ${type} is not supported`);
630
- return;
631
- }
632
- native[NATIVE_DATA_MAP[type]] = asset.data && asset.data.value;
633
- }
634
-
635
- function setTrackers(native, nativeResponse) {
636
- native.impressionTrackers = []
637
-
638
- if (Array.isArray(nativeResponse.imptrackers)) {
639
- native.impressionTrackers.push(...nativeResponse.imptrackers)
640
- }
641
-
642
- if (Array.isArray(nativeResponse.link.clicktrackers)) {
643
- native.impressionTrackers.push(...nativeResponse.link.clicktrackers)
644
- }
645
-
646
- if (Array.isArray(nativeResponse.eventtrackers)) {
647
- nativeResponse.eventtrackers.forEach(tracker => {
648
- if (tracker.event !== NATIVE_EVENT_TYPES.IMRESSION) {
649
- return
650
- }
651
-
652
- switch (tracker.method) {
653
- case NATIVE_EVENT_TRACKING_METHOD.IMG:
654
- native.impressionTrackers.push(tracker.url);
655
- break;
656
- case NATIVE_EVENT_TRACKING_METHOD.JS:
657
- native.javascriptTrackers = `<script src=\"${tracker.url}\"></script>`;
658
- break;
659
- }
660
- })
661
- }
662
- }
663
-
664
387
  /**
665
388
  * Determines whether or not the given object is valid size format.
666
389
  *
@@ -758,25 +481,13 @@ function isValidBidFloorParams(bidFloor, bidFloorCur) {
758
481
  bidFloorCur.match(curRegex));
759
482
  }
760
483
 
761
- function nativeMediaTypeValid(nativeObj) {
762
- if (nativeObj === undefined) {
763
- return true;
764
- }
765
-
766
- let hasValidAsset = false;
767
-
768
- for (const property in nativeObj) {
769
- if (!(property in NATIVE_ASSETS_MAP) && !NATIVE_ALLOWED_PROPERTIES.includes(property)) {
770
- logError('IX Bid Adapter: native', { bidder: BIDDER_CODE, code: ERROR_CODES.PROPERTY_NOT_INCLUDED });
771
- return false;
772
- }
773
-
774
- if (property in NATIVE_ASSETS_MAP) {
775
- hasValidAsset = true;
776
- }
484
+ function nativeMediaTypeValid(bid) {
485
+ const nativeMediaTypes = deepAccess(bid, 'mediaTypes.native');
486
+ if (nativeMediaTypes === undefined) {
487
+ return true
777
488
  }
778
489
 
779
- return hasValidAsset;
490
+ return bid.nativeOrtbRequest && Array.isArray(bid.nativeOrtbRequest.assets) && bid.nativeOrtbRequest.assets.length > 0
780
491
  }
781
492
 
782
493
  /**
@@ -837,8 +548,6 @@ function getEidInfo(allEids) {
837
548
  *
838
549
  */
839
550
  function buildRequest(validBidRequests, bidderRequest, impressions, version) {
840
- // convert Native ORTB definition to old-style prebid native definition
841
- validBidRequests = convertOrtbRequestToProprietaryNative(validBidRequests);
842
551
  // Always use secure HTTPS protocol.
843
552
  let baseUrl = SECURE_BID_URL;
844
553
  // Get ids from Prebid User ID Modules
@@ -966,7 +675,6 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
966
675
  // Use the siteId in the first bid request as the main siteId.
967
676
  siteID = validBidRequests[0].params.siteId;
968
677
  payload.s = siteID;
969
- payload.v = version;
970
678
  if (version) {
971
679
  payload.v = version;
972
680
  }
@@ -1603,7 +1311,6 @@ export const spec = {
1603
1311
  const paramsSize = deepAccess(bid, 'params.size');
1604
1312
  const mediaTypeBannerSizes = deepAccess(bid, 'mediaTypes.banner.sizes');
1605
1313
  const mediaTypeVideoRef = deepAccess(bid, 'mediaTypes.video');
1606
- const mediaTypeNativeRef = deepAccess(bid, 'mediaTypes.native');
1607
1314
  const mediaTypeVideoPlayerSize = deepAccess(bid, 'mediaTypes.video.playerSize');
1608
1315
  const hasBidFloor = bid.params.hasOwnProperty('bidFloor');
1609
1316
  const hasBidFloorCur = bid.params.hasOwnProperty('bidFloorCur');
@@ -1670,7 +1377,7 @@ export const spec = {
1670
1377
  }
1671
1378
  }
1672
1379
 
1673
- return nativeMediaTypeValid(mediaTypeNativeRef);
1380
+ return nativeMediaTypeValid(bid);
1674
1381
  },
1675
1382
 
1676
1383
  /**