prebid.js 7.43.0 → 7.44.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 (401) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.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/adkernelAdnAnalyticsAdapter.js +1 -1
  7. package/dist/admixerIdSystem.js +1 -1
  8. package/dist/adnuntiusBidAdapter.js +1 -1
  9. package/dist/adqueryBidAdapter.js +1 -1
  10. package/dist/adqueryIdSystem.js +1 -1
  11. package/dist/adrelevantisBidAdapter.js +1 -1
  12. package/dist/adrinoBidAdapter.js +1 -1
  13. package/dist/adriverIdSystem.js +1 -1
  14. package/dist/adsinteractiveBidAdapter.js +1 -0
  15. package/dist/adtrgtmeBidAdapter.js +1 -1
  16. package/dist/adxcgBidAdapter.js +1 -1
  17. package/dist/adyoulikeBidAdapter.js +1 -1
  18. package/dist/aidemBidAdapter.js +1 -1
  19. package/dist/airgridRtdProvider.js +1 -1
  20. package/dist/ajaBidAdapter.js +1 -1
  21. package/dist/akamaiDapRtdProvider.js +1 -1
  22. package/dist/amxBidAdapter.js +1 -1
  23. package/dist/amxIdSystem.js +1 -1
  24. package/dist/appierAnalyticsAdapter.js +1 -1
  25. package/dist/appnexusBidAdapter.js +1 -1
  26. package/dist/apstreamBidAdapter.js +1 -1
  27. package/dist/asoBidAdapter.js +1 -1
  28. package/dist/atsAnalyticsAdapter.js +1 -1
  29. package/dist/audiencerunBidAdapter.js +1 -1
  30. package/dist/axonixBidAdapter.js +1 -1
  31. package/dist/bedigitechBidAdapter.js +1 -0
  32. package/dist/bidglassBidAdapter.js +1 -1
  33. package/dist/big-richmediaBidAdapter.js +1 -1
  34. package/dist/bluebillywigBidAdapter.js +1 -1
  35. package/dist/blueconicRtdProvider.js +1 -1
  36. package/dist/bridgewellBidAdapter.js +1 -1
  37. package/dist/brightMountainMediaBidAdapter.js +1 -1
  38. package/dist/brightcomBidAdapter.js +1 -1
  39. package/dist/brightcomSSPBidAdapter.js +1 -1
  40. package/dist/browsiRtdProvider.js +1 -1
  41. package/dist/byDataAnalyticsAdapter.js +1 -1
  42. package/dist/carodaBidAdapter.js +1 -1
  43. package/dist/chtnwBidAdapter.js +1 -1
  44. package/dist/concertBidAdapter.js +1 -1
  45. package/dist/connectadBidAdapter.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/criteoIdSystem.js +1 -1
  52. package/dist/cwireBidAdapter.js +1 -1
  53. package/dist/czechAdIdSystem.js +1 -1
  54. package/dist/dacIdSystem.js +1 -1
  55. package/dist/deepintentDpesIdSystem.js +1 -1
  56. package/dist/dependencies.json +3 -0
  57. package/dist/discoveryBidAdapter.js +1 -1
  58. package/dist/dspxBidAdapter.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/feedadBidAdapter.js +1 -1
  61. package/dist/finativeBidAdapter.js +1 -1
  62. package/dist/fintezaAnalyticsAdapter.js +1 -1
  63. package/dist/fledgeForGpt.js +1 -1
  64. package/dist/freewheel-sspBidAdapter.js +1 -1
  65. package/dist/ftrackIdSystem.js +1 -1
  66. package/dist/gdprEnforcement.js +1 -1
  67. package/dist/glimpseBidAdapter.js +1 -1
  68. package/dist/gmosspBidAdapter.js +1 -1
  69. package/dist/gnetBidAdapter.js +1 -1
  70. package/dist/goldbachBidAdapter.js +1 -1
  71. package/dist/gravitoIdSystem.js +1 -1
  72. package/dist/greenbidsAnalyticsAdapter.js +1 -0
  73. package/dist/gridBidAdapter.js +1 -1
  74. package/dist/gridNMBidAdapter.js +1 -1
  75. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  76. package/dist/growthCodeIdSystem.js +1 -1
  77. package/dist/gumgumBidAdapter.js +1 -1
  78. package/dist/h12mediaBidAdapter.js +1 -1
  79. package/dist/hadronAnalyticsAdapter.js +1 -1
  80. package/dist/hadronIdSystem.js +1 -1
  81. package/dist/hadronRtdProvider.js +1 -1
  82. package/dist/id5IdSystem.js +1 -1
  83. package/dist/idWardRtdProvider.js +1 -1
  84. package/dist/identityLinkIdSystem.js +1 -1
  85. package/dist/idxIdSystem.js +1 -1
  86. package/dist/imRtdProvider.js +1 -1
  87. package/dist/impactifyBidAdapter.js +1 -1
  88. package/dist/improvedigitalBidAdapter.js +1 -1
  89. package/dist/imuIdSystem.js +1 -1
  90. package/dist/inmarBidAdapter.js +1 -1
  91. package/dist/insticatorBidAdapter.js +1 -1
  92. package/dist/intentIqIdSystem.js +1 -1
  93. package/dist/invibesBidAdapter.js +1 -1
  94. package/dist/ixBidAdapter.js +1 -1
  95. package/dist/jixieBidAdapter.js +1 -1
  96. package/dist/justpremiumBidAdapter.js +1 -1
  97. package/dist/kargoBidAdapter.js +1 -1
  98. package/dist/konduitAnalyticsAdapter.js +1 -1
  99. package/dist/kueezBidAdapter.js +1 -1
  100. package/dist/kueezRtbBidAdapter.js +1 -1
  101. package/dist/kulturemediaBidAdapter.js +1 -1
  102. package/dist/lassoBidAdapter.js +1 -1
  103. package/dist/lifestreetBidAdapter.js +1 -1
  104. package/dist/liveIntentIdSystem.js +1 -1
  105. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  106. package/dist/logicadBidAdapter.js +1 -1
  107. package/dist/loglyliftBidAdapter.js +1 -1
  108. package/dist/lotamePanoramaIdSystem.js +1 -1
  109. package/dist/magniteAnalyticsAdapter.js +1 -1
  110. package/dist/malltvAnalyticsAdapter.js +1 -1
  111. package/dist/marsmediaBidAdapter.js +1 -1
  112. package/dist/mediafuseBidAdapter.js +1 -1
  113. package/dist/mediagoBidAdapter.js +1 -1
  114. package/dist/mediakeysBidAdapter.js +1 -1
  115. package/dist/mediasquareBidAdapter.js +1 -1
  116. package/dist/merkleIdSystem.js +1 -1
  117. package/dist/mgidBidAdapter.js +1 -1
  118. package/dist/mgidRtdProvider.js +1 -1
  119. package/dist/minutemediaBidAdapter.js +1 -1
  120. package/dist/minutemediaplusBidAdapter.js +1 -1
  121. package/dist/mwOpenLinkIdSystem.js +1 -1
  122. package/dist/naveggIdSystem.js +1 -1
  123. package/dist/nexx360BidAdapter.js +1 -1
  124. package/dist/nobidBidAdapter.js +1 -1
  125. package/dist/not-for-prod/prebid.js +205 -202
  126. package/dist/novatiqIdSystem.js +1 -1
  127. package/dist/oguryBidAdapter.js +1 -1
  128. package/dist/onetagBidAdapter.js +1 -1
  129. package/dist/ooloAnalyticsAdapter.js +1 -1
  130. package/dist/openxOrtbBidAdapter.js +1 -1
  131. package/dist/optidigitalBidAdapter.js +1 -1
  132. package/dist/ortbConverter.js +1 -1
  133. package/dist/outbrainBidAdapter.js +1 -1
  134. package/dist/parrableIdSystem.js +1 -1
  135. package/dist/permutiveRtdProvider.js +1 -1
  136. package/dist/pixfutureBidAdapter.js +1 -1
  137. package/dist/prebid-core.js +1 -1
  138. package/dist/prebidServerBidAdapter.js +1 -1
  139. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  140. package/dist/pubCommonId.js +1 -1
  141. package/dist/publinkIdSystem.js +1 -1
  142. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  143. package/dist/pubmaticBidAdapter.js +1 -1
  144. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  145. package/dist/pxyzBidAdapter.js +1 -1
  146. package/dist/quantcastBidAdapter.js +1 -1
  147. package/dist/quantcastIdSystem.js +1 -1
  148. package/dist/readpeakBidAdapter.js +1 -1
  149. package/dist/realvuAnalyticsAdapter.js +1 -1
  150. package/dist/relaidoBidAdapter.js +1 -1
  151. package/dist/rhythmoneBidAdapter.js +1 -1
  152. package/dist/riseBidAdapter.js +1 -1
  153. package/dist/roxotAnalyticsAdapter.js +1 -1
  154. package/dist/rtbhouseBidAdapter.js +1 -1
  155. package/dist/rtdModule.js +1 -1
  156. package/dist/rubiconAnalyticsAdapter.js +1 -1
  157. package/dist/rubiconBidAdapter.js +1 -1
  158. package/dist/seedingAllianceBidAdapter.js +1 -1
  159. package/dist/seedtagBidAdapter.js +1 -1
  160. package/dist/sharedIdSystem.js +1 -1
  161. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  162. package/dist/sharethroughBidAdapter.js +1 -1
  163. package/dist/shinezBidAdapter.js +1 -1
  164. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  165. package/dist/smaatoBidAdapter.js +1 -1
  166. package/dist/smartadserverBidAdapter.js +1 -1
  167. package/dist/smartxBidAdapter.js +1 -1
  168. package/dist/smilewantedBidAdapter.js +1 -1
  169. package/dist/sonobiBidAdapter.js +1 -1
  170. package/dist/sovrnAnalyticsAdapter.js +1 -1
  171. package/dist/sovrnBidAdapter.js +1 -1
  172. package/dist/sspBCBidAdapter.js +1 -1
  173. package/dist/staqAnalyticsAdapter.js +1 -1
  174. package/dist/stroeerCoreBidAdapter.js +1 -1
  175. package/dist/stvBidAdapter.js +1 -1
  176. package/dist/sublimeBidAdapter.js +1 -1
  177. package/dist/synacormediaBidAdapter.js +1 -1
  178. package/dist/taboolaBidAdapter.js +1 -1
  179. package/dist/targetVideoBidAdapter.js +1 -1
  180. package/dist/teadsBidAdapter.js +1 -1
  181. package/dist/teadsIdSystem.js +1 -1
  182. package/dist/trionBidAdapter.js +1 -1
  183. package/dist/tripleliftBidAdapter.js +1 -1
  184. package/dist/trustpidSystem.js +1 -1
  185. package/dist/ttdBidAdapter.js +1 -1
  186. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  187. package/dist/uid2IdSystem.js +1 -1
  188. package/dist/underdogmediaBidAdapter.js +1 -1
  189. package/dist/undertoneBidAdapter.js +1 -1
  190. package/dist/userId.js +1 -1
  191. package/dist/validationFpdModule.js +1 -1
  192. package/dist/vidazooBidAdapter.js +1 -1
  193. package/dist/videobyteBidAdapter.js +1 -1
  194. package/dist/vidoomyBidAdapter.js +1 -1
  195. package/dist/visxBidAdapter.js +1 -1
  196. package/dist/vuukleBidAdapter.js +1 -1
  197. package/dist/weboramaRtdProvider.js +1 -1
  198. package/dist/widespaceBidAdapter.js +1 -1
  199. package/dist/winrBidAdapter.js +1 -1
  200. package/dist/yahoosspBidAdapter.js +1 -1
  201. package/dist/yieldmoBidAdapter.js +1 -1
  202. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  203. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  204. package/dist/zeotapIdPlusIdSystem.js +1 -1
  205. package/dist/zeta_global_sspBidAdapter.js +1 -1
  206. package/libraries/ortbConverter/converter.js +3 -2
  207. package/modules/33acrossIdSystem.js +5 -2
  208. package/modules/adagioBidAdapter.js +3 -4
  209. package/modules/adkernelAdnAnalyticsAdapter.js +4 -2
  210. package/modules/admixerIdSystem.js +4 -2
  211. package/modules/adnuntiusBidAdapter.js +1 -1
  212. package/modules/adqueryBidAdapter.js +1 -1
  213. package/modules/adqueryIdSystem.js +2 -1
  214. package/modules/adrinoBidAdapter.js +24 -16
  215. package/modules/adriverIdSystem.js +3 -2
  216. package/modules/adsinteractiveBidAdapter.js +144 -0
  217. package/modules/adsinteractiveBidAdapter.md +31 -0
  218. package/modules/adyoulikeBidAdapter.js +2 -3
  219. package/modules/aidemBidAdapter.js +5 -0
  220. package/modules/airgridRtdProvider.js +4 -2
  221. package/modules/ajaBidAdapter.js +38 -16
  222. package/modules/akamaiDapRtdProvider.js +2 -1
  223. package/modules/amxBidAdapter.js +11 -9
  224. package/modules/appnexusBidAdapter.js +8 -8
  225. package/modules/apstreamBidAdapter.js +1 -1
  226. package/modules/atsAnalyticsAdapter.js +4 -2
  227. package/modules/audiencerunBidAdapter.js +9 -10
  228. package/modules/bedigitechBidAdapter.js +67 -0
  229. package/modules/bedigitechBidAdapter.md +32 -0
  230. package/modules/bluebillywigBidAdapter.js +2 -4
  231. package/modules/blueconicRtdProvider.js +2 -1
  232. package/modules/brightcomBidAdapter.js +0 -1
  233. package/modules/brightcomSSPBidAdapter.js +0 -1
  234. package/modules/browsiRtdProvider.js +4 -2
  235. package/modules/byDataAnalyticsAdapter.js +6 -3
  236. package/modules/concertBidAdapter.js +14 -7
  237. package/modules/connectadBidAdapter.js +2 -4
  238. package/modules/craftBidAdapter.js +29 -24
  239. package/modules/criteoBidAdapter.js +4 -2
  240. package/modules/criteoIdSystem.js +6 -2
  241. package/modules/czechAdIdSystem.js +3 -2
  242. package/modules/dacIdSystem.js +4 -3
  243. package/modules/deepintentDpesIdSystem.js +3 -2
  244. package/modules/discoveryBidAdapter.js +1 -1
  245. package/modules/dspxBidAdapter.js +223 -15
  246. package/modules/fintezaAnalyticsAdapter.js +5 -3
  247. package/modules/fledgeForGpt.js +54 -6
  248. package/modules/ftrackIdSystem.js +6 -6
  249. package/modules/gdprEnforcement.js +56 -68
  250. package/modules/glimpseBidAdapter.js +1 -4
  251. package/modules/gnetBidAdapter.js +1 -2
  252. package/modules/gravitoIdSystem.js +5 -3
  253. package/modules/greenbidsAnalyticsAdapter.js +181 -0
  254. package/modules/greenbidsAnalyticsAdapter.md +23 -0
  255. package/modules/gridBidAdapter.js +13 -7
  256. package/modules/growthCodeAnalyticsAdapter.js +3 -2
  257. package/modules/growthCodeIdSystem.js +3 -2
  258. package/modules/gumgumBidAdapter.js +7 -17
  259. package/modules/hadronAnalyticsAdapter.js +5 -3
  260. package/modules/hadronIdSystem.js +3 -1
  261. package/modules/hadronRtdProvider.js +4 -2
  262. package/modules/id5IdSystem.js +4 -2
  263. package/modules/idWardRtdProvider.js +2 -1
  264. package/modules/identityLinkIdSystem.js +5 -2
  265. package/modules/idxIdSystem.js +3 -2
  266. package/modules/imRtdProvider.js +3 -1
  267. package/modules/impactifyBidAdapter.js +2 -4
  268. package/modules/imuIdSystem.js +6 -3
  269. package/modules/insticatorBidAdapter.js +1 -1
  270. package/modules/intentIqIdSystem.js +3 -2
  271. package/modules/invibesBidAdapter.js +1 -1
  272. package/modules/ixBidAdapter.js +1 -1
  273. package/modules/jixieBidAdapter.js +3 -6
  274. package/modules/kargoBidAdapter.js +1 -1
  275. package/modules/kueezRtbBidAdapter.js +1 -1
  276. package/modules/liveIntentIdSystem.js +3 -2
  277. package/modules/lotamePanoramaIdSystem.js +3 -2
  278. package/modules/magniteAnalyticsAdapter.js +25 -6
  279. package/modules/mediafuseBidAdapter.js +1 -1
  280. package/modules/mediagoBidAdapter.js +1 -1
  281. package/modules/mediakeysBidAdapter.js +2 -3
  282. package/modules/merkleIdSystem.js +2 -1
  283. package/modules/mgidBidAdapter.js +1 -1
  284. package/modules/mgidRtdProvider.js +3 -1
  285. package/modules/minutemediaplusBidAdapter.js +1 -1
  286. package/modules/mwOpenLinkIdSystem.js +3 -2
  287. package/modules/naveggIdSystem.js +3 -2
  288. package/modules/nexx360BidAdapter.js +0 -1
  289. package/modules/nobidBidAdapter.js +1 -1
  290. package/modules/novatiqIdSystem.js +6 -3
  291. package/modules/onetagBidAdapter.js +1 -1
  292. package/modules/openxOrtbBidAdapter.js +19 -7
  293. package/modules/openxOrtbBidAdapter.md +6 -5
  294. package/modules/parrableIdSystem.js +4 -2
  295. package/modules/permutiveRtdProvider.js +2 -1
  296. package/modules/prebidServerBidAdapter/index.js +9 -3
  297. package/modules/prebidServerBidAdapter/ortbConverter.js +12 -2
  298. package/modules/prebidmanagerAnalyticsAdapter.js +3 -2
  299. package/modules/pubCommonId.js +6 -3
  300. package/modules/publinkIdSystem.js +2 -1
  301. package/modules/pubmaticAnalyticsAdapter.js +12 -1
  302. package/modules/pubmaticBidAdapter.js +192 -222
  303. package/modules/pubwiseAnalyticsAdapter.js +5 -3
  304. package/modules/quantcastBidAdapter.js +1 -1
  305. package/modules/quantcastIdSystem.js +5 -3
  306. package/modules/realvuAnalyticsAdapter.js +6 -3
  307. package/modules/roxotAnalyticsAdapter.js +5 -2
  308. package/modules/rtbhouseBidAdapter.js +5 -3
  309. package/modules/rtdModule/index.js +3 -0
  310. package/modules/rubiconAnalyticsAdapter.js +3 -2
  311. package/modules/rubiconBidAdapter.js +1 -0
  312. package/modules/sharedIdSystem.js +12 -9
  313. package/modules/sharethroughBidAdapter.js +1 -2
  314. package/modules/sigmoidAnalyticsAdapter.js +4 -2
  315. package/modules/smartadserverBidAdapter.js +2 -3
  316. package/modules/sovrnBidAdapter.js +2 -3
  317. package/modules/staqAnalyticsAdapter.js +5 -3
  318. package/modules/stroeerCoreBidAdapter.js +3 -2
  319. package/modules/taboolaBidAdapter.js +4 -2
  320. package/modules/teadsBidAdapter.js +1 -1
  321. package/modules/teadsIdSystem.js +2 -1
  322. package/modules/tripleliftBidAdapter.js +1 -1
  323. package/modules/trustpidSystem.js +3 -2
  324. package/modules/ttdBidAdapter.js +11 -5
  325. package/modules/uid2IdSystem.js +3 -2
  326. package/modules/undertoneBidAdapter.js +1 -0
  327. package/modules/userId/index.js +5 -2
  328. package/modules/validationFpdModule/index.js +3 -2
  329. package/modules/vidazooBidAdapter.js +14 -5
  330. package/modules/vidoomyBidAdapter.js +29 -1
  331. package/modules/weboramaRtdProvider.js +3 -1
  332. package/modules/yieldmoBidAdapter.js +2 -3
  333. package/modules/yuktamediaAnalyticsAdapter.js +4 -2
  334. package/modules/zeotapIdPlusIdSystem.js +3 -2
  335. package/modules/zeta_global_sspBidAdapter.js +3 -0
  336. package/package.json +1 -1
  337. package/plugins/eslint/validateImports.js +13 -14
  338. package/plugins/pbjsGlobals.js +3 -1
  339. package/src/activities/modules.js +5 -0
  340. package/src/adapterManager.js +4 -8
  341. package/src/adapters/bidderFactory.js +30 -16
  342. package/src/consentHandler.js +42 -0
  343. package/src/refererDetection.js +39 -21
  344. package/src/secureCreatives.js +2 -2
  345. package/src/storageManager.js +33 -47
  346. package/src/userSync.js +7 -4
  347. package/test/spec/modules/33acrossIdSystem_spec.js +1 -1
  348. package/test/spec/modules/adagioBidAdapter_spec.js +11 -17
  349. package/test/spec/modules/admixerIdSystem_spec.js +0 -3
  350. package/test/spec/modules/adnuntiusBidAdapter_spec.js +6 -6
  351. package/test/spec/modules/adrinoBidAdapter_spec.js +65 -34
  352. package/test/spec/modules/adsinteractiveBidAdapter_spec.js +207 -0
  353. package/test/spec/modules/adyoulikeBidAdapter_spec.js +13 -11
  354. package/test/spec/modules/aidemBidAdapter_spec.js +72 -8
  355. package/test/spec/modules/amxBidAdapter_spec.js +4 -1
  356. package/test/spec/modules/atsAnalyticsAdapter_spec.js +2 -2
  357. package/test/spec/modules/audiencerunBidAdapter_spec.js +8 -11
  358. package/test/spec/modules/bedigitechBidAdapter_spec.js +145 -0
  359. package/test/spec/modules/bluebillywigBidAdapter_spec.js +1 -3
  360. package/test/spec/modules/concertBidAdapter_spec.js +3 -8
  361. package/test/spec/modules/connectadBidAdapter_spec.js +11 -3
  362. package/test/spec/modules/criteoBidAdapter_spec.js +29 -0
  363. package/test/spec/modules/criteoIdSystem_spec.js +38 -0
  364. package/test/spec/modules/datablocksBidAdapter_spec.js +0 -1
  365. package/test/spec/modules/dspxBidAdapter_spec.js +184 -13
  366. package/test/spec/modules/fledge_spec.js +173 -2
  367. package/test/spec/modules/gdprEnforcement_spec.js +134 -164
  368. package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +418 -0
  369. package/test/spec/modules/gridBidAdapter_spec.js +9 -5
  370. package/test/spec/modules/growthCodeIdSystem_spec.js +2 -1
  371. package/test/spec/modules/id5IdSystem_spec.js +41 -4
  372. package/test/spec/modules/identityLinkIdSystem_spec.js +2 -2
  373. package/test/spec/modules/improvedigitalBidAdapter_spec.js +10 -3
  374. package/test/spec/modules/jixieBidAdapter_spec.js +42 -60
  375. package/test/spec/modules/mediakeysBidAdapter_spec.js +12 -16
  376. package/test/spec/modules/openxOrtbBidAdapter_spec.js +96 -11
  377. package/test/spec/modules/prebidServerBidAdapter_spec.js +68 -2
  378. package/test/spec/modules/publinkIdSystem_spec.js +3 -2
  379. package/test/spec/modules/pubmaticBidAdapter_spec.js +67 -10
  380. package/test/spec/modules/realTimeDataModule_spec.js +22 -0
  381. package/test/spec/modules/realvuAnalyticsAdapter_spec.js +0 -1
  382. package/test/spec/modules/relaidoBidAdapter_spec.js +5 -5
  383. package/test/spec/modules/rubiconBidAdapter_spec.js +2 -1
  384. package/test/spec/modules/sharethroughBidAdapter_spec.js +97 -21
  385. package/test/spec/modules/smartadserverBidAdapter_spec.js +74 -12
  386. package/test/spec/modules/sovrnBidAdapter_spec.js +25 -6
  387. package/test/spec/modules/stroeerCoreBidAdapter_spec.js +13 -18
  388. package/test/spec/modules/taboolaBidAdapter_spec.js +101 -0
  389. package/test/spec/modules/ttdBidAdapter_spec.js +25 -7
  390. package/test/spec/modules/userId_spec.js +68 -0
  391. package/test/spec/modules/vidazooBidAdapter_spec.js +13 -0
  392. package/test/spec/modules/vidoomyBidAdapter_spec.js +33 -0
  393. package/test/spec/modules/yieldmoBidAdapter_spec.js +18 -2
  394. package/test/spec/modules/zeotapIdPlusIdSystem_spec.js +3 -2
  395. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +8 -0
  396. package/test/spec/refererDetection_spec.js +56 -1
  397. package/test/spec/unit/core/adapterManager_spec.js +21 -58
  398. package/test/spec/unit/core/bidderFactory_spec.js +28 -10
  399. package/test/spec/unit/core/consentHandler_spec.js +29 -1
  400. package/test/spec/unit/core/storageManager_spec.js +31 -21
  401. package/test/spec/userSync_spec.js +2 -1
@@ -5,10 +5,11 @@ import CONSTANTS from '../src/constants.json';
5
5
  import { ajax } from '../src/ajax.js';
6
6
  import { config } from '../src/config.js';
7
7
  import { getGlobal } from '../src/prebidGlobal.js';
8
- import { getStorageManager } from '../src/storageManager.js';
8
+ import {getStorageManager} from '../src/storageManager.js';
9
+ import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
9
10
 
10
11
  const RUBICON_GVL_ID = 52;
11
- export const storage = getStorageManager({gvlid: RUBICON_GVL_ID, moduleName: 'rubicon'});
12
+ export const storage = getStorageManager({moduleType: MODULE_TYPE_ANALYTICS, moduleName: 'rubicon'});
12
13
  const COOKIE_NAME = 'rpaSession';
13
14
  const LAST_SEEN_EXPIRE_TIME = 1800000; // 30 mins
14
15
  const END_EXPIRE_TIME = 21600000; // 6 hours
@@ -465,6 +465,7 @@ export const spec = {
465
465
  'rp_secure': '1',
466
466
  'tk_flint': `${rubiConf.int_type || DEFAULT_INTEGRATION}_v$prebid.version$`,
467
467
  'x_source.tid': bidRequest.transactionId,
468
+ 'x_imp.ext.tid': bidRequest.transactionId,
468
469
  'l_pb_bid_id': bidRequest.bidId,
469
470
  'p_screen_res': _getScreenResolution(),
470
471
  'tk_user_key': params.userId,
@@ -10,8 +10,9 @@ import {submodule} from '../src/hook.js';
10
10
  import { coppaDataHandler } from '../src/adapterManager.js';
11
11
  import {getStorageManager} from '../src/storageManager.js';
12
12
  import {VENDORLESS_GVLID} from '../src/consentHandler.js';
13
+ import {MODULE_TYPE_UID} from '../src/activities/modules.js';
13
14
 
14
- export const storage = getStorageManager({moduleName: 'pubCommonId', gvlid: VENDORLESS_GVLID});
15
+ export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: 'pubCommonId'});
15
16
  const COOKIE = 'cookie';
16
17
  const LOCAL_STORAGE = 'html5';
17
18
  const OPTOUT_NAME = '_pubcid_optout';
@@ -38,12 +39,15 @@ function readValue(name, type) {
38
39
  }
39
40
  }
40
41
 
41
- function getIdCallback(pubcid, pixelCallback) {
42
- return function (callback) {
43
- if (typeof pixelCallback === 'function') {
44
- pixelCallback();
42
+ function getIdCallback(pubcid, pixelUrl) {
43
+ return function (callback, getStoredId) {
44
+ if (pixelUrl) {
45
+ queuePixelCallback(pixelUrl, pubcid, () => {
46
+ callback(getStoredId() || pubcid);
47
+ })();
48
+ } else {
49
+ callback(pubcid);
45
50
  }
46
- callback(pubcid);
47
51
  }
48
52
  }
49
53
 
@@ -58,7 +62,7 @@ function queuePixelCallback(pixelUrl, id = '', callback) {
58
62
  const targetUrl = buildUrl(urlInfo);
59
63
 
60
64
  return function () {
61
- triggerPixel(targetUrl);
65
+ triggerPixel(targetUrl, callback);
62
66
  };
63
67
  }
64
68
 
@@ -125,8 +129,7 @@ export const sharedIdSystemSubmodule = {
125
129
  if (!newId) newId = (create && hasDeviceAccess()) ? generateUUID() : undefined;
126
130
  }
127
131
 
128
- const pixelCallback = queuePixelCallback(pixelUrl, newId);
129
- return {id: newId, callback: getIdCallback(newId, pixelCallback)};
132
+ return {id: newId, callback: getIdCallback(newId, pixelUrl)};
130
133
  },
131
134
  /**
132
135
  * performs action to extend an id. There are generally two ways to extend the expiration time
@@ -2,7 +2,6 @@ import { deepAccess, generateUUID, inIframe } from '../src/utils.js';
2
2
  import { registerBidder } from '../src/adapters/bidderFactory.js';
3
3
  import { config } from '../src/config.js';
4
4
  import { BANNER, VIDEO } from '../src/mediaTypes.js';
5
- import { createEidsArray } from './userId/eids.js';
6
5
 
7
6
  const VERSION = '4.3.0';
8
7
  const BIDDER_CODE = 'sharethrough';
@@ -66,7 +65,7 @@ export const sharethroughAdapterSpec = {
66
65
 
67
66
  req.user = nullish(firstPartyData.user, {});
68
67
  if (!req.user.ext) req.user.ext = {};
69
- req.user.ext.eids = createEidsArray(deepAccess(bidRequests[0], 'userId')) || [];
68
+ req.user.ext.eids = bidRequests[0].userIdAsEids || [];
70
69
 
71
70
  if (bidderRequest.gdprConsent) {
72
71
  const gdprApplies = bidderRequest.gdprConsent.gdprApplies === true;
@@ -6,8 +6,10 @@ import CONSTANTS from '../src/constants.json';
6
6
  import adapterManager from '../src/adapterManager.js';
7
7
  import {getStorageManager} from '../src/storageManager.js';
8
8
  import {generateUUID, logError, logInfo} from '../src/utils.js';
9
+ import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
9
10
 
10
- const storage = getStorageManager();
11
+ const MODULE_CODE = 'sigmoid';
12
+ const storage = getStorageManager({moduleType: MODULE_TYPE_ANALYTICS, moduleName: MODULE_CODE});
11
13
 
12
14
  const url = 'https://kinesis.us-east-1.amazonaws.com/';
13
15
  const analyticsType = 'endpoint';
@@ -285,7 +287,7 @@ function pushEvent(eventType, args) {
285
287
 
286
288
  adapterManager.registerAnalyticsAdapter({
287
289
  adapter: sigmoidAdapter,
288
- code: 'sigmoid'
290
+ code: MODULE_CODE,
289
291
  });
290
292
 
291
293
  export default sigmoidAdapter;
@@ -1,7 +1,6 @@
1
1
  import { deepAccess, deepClone, logError, isFn, isPlainObject } from '../src/utils.js';
2
2
  import { BANNER, VIDEO } from '../src/mediaTypes.js';
3
3
  import { config } from '../src/config.js';
4
- import { createEidsArray } from './userId/eids.js';
5
4
  import { registerBidder } from '../src/adapters/bidderFactory.js';
6
5
 
7
6
  const BIDDER_CODE = 'smartadserver';
@@ -177,8 +176,8 @@ export const spec = {
177
176
  }
178
177
  }
179
178
 
180
- if (bid && bid.userId) {
181
- payload.eids = createEidsArray(bid.userId);
179
+ if (bid && bid.userIdAsEids) {
180
+ payload.eids = bid.userIdAsEids;
182
181
  }
183
182
 
184
183
  if (bidderRequest && bidderRequest.uspConsent) {
@@ -15,7 +15,6 @@ import {
15
15
  BANNER,
16
16
  VIDEO
17
17
  } from '../src/mediaTypes.js'
18
- import {createEidsArray} from './userId/eids.js';
19
18
 
20
19
  const ORTB_VIDEO_PARAMS = {
21
20
  'mimes': (value) => Array.isArray(value) && value.length > 0 && value.every(v => typeof v === 'string'),
@@ -90,8 +89,8 @@ export const spec = {
90
89
  let criteoId;
91
90
 
92
91
  _each(bidReqs, function (bid) {
93
- if (!eids && bid.userId) {
94
- eids = createEidsArray(bid.userId)
92
+ if (!eids && bid.userIdAsEids) {
93
+ eids = bid.userIdAsEids;
95
94
  eids.forEach(function (id) {
96
95
  if (id.uids && id.uids[0]) {
97
96
  if (id.source === 'criteo.com') {
@@ -4,9 +4,11 @@ import CONSTANTS from '../src/constants.json';
4
4
  import adapterManager from '../src/adapterManager.js';
5
5
  import { getRefererInfo } from '../src/refererDetection.js';
6
6
  import { ajax } from '../src/ajax.js';
7
- import { getStorageManager } from '../src/storageManager.js';
7
+ import {getStorageManager} from '../src/storageManager.js';
8
+ import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
8
9
 
9
- const storageObj = getStorageManager();
10
+ const MODULE_CODE = 'staq';
11
+ const storageObj = getStorageManager({moduleType: MODULE_TYPE_ANALYTICS, moduleName: MODULE_CODE});
10
12
 
11
13
  const ANALYTICS_VERSION = '1.0.0';
12
14
  const DEFAULT_QUEUE_TIMEOUT = 4000;
@@ -117,7 +119,7 @@ analyticsAdapter.enableAnalytics = (config) => {
117
119
 
118
120
  adapterManager.registerAnalyticsAdapter({
119
121
  adapter: analyticsAdapter,
120
- code: 'staq'
122
+ code: MODULE_CODE,
121
123
  });
122
124
 
123
125
  export default analyticsAdapter;
@@ -68,9 +68,10 @@ export const spec = {
68
68
 
69
69
  const gdprConsent = bidderRequest.gdprConsent;
70
70
 
71
- if (gdprConsent && gdprConsent.consentString != null && gdprConsent.gdprApplies != null) {
71
+ if (gdprConsent) {
72
72
  basePayload.gdpr = {
73
- consent: bidderRequest.gdprConsent.consentString, applies: bidderRequest.gdprConsent.gdprApplies
73
+ consent: gdprConsent.consentString,
74
+ applies: gdprConsent.gdprApplies
74
75
  };
75
76
  }
76
77
 
@@ -24,7 +24,7 @@ const COOKIE_KEY = 'trc_cookie_storage';
24
24
  * 4. new user set it to 0
25
25
  */
26
26
  export const userData = {
27
- storageManager: getStorageManager({gvlid: GVLID, bidderCode: BIDDER_CODE}),
27
+ storageManager: getStorageManager({bidderCode: BIDDER_CODE}),
28
28
  getUserId: () => {
29
29
  const {getFromLocalStorage, getFromCookie, getFromTRC} = userData;
30
30
 
@@ -278,7 +278,7 @@ function getBid(bids, currency, bidResponse) {
278
278
  if (!bidResponse) {
279
279
  return;
280
280
  }
281
- const {
281
+ let {
282
282
  price: cpm, nurl, crid: creativeId, adm: ad, w: width, h: height, exp: ttl, adomain: advertiserDomains, meta = {}
283
283
  } = bidResponse;
284
284
  let requestId = bids[bidResponse.impid - 1].bidId;
@@ -286,6 +286,8 @@ function getBid(bids, currency, bidResponse) {
286
286
  meta.advertiserDomains = advertiserDomains
287
287
  }
288
288
 
289
+ ad = replaceAuctionPrice(ad, cpm);
290
+
289
291
  return {
290
292
  requestId,
291
293
  ttl,
@@ -12,7 +12,7 @@ const gdprStatus = {
12
12
  CMP_NOT_FOUND_OR_ERROR: 22
13
13
  };
14
14
  const FP_TEADS_ID_COOKIE_NAME = '_tfpvi';
15
- export const storage = getStorageManager({gvlid: GVL_ID, bidderCode: BIDDER_CODE});
15
+ export const storage = getStorageManager({bidderCode: BIDDER_CODE});
16
16
 
17
17
  export const spec = {
18
18
  code: BIDDER_CODE,
@@ -10,6 +10,7 @@ import {ajax} from '../src/ajax.js';
10
10
  import {submodule} from '../src/hook.js';
11
11
  import {getStorageManager} from '../src/storageManager.js';
12
12
  import {uspDataHandler} from '../src/adapterManager.js';
13
+ import {MODULE_TYPE_UID} from '../src/activities/modules.js';
13
14
 
14
15
  const MODULE_NAME = 'teadsId';
15
16
  const GVL_ID = 132;
@@ -28,7 +29,7 @@ export const gdprReason = {
28
29
  GDPR_APPLIES_PUBLISHER_CLASSIC: 120,
29
30
  };
30
31
 
31
- export const storage = getStorageManager({gvlid: GVL_ID, moduleName: MODULE_NAME});
32
+ export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME});
32
33
 
33
34
  /** @type {Submodule} */
34
35
  export const teadsIdSubmodule = {
@@ -11,7 +11,7 @@ const BANNER_TIME_TO_LIVE = 300;
11
11
  const VIDEO_TIME_TO_LIVE = 3600;
12
12
  let gdprApplies = true;
13
13
  let consentString = null;
14
- export const storage = getStorageManager({gvlid: GVLID, bidderCode: BIDDER_CODE});
14
+ export const storage = getStorageManager({bidderCode: BIDDER_CODE});
15
15
 
16
16
  export const tripleliftAdapterSpec = {
17
17
  gvlid: GVLID,
@@ -6,13 +6,14 @@
6
6
  */
7
7
  import { logInfo } from '../src/utils.js';
8
8
  import { submodule } from '../src/hook.js';
9
- import { getStorageManager } from '../src/storageManager.js';
9
+ import {getStorageManager} from '../src/storageManager.js';
10
+ import {MODULE_TYPE_UID} from '../src/activities/modules.js';
10
11
 
11
12
  const MODULE_NAME = 'trustpid';
12
13
  const LOG_PREFIX = 'Trustpid module'
13
14
  let mnoDomain = '';
14
15
 
15
- export const storage = getStorageManager({gvlid: null, moduleName: MODULE_NAME});
16
+ export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME});
16
17
 
17
18
  /**
18
19
  * Handle an event for an iframe.
@@ -1,6 +1,5 @@
1
1
  import * as utils from '../src/utils.js';
2
2
  import { config } from '../src/config.js';
3
- import { createEidsArray } from './userId/eids.js';
4
3
  import { registerBidder } from '../src/adapters/bidderFactory.js';
5
4
  import { BANNER, VIDEO } from '../src/mediaTypes.js';
6
5
 
@@ -125,8 +124,8 @@ function getUser(bidderRequest) {
125
124
  user.buyeruid = bidderRequest.bids[0].userId.tdid;
126
125
  }
127
126
 
128
- var eids = createEidsArray(utils.deepAccess(bidderRequest, 'bids.0.userId'))
129
- if (eids.length) {
127
+ var eids = utils.deepAccess(bidderRequest, 'bids.0.userIdAsEids')
128
+ if (eids && eids.length) {
130
129
  utils.deepSetValue(user, 'ext.eids', eids);
131
130
  }
132
131
 
@@ -165,15 +164,18 @@ function getImpression(bidRequest) {
165
164
 
166
165
  const gpid = utils.deepAccess(bidRequest, 'ortb2Imp.ext.gpid');
167
166
  const tid = utils.deepAccess(bidRequest, 'ortb2Imp.ext.tid');
167
+ const rwdd = utils.deepAccess(bidRequest, 'ortb2Imp.rwdd');
168
168
  if (gpid || tid) {
169
169
  impression.ext = {}
170
170
  if (gpid) { impression.ext.gpid = gpid }
171
171
  if (tid) { impression.ext.tid = tid }
172
172
  }
173
-
173
+ if (rwdd) {
174
+ impression.rwdd = rwdd;
175
+ }
174
176
  const tagid = gpid || bidRequest.params.placementId;
175
177
  if (tagid) {
176
- impression.tagid = tagid
178
+ impression.tagid = tagid;
177
179
  }
178
180
 
179
181
  const mediaTypesVideo = utils.deepAccess(bidRequest, 'mediaTypes.video');
@@ -252,6 +254,7 @@ function video(bid) {
252
254
  const api = utils.deepAccess(bid, 'mediaTypes.video.api');
253
255
  const mimes = utils.deepAccess(bid, 'mediaTypes.video.mimes');
254
256
  const placement = utils.deepAccess(bid, 'mediaTypes.video.placement');
257
+ const plcmt = utils.deepAccess(bid, 'mediaTypes.video.plcmt');
255
258
  const protocols = utils.deepAccess(bid, 'mediaTypes.video.protocols');
256
259
  const playbackmethod = utils.deepAccess(bid, 'mediaTypes.video.playbackmethod');
257
260
  const pos = utils.deepAccess(bid, 'mediaTypes.video.pos');
@@ -287,6 +290,9 @@ function video(bid) {
287
290
  if (playbackmethod) {
288
291
  video.playbackmethod = playbackmethod;
289
292
  }
293
+ if (plcmt) {
294
+ video.plcmt = plcmt;
295
+ }
290
296
  if (pos) {
291
297
  video.pos = pos;
292
298
  }
@@ -8,7 +8,8 @@
8
8
 
9
9
  import { logInfo } from '../src/utils.js';
10
10
  import {submodule} from '../src/hook.js';
11
- import { getStorageManager } from '../src/storageManager.js';
11
+ import {getStorageManager} from '../src/storageManager.js';
12
+ import {MODULE_TYPE_UID} from '../src/activities/modules.js';
12
13
 
13
14
  const MODULE_NAME = 'uid2';
14
15
  const MODULE_REVISION = `1.0`;
@@ -24,7 +25,7 @@ const UID2_PROD_URL = 'https://prod.uidapi.com';
24
25
  const UID2_BASE_URL = UID2_PROD_URL;
25
26
 
26
27
  function getStorage() {
27
- return getStorageManager({gvlid: GVLID, moduleName: MODULE_NAME});
28
+ return getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME});
28
29
  }
29
30
 
30
31
  function createLogInfo(prefix) {
@@ -76,6 +76,7 @@ function getBannerCoords(id) {
76
76
 
77
77
  export const spec = {
78
78
  code: BIDDER_CODE,
79
+ gvlid: 677,
79
80
  supportedMediaTypes: [BANNER, VIDEO],
80
81
  isBidRequestValid: function(bid) {
81
82
  if (bid && bid.params && bid.params.publisherId) {
@@ -157,6 +157,8 @@ import {hasPurpose1Consent} from '../../src/utils/gpdr.js';
157
157
  import {registerOrtbProcessor, REQUEST} from '../../src/pbjsORTB.js';
158
158
  import {newMetrics, timedAuctionHook, useMetrics} from '../../src/utils/perfMetrics.js';
159
159
  import {findRootDomain} from '../../src/fpd/rootDomain.js';
160
+ import {GDPR_GVLIDS} from '../../src/consentHandler.js';
161
+ import {MODULE_TYPE_UID} from '../../src/activities/modules.js';
160
162
 
161
163
  const MODULE_NAME = 'User ID';
162
164
  const COOKIE = STORAGE_TYPE_COOKIES;
@@ -413,7 +415,7 @@ function processSubmoduleCallbacks(submodules, cb) {
413
415
  moduleDone();
414
416
  }
415
417
  try {
416
- submodule.callback(callbackCompleted);
418
+ submodule.callback(callbackCompleted, getStoredValue.bind(null, submodule.config?.storage));
417
419
  } catch (e) {
418
420
  logError(`Error in userID module '${submodule.submodule.name}':`, e);
419
421
  moduleDone();
@@ -982,7 +984,7 @@ function updateSubmodules() {
982
984
  submodule: i,
983
985
  config: submoduleConfig,
984
986
  callback: undefined,
985
- idObj: undefined
987
+ idObj: undefined,
986
988
  } : null;
987
989
  }).filter(submodule => submodule !== null)
988
990
  .forEach((sm) => submodules.push(sm));
@@ -1019,6 +1021,7 @@ export function requestDataDeletion(next, ...args) {
1019
1021
  export function attachIdSystem(submodule) {
1020
1022
  if (!find(submoduleRegistry, i => i.name === submodule.name)) {
1021
1023
  submoduleRegistry.push(submodule);
1024
+ GDPR_GVLIDS.register(MODULE_TYPE_UID, submodule.name, submodule.gvlid)
1022
1025
  updateSubmodules();
1023
1026
  // TODO: a test case wants this to work even if called after init (the setConfig({userId}))
1024
1027
  // so we trigger a refresh. But is that even possible outside of tests?
@@ -5,9 +5,10 @@
5
5
  import {deepAccess, isEmpty, isNumber, logWarn} from '../../src/utils.js';
6
6
  import {ORTB_MAP} from './config.js';
7
7
  import {submodule} from '../../src/hook.js';
8
- import {getStorageManager} from '../../src/storageManager.js';
8
+ import {getCoreStorageManager} from '../../src/storageManager.js';
9
9
 
10
- const STORAGE = getStorageManager();
10
+ // TODO: do FPD modules need their own namespace?
11
+ const STORAGE = getCoreStorageManager('FPDValidation');
11
12
  let optout;
12
13
 
13
14
  /**
@@ -28,7 +28,7 @@ export const SUPPORTED_ID_SYSTEMS = {
28
28
  'pubProvidedId': 1
29
29
  };
30
30
  export const webSessionId = 'wsid_' + parseInt(Date.now() * Math.random());
31
- const storage = getStorageManager({gvlid: GVLID, bidderCode: BIDDER_CODE});
31
+ const storage = getStorageManager({bidderCode: BIDDER_CODE});
32
32
 
33
33
  function getTopWindowQueryParams() {
34
34
  try {
@@ -227,7 +227,7 @@ function interpretResponse(serverResponse, request) {
227
227
 
228
228
  try {
229
229
  results.forEach(result => {
230
- const {creativeId, ad, price, exp, width, height, currency, advertiserDomains, mediaType = BANNER} = result;
230
+ const {creativeId, ad, price, exp, width, height, currency, advertiserDomains, metaData, mediaType = BANNER} = result;
231
231
  if (!ad || !price) {
232
232
  return;
233
233
  }
@@ -241,11 +241,20 @@ function interpretResponse(serverResponse, request) {
241
241
  currency: currency || CURRENCY,
242
242
  netRevenue: true,
243
243
  ttl: exp || TTL_SECONDS,
244
- meta: {
245
- advertiserDomains: advertiserDomains || []
246
- }
247
244
  };
248
245
 
246
+ if (metaData) {
247
+ Object.assign(response, {
248
+ meta: metaData
249
+ })
250
+ } else {
251
+ Object.assign(response, {
252
+ meta: {
253
+ advertiserDomains: advertiserDomains || []
254
+ }
255
+ })
256
+ }
257
+
249
258
  if (mediaType === BANNER) {
250
259
  Object.assign(response, {
251
260
  ad: ad,
@@ -46,6 +46,34 @@ const isBidRequestValid = bid => {
46
46
  return true;
47
47
  };
48
48
 
49
+ /**
50
+ * Schain Object needed encodes URI Component with exlamation mark
51
+ * @param {String} str
52
+ * @returns {String}
53
+ */
54
+ function encodeURIComponentWithExlamation(str) {
55
+ return encodeURIComponent(str).replace(/!/g, '%21');
56
+ }
57
+
58
+ /**
59
+ * Serializes the supply chain object based on IAB standards
60
+ * @see https://github.com/InteractiveAdvertisingBureau/openrtb/blob/master/supplychainobject.md
61
+ * @param {Object} schainObj supply chain object
62
+ * @returns {string} serialized supply chain value
63
+ */
64
+ function serializeSupplyChainObj(schainObj) {
65
+ if (!schainObj || !schainObj.nodes) {
66
+ return '';
67
+ }
68
+ const nodeProps = ['asi', 'sid', 'hp', 'rid', 'name', 'domain'];
69
+ const serializedNodes = schainObj.nodes.map(node =>
70
+ nodeProps.map(prop => encodeURIComponentWithExlamation(node[prop] || '')).join(',')
71
+ ).join('!');
72
+
73
+ const serializedSchain = `${schainObj.ver},${schainObj.complete}!${serializedNodes}`;
74
+ return serializedSchain;
75
+ }
76
+
49
77
  const isBidResponseValid = bid => {
50
78
  if (!bid || !bid.requestId || !bid.cpm || !bid.ttl || !bid.currency) {
51
79
  return false;
@@ -91,7 +119,7 @@ const buildRequests = (validBidRequests, bidderRequest) => {
91
119
  dt: /Mobi/.test(navigator.userAgent) ? 2 : 1,
92
120
  pid: bid.params.pid,
93
121
  requestId: bid.bidId,
94
- schain: bid.schain || '',
122
+ schain: serializeSupplyChainObj(bid.schain) || '',
95
123
  bidfloor,
96
124
  d: getDomainWithoutSubdomain(hostname), // 'vidoomy.com',
97
125
  // TODO: does the fallback make sense here?
@@ -122,6 +122,7 @@ import {
122
122
  getStorageManager
123
123
  } from '../src/storageManager.js';
124
124
  import adapterManager from '../src/adapterManager.js';
125
+ import {MODULE_TYPE_RTD} from '../src/activities/modules.js';
125
126
 
126
127
  /** @type {string} */
127
128
  const MODULE_NAME = 'realTimeData';
@@ -153,7 +154,7 @@ const SFBX_LITE_DATA_SOURCE_LABEL = 'lite';
153
154
  const GVLID = 284;
154
155
 
155
156
  export const storage = getStorageManager({
156
- gvlid: GVLID,
157
+ moduleType: MODULE_TYPE_RTD,
157
158
  moduleName: SUBMODULE_NAME
158
159
  });
159
160
 
@@ -180,6 +181,7 @@ export const storage = getStorageManager({
180
181
  class WeboramaRtdProvider {
181
182
  #components;
182
183
  name = SUBMODULE_NAME;
184
+ gvlid = GVLID;
183
185
  /**
184
186
  * @param {Components} components
185
187
  */
@@ -17,7 +17,6 @@ import {BANNER, VIDEO} from '../src/mediaTypes.js';
17
17
  import {registerBidder} from '../src/adapters/bidderFactory.js';
18
18
  import {Renderer} from '../src/Renderer.js';
19
19
  import {find, includes} from '../src/polyfill.js';
20
- import {createEidsArray} from './userId/eids.js';
21
20
 
22
21
  const BIDDER_CODE = 'yieldmo';
23
22
  const GVLID = 173;
@@ -652,8 +651,8 @@ function shortcutProperty(extraCharacters, target, propertyName) {
652
651
  * @return array of eids objects
653
652
  */
654
653
  function getEids(bidRequest) {
655
- if (deepAccess(bidRequest, 'userId')) {
656
- return createEidsArray(bidRequest.userId) || [];
654
+ if (deepAccess(bidRequest, 'userIdAsEids')) {
655
+ return bidRequest.userIdAsEids || [];
657
656
  }
658
657
  };
659
658
 
@@ -7,8 +7,10 @@ import {getStorageManager} from '../src/storageManager.js';
7
7
  import {getRefererInfo} from '../src/refererDetection.js';
8
8
  import {includes as strIncludes} from '../src/polyfill.js';
9
9
  import {getGlobal} from '../src/prebidGlobal.js';
10
+ import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
10
11
 
11
- const storage = getStorageManager();
12
+ const MODULE_CODE = 'yuktamedia';
13
+ const storage = getStorageManager({moduleType: MODULE_TYPE_ANALYTICS, moduleName: MODULE_CODE});
12
14
  const yuktamediaAnalyticsVersion = 'v3.1.0';
13
15
 
14
16
  let initOptions;
@@ -261,7 +263,7 @@ yuktamediaAnalyticsAdapter.enableAnalytics = function (config) {
261
263
 
262
264
  adapterManager.registerAnalyticsAdapter({
263
265
  adapter: yuktamediaAnalyticsAdapter,
264
- code: 'yuktamedia'
266
+ code: MODULE_CODE,
265
267
  });
266
268
 
267
269
  export default yuktamediaAnalyticsAdapter;
@@ -6,7 +6,8 @@
6
6
  */
7
7
  import { isStr, isPlainObject } from '../src/utils.js';
8
8
  import {submodule} from '../src/hook.js';
9
- import { getStorageManager } from '../src/storageManager.js';
9
+ import {getStorageManager} from '../src/storageManager.js';
10
+ import {MODULE_TYPE_UID} from '../src/activities/modules.js';
10
11
 
11
12
  const ZEOTAP_COOKIE_NAME = 'IDP';
12
13
  const ZEOTAP_VENDOR_ID = 301;
@@ -21,7 +22,7 @@ function readFromLocalStorage() {
21
22
  }
22
23
 
23
24
  export function getStorage() {
24
- return getStorageManager({gvlid: ZEOTAP_VENDOR_ID, moduleName: ZEOTAP_MODULE_NAME});
25
+ return getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: ZEOTAP_MODULE_NAME});
25
26
  }
26
27
 
27
28
  export const storage = getStorage();
@@ -77,6 +77,9 @@ export const spec = {
77
77
  id: request.bidId,
78
78
  secure: secure
79
79
  };
80
+ if (params.tagid) {
81
+ impData.tagid = params.tagid;
82
+ }
80
83
  if (request.mediaTypes) {
81
84
  for (const mediaType in request.mediaTypes) {
82
85
  switch (mediaType) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prebid.js",
3
- "version": "7.43.0",
3
+ "version": "7.44.0",
4
4
  "description": "Header Bidding Management Library",
5
5
  "main": "src/prebid.js",
6
6
  "scripts": {
@@ -1,11 +1,17 @@
1
1
 
2
- let path = require('path');
3
- let _ = require('lodash');
4
- let resolveFrom = require('resolve-from');
2
+ const path = require('path');
3
+ const _ = require('lodash');
4
+ const resolveFrom = require('resolve-from');
5
+ const MODULES_PATH = path.resolve(__dirname, '../../modules');
6
+
7
+ function isInDirectory(filename, dir) {
8
+ const rel = path.relative(dir, filename);
9
+ return rel && !rel.startsWith('..') && !path.isAbsolute(rel);
10
+ }
5
11
 
6
12
  function flagErrors(context, node, importPath) {
7
13
  let absFileDir = path.dirname(context.getFilename());
8
- let absImportPath = path.resolve(absFileDir, importPath);
14
+ let absImportPath = importPath.startsWith('.') ? path.resolve(absFileDir, importPath) : require.resolve(importPath);
9
15
 
10
16
  try {
11
17
  resolveFrom(absFileDir, importPath);
@@ -20,16 +26,9 @@ function flagErrors(context, node, importPath) {
20
26
  ) {
21
27
  context.report(node, `import "${importPath}" not in import whitelist`);
22
28
  } else {
23
- let absModulePath = path.resolve(__dirname, '../../modules');
24
-
25
- // don't allow import of any files directly within modules folder or index.js files within modules' sub-folders
26
- if (
27
- path.dirname(absImportPath) === absModulePath || (
28
- absImportPath.startsWith(absModulePath) &&
29
- path.basename(absImportPath) === 'index.js'
30
- )
31
- ) {
32
- context.report(node, `import "${importPath}" cannot require module entry point`);
29
+ // do not allow cross-module imports
30
+ if (isInDirectory(absImportPath, MODULES_PATH) && (!isInDirectory(absImportPath, absFileDir) || absFileDir === MODULES_PATH)) {
31
+ context.report(node, `import "${importPath}": importing from modules is not allowed`);
33
32
  }
34
33
 
35
34
  // don't allow extension-less local imports
@@ -42,9 +42,11 @@ module.exports = function(api, options) {
42
42
  ];
43
43
 
44
44
  const PREBID_ROOT = path.resolve(__dirname, '..');
45
+ // on Windows, require paths are not filesystem paths
46
+ const SEP_PAT = new RegExp(path.sep.replace(/\\/g, '\\\\'), 'g')
45
47
 
46
48
  function relPath(from, toRelToProjectRoot) {
47
- return path.relative(path.dirname(from), path.join(PREBID_ROOT, toRelToProjectRoot));
49
+ return path.relative(path.dirname(from), path.join(PREBID_ROOT, toRelToProjectRoot)).replace(SEP_PAT, '/');
48
50
  }
49
51
 
50
52
  function getModuleName(filename) {