prebid.js 7.10.0 → 7.13.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 (366) hide show
  1. package/.github/PULL_REQUEST_TEMPLATE.md +16 -10
  2. package/.github/codeql/codeql-config.yml +4 -0
  3. package/.github/workflows/codeql-analysis.yml +73 -0
  4. package/.github/workflows/issue_tracker.yml +1 -1
  5. package/README.md +0 -2
  6. package/babelConfig.js +10 -4
  7. package/dist/33acrossBidAdapter.js +1 -1
  8. package/dist/acuityAdsBidAdapter.js +1 -0
  9. package/dist/adagioBidAdapter.js +1 -1
  10. package/dist/adbookpspBidAdapter.js +1 -1
  11. package/dist/adgenerationBidAdapter.js +1 -1
  12. package/dist/adkernelBidAdapter.js +1 -1
  13. package/dist/adrelevantisBidAdapter.js +1 -1
  14. package/dist/adriverBidAdapter.js +1 -1
  15. package/dist/adriverIdSystem.js +1 -1
  16. package/dist/adtelligentBidAdapter.js +1 -1
  17. package/dist/adtrgtmeBidAdapter.js +1 -0
  18. package/dist/adxcgBidAdapter.js +1 -1
  19. package/dist/adyoulikeBidAdapter.js +1 -1
  20. package/dist/ajaBidAdapter.js +1 -1
  21. package/dist/alkimiBidAdapter.js +1 -1
  22. package/dist/amxBidAdapter.js +1 -1
  23. package/dist/amxIdSystem.js +1 -1
  24. package/dist/aniviewBidAdapter.js +1 -1
  25. package/dist/aolBidAdapter.js +1 -1
  26. package/dist/appierAnalyticsAdapter.js +1 -1
  27. package/dist/appnexusBidAdapter.js +1 -1
  28. package/dist/asoBidAdapter.js +1 -1
  29. package/dist/audiencerunBidAdapter.js +1 -1
  30. package/dist/axonixBidAdapter.js +1 -1
  31. package/dist/beopBidAdapter.js +1 -1
  32. package/dist/betweenBidAdapter.js +1 -1
  33. package/dist/bidglassBidAdapter.js +1 -1
  34. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  35. package/dist/big-richmediaBidAdapter.js +1 -1
  36. package/dist/bluebillywigBidAdapter.js +1 -1
  37. package/dist/brandmetricsRtdProvider.js +1 -1
  38. package/dist/bridgewellBidAdapter.js +1 -1
  39. package/dist/brightMountainMediaBidAdapter.js +1 -1
  40. package/dist/browsiRtdProvider.js +1 -1
  41. package/dist/cleanioRtdProvider.js +1 -1
  42. package/dist/concertBidAdapter.js +1 -1
  43. package/dist/connectadBidAdapter.js +1 -1
  44. package/dist/consentManagement.js +1 -1
  45. package/dist/consentManagementUsp.js +1 -1
  46. package/dist/consumableBidAdapter.js +1 -1
  47. package/dist/conversantBidAdapter.js +1 -1
  48. package/dist/cpmstarBidAdapter.js +1 -1
  49. package/dist/craftBidAdapter.js +1 -1
  50. package/dist/criteoBidAdapter.js +1 -1
  51. package/dist/currency.js +1 -1
  52. package/dist/datawrkzBidAdapter.js +1 -0
  53. package/dist/debugging-standalone.js +1 -1
  54. package/dist/dfpAdServerVideo.js +1 -1
  55. package/dist/dgkeywordRtdProvider.js +1 -1
  56. package/dist/displayioBidAdapter.js +1 -3
  57. package/dist/dspxBidAdapter.js +1 -1
  58. package/dist/enrichmentFpdModule.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/finativeBidAdapter.js +1 -1
  61. package/dist/glimpseBidAdapter.js +1 -1
  62. package/dist/gmosspBidAdapter.js +1 -1
  63. package/dist/goldbachBidAdapter.js +1 -1
  64. package/dist/gridBidAdapter.js +1 -1
  65. package/dist/gridNMBidAdapter.js +1 -1
  66. package/dist/gumgumBidAdapter.js +1 -1
  67. package/dist/h12mediaBidAdapter.js +1 -1
  68. package/dist/id5IdSystem.js +1 -1
  69. package/dist/imRtdProvider.js +1 -1
  70. package/dist/impactifyBidAdapter.js +1 -1
  71. package/dist/improvedigitalBidAdapter.js +1 -1
  72. package/dist/inmarBidAdapter.js +1 -1
  73. package/dist/insticatorBidAdapter.js +1 -1
  74. package/dist/ixBidAdapter.js +1 -1
  75. package/dist/jixieBidAdapter.js +1 -1
  76. package/dist/justpremiumBidAdapter.js +1 -1
  77. package/dist/kargoBidAdapter.js +1 -1
  78. package/dist/konduitAnalyticsAdapter.js +1 -1
  79. package/dist/kueezBidAdapter.js +1 -1
  80. package/dist/lassoBidAdapter.js +1 -1
  81. package/dist/lifestreetBidAdapter.js +1 -0
  82. package/dist/limelightDigitalBidAdapter.js +1 -1
  83. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  84. package/dist/logicadBidAdapter.js +1 -1
  85. package/dist/loglyliftBidAdapter.js +1 -1
  86. package/dist/mabidderBidAdapter.js +1 -0
  87. package/dist/malltvAnalyticsAdapter.js +1 -1
  88. package/dist/marsmediaBidAdapter.js +1 -1
  89. package/dist/mediafuseBidAdapter.js +1 -1
  90. package/dist/mediagoBidAdapter.js +1 -0
  91. package/dist/mediakeysBidAdapter.js +1 -1
  92. package/dist/mediasquareBidAdapter.js +1 -1
  93. package/dist/mgidBidAdapter.js +1 -1
  94. package/dist/minutemediaBidAdapter.js +1 -1
  95. package/dist/nextMillenniumBidAdapter.js +1 -1
  96. package/dist/not-for-prod/prebid.js +153 -147
  97. package/dist/oguryBidAdapter.js +1 -1
  98. package/dist/oneKeyIdSystem.js +1 -0
  99. package/dist/oneKeyRtdProvider.js +1 -0
  100. package/dist/onetagBidAdapter.js +1 -1
  101. package/dist/ooloAnalyticsAdapter.js +1 -1
  102. package/dist/openxAnalyticsAdapter.js +1 -1
  103. package/dist/outbrainBidAdapter.js +1 -1
  104. package/dist/parrableIdSystem.js +1 -1
  105. package/dist/permutiveRtdProvider.js +1 -1
  106. package/dist/pixfutureBidAdapter.js +1 -1
  107. package/dist/prebid-core.js +2 -2
  108. package/dist/publinkIdSystem.js +1 -1
  109. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  110. package/dist/pubmaticBidAdapter.js +1 -1
  111. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  112. package/dist/pxyzBidAdapter.js +1 -1
  113. package/dist/quantcastBidAdapter.js +1 -1
  114. package/dist/rasBidAdapter.js +1 -1
  115. package/dist/readpeakBidAdapter.js +1 -1
  116. package/dist/relaidoBidAdapter.js +1 -1
  117. package/dist/rhythmoneBidAdapter.js +1 -1
  118. package/dist/riseBidAdapter.js +1 -1
  119. package/dist/rtbhouseBidAdapter.js +1 -1
  120. package/dist/rubiconAnalyticsAdapter.js +1 -1
  121. package/dist/rubiconBidAdapter.js +1 -1
  122. package/dist/seedingAllianceBidAdapter.js +1 -1
  123. package/dist/seedtagBidAdapter.js +1 -1
  124. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  125. package/dist/sharethroughBidAdapter.js +1 -1
  126. package/dist/shinezBidAdapter.js +1 -1
  127. package/dist/smaatoBidAdapter.js +1 -1
  128. package/dist/smartadserverBidAdapter.js +1 -1
  129. package/dist/smartxBidAdapter.js +1 -1
  130. package/dist/smilewantedBidAdapter.js +1 -1
  131. package/dist/sonobiBidAdapter.js +1 -1
  132. package/dist/sovrnAnalyticsAdapter.js +1 -1
  133. package/dist/sovrnBidAdapter.js +1 -1
  134. package/dist/sspBCBidAdapter.js +1 -1
  135. package/dist/sublimeBidAdapter.js +1 -1
  136. package/dist/synacormediaBidAdapter.js +1 -1
  137. package/dist/tappxBidAdapter.js +1 -1
  138. package/dist/targetVideoBidAdapter.js +1 -1
  139. package/dist/teadsBidAdapter.js +1 -1
  140. package/dist/trionBidAdapter.js +1 -1
  141. package/dist/tripleliftBidAdapter.js +1 -1
  142. package/dist/trustpidSystem.js +1 -1
  143. package/dist/ttdBidAdapter.js +1 -1
  144. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  145. package/dist/underdogmediaBidAdapter.js +1 -1
  146. package/dist/undertoneBidAdapter.js +1 -1
  147. package/dist/userId.js +1 -1
  148. package/dist/vidazooBidAdapter.js +1 -1
  149. package/dist/videobyteBidAdapter.js +1 -1
  150. package/dist/viewability.js +1 -1
  151. package/dist/visxBidAdapter.js +1 -1
  152. package/dist/vuukleBidAdapter.js +1 -1
  153. package/dist/widespaceBidAdapter.js +1 -1
  154. package/dist/winrBidAdapter.js +1 -1
  155. package/dist/yahoosspBidAdapter.js +1 -1
  156. package/dist/yieldmoBidAdapter.js +1 -1
  157. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  158. package/dist/zeta_global_sspBidAdapter.js +1 -1
  159. package/integrationExamples/gpt/permutiveRtdProvider_example.html +1 -1
  160. package/karma.conf.maker.js +2 -13
  161. package/modules/.submodules.json +2 -0
  162. package/modules/acuityAdsBidAdapter.js +207 -0
  163. package/modules/acuityAdsBidAdapter.md +79 -0
  164. package/modules/adagioBidAdapter.js +2 -3
  165. package/modules/adgenerationBidAdapter.js +2 -2
  166. package/modules/adkernelBidAdapter.js +28 -12
  167. package/modules/admixerBidAdapter.js +1 -1
  168. package/modules/adnowBidAdapter.js +1 -1
  169. package/modules/adpod.js +1 -1
  170. package/modules/adrelevantisBidAdapter.js +2 -2
  171. package/modules/adriverBidAdapter.js +5 -12
  172. package/modules/adriverIdSystem.js +2 -1
  173. package/modules/adtargetBidAdapter.js +1 -1
  174. package/modules/adtelligentBidAdapter.js +6 -2
  175. package/modules/adtrgtmeBidAdapter.js +333 -0
  176. package/modules/adtrgtmeBidAdapter.md +69 -0
  177. package/modules/adtrueBidAdapter.js +1 -1
  178. package/modules/adxpremiumAnalyticsAdapter.js +1 -1
  179. package/modules/adyoulikeBidAdapter.js +1 -1
  180. package/modules/alkimiBidAdapter.js +2 -1
  181. package/modules/aniviewBidAdapter.js +1 -1
  182. package/modules/appnexusBidAdapter.js +13 -93
  183. package/modules/apstreamBidAdapter.js +2 -2
  184. package/modules/beopBidAdapter.js +4 -4
  185. package/modules/betweenBidAdapter.js +4 -4
  186. package/modules/bidwatchAnalyticsAdapter.js +112 -59
  187. package/modules/bizzclickBidAdapter.js +1 -1
  188. package/modules/brightMountainMediaBidAdapter.js +1 -1
  189. package/modules/browsiRtdProvider.js +24 -10
  190. package/modules/cleanmedianetBidAdapter.js +1 -1
  191. package/modules/consentManagement.js +1 -1
  192. package/modules/consentManagementUsp.js +1 -1
  193. package/modules/consumableBidAdapter.js +43 -3
  194. package/modules/cpmstarBidAdapter.js +23 -13
  195. package/modules/criteoBidAdapter.js +19 -13
  196. package/modules/currency.js +1 -0
  197. package/modules/cwireBidAdapter.js +1 -1
  198. package/modules/datablocksBidAdapter.js +1 -1
  199. package/modules/datawrkzBidAdapter.js +633 -0
  200. package/modules/datawrkzBidAdapter.md +160 -0
  201. package/modules/dfpAdServerVideo.js +2 -2
  202. package/modules/dgkeywordRtdProvider.js +10 -1
  203. package/modules/displayioBidAdapter.js +92 -97
  204. package/modules/dspxBidAdapter.js +1 -1
  205. package/modules/e_volutionBidAdapter.js +3 -3
  206. package/modules/ebdrBidAdapter.js +1 -1
  207. package/modules/emx_digitalBidAdapter.js +1 -1
  208. package/modules/enrichmentFpdModule.js +11 -0
  209. package/modules/fabrickIdSystem.js +2 -2
  210. package/modules/gamoshiBidAdapter.js +1 -1
  211. package/modules/getintentBidAdapter.js +1 -1
  212. package/modules/gjirafaBidAdapter.js +2 -2
  213. package/modules/goldbachBidAdapter.js +8 -8
  214. package/modules/gothamadsBidAdapter.js +2 -2
  215. package/modules/gumgumBidAdapter.js +3 -3
  216. package/modules/h12mediaBidAdapter.js +1 -1
  217. package/modules/id5AnalyticsAdapter.js +1 -1
  218. package/modules/id5IdSystem.js +160 -111
  219. package/modules/id5IdSystem.md +16 -14
  220. package/modules/imRtdProvider.js +20 -7
  221. package/modules/imRtdProvider.md +3 -1
  222. package/modules/impactifyBidAdapter.js +1 -1
  223. package/modules/improvedigitalBidAdapter.js +50 -28
  224. package/modules/inskinBidAdapter.js +1 -1
  225. package/modules/insticatorBidAdapter.js +1 -1
  226. package/modules/integr8BidAdapter.js +2 -2
  227. package/modules/intentIqIdSystem.js +2 -2
  228. package/modules/interactiveOffersBidAdapter.js +1 -1
  229. package/modules/iqmBidAdapter.js +1 -1
  230. package/modules/ixBidAdapter.js +21 -328
  231. package/modules/ixBidAdapter.md +1 -19
  232. package/modules/kargoBidAdapter.js +4 -5
  233. package/modules/krushmediaBidAdapter.js +2 -2
  234. package/modules/lassoBidAdapter.js +3 -3
  235. package/modules/lifestreetBidAdapter.js +143 -0
  236. package/modules/limelightDigitalBidAdapter.js +2 -1
  237. package/modules/livewrappedAnalyticsAdapter.js +3 -3
  238. package/modules/lkqdBidAdapter.js +3 -3
  239. package/modules/loganBidAdapter.js +2 -2
  240. package/modules/luponmediaBidAdapter.js +3 -3
  241. package/modules/mabidderBidAdapter.js +60 -0
  242. package/modules/mabidderBidAdapter.md +31 -0
  243. package/modules/malltvBidAdapter.js +2 -2
  244. package/modules/mediagoBidAdapter.js +462 -0
  245. package/modules/mediagoBidAdapter.md +34 -0
  246. package/modules/mediakeysBidAdapter.js +2 -2
  247. package/modules/mgidBidAdapter.js +2 -2
  248. package/modules/nextMillenniumBidAdapter.js +25 -6
  249. package/modules/nobidBidAdapter.js +2 -2
  250. package/modules/novatiqIdSystem.js +1 -1
  251. package/modules/oneKeyIdSystem.js +78 -0
  252. package/modules/oneKeyIdSystem.md +109 -0
  253. package/modules/oneKeyRtdProvider.js +98 -0
  254. package/modules/oneKeyRtdProvider.md +127 -0
  255. package/modules/open8BidAdapter.js +1 -1
  256. package/modules/openwebBidAdapter.js +1 -1
  257. package/modules/openxAnalyticsAdapter.js +5 -744
  258. package/modules/openxAnalyticsAdapter.md +4 -0
  259. package/modules/openxBidAdapter.js +3 -3
  260. package/modules/permutiveRtdProvider.js +55 -8
  261. package/modules/pixfutureBidAdapter.js +1 -1
  262. package/modules/prebidmanagerAnalyticsAdapter.js +1 -1
  263. package/modules/priceFloors.js +1 -1
  264. package/modules/pubmaticAnalyticsAdapter.js +1 -1
  265. package/modules/pubmaticBidAdapter.js +19 -1
  266. package/modules/pubwiseAnalyticsAdapter.js +1 -1
  267. package/modules/pubwiseBidAdapter.js +3 -3
  268. package/modules/pubxBidAdapter.js +1 -1
  269. package/modules/pubxaiAnalyticsAdapter.js +2 -2
  270. package/modules/quantcastIdSystem.js +1 -1
  271. package/modules/radsBidAdapter.js +1 -1
  272. package/modules/rasBidAdapter.js +8 -0
  273. package/modules/rasBidAdapter.md +14 -13
  274. package/modules/revcontentBidAdapter.js +1 -1
  275. package/modules/richaudienceBidAdapter.js +1 -1
  276. package/modules/rtbhouseBidAdapter.js +25 -1
  277. package/modules/schain.js +1 -1
  278. package/modules/seedtagBidAdapter.md +25 -56
  279. package/modules/showheroes-bsBidAdapter.js +1 -1
  280. package/modules/sizeMappingV2.js +1 -1
  281. package/modules/smaatoBidAdapter.js +2 -2
  282. package/modules/sonobiAnalyticsAdapter.js +1 -1
  283. package/modules/sonobiBidAdapter.js +4 -3
  284. package/modules/staqAnalyticsAdapter.js +1 -1
  285. package/modules/tappxBidAdapter.js +11 -2
  286. package/modules/targetVideoBidAdapter.js +1 -1
  287. package/modules/theAdxBidAdapter.js +2 -2
  288. package/modules/tpmnBidAdapter.js +1 -1
  289. package/modules/trionBidAdapter.js +2 -2
  290. package/modules/tripleliftBidAdapter.js +20 -1
  291. package/modules/trustpidSystem.js +6 -42
  292. package/modules/trustpidSystem.md +10 -10
  293. package/modules/underdogmediaBidAdapter.js +1 -1
  294. package/modules/userId/eids.js +26 -0
  295. package/modules/userId/userId.md +2 -2
  296. package/modules/vdoaiBidAdapter.js +1 -1
  297. package/modules/vidazooBidAdapter.js +7 -5
  298. package/modules/vidoomyBidAdapter.js +1 -1
  299. package/modules/viewability.js +14 -14
  300. package/modules/winrBidAdapter.js +1 -1
  301. package/modules/yahoosspBidAdapter.js +3 -3
  302. package/modules/yandexBidAdapter.js +1 -1
  303. package/modules/yieldmoBidAdapter.js +3 -3
  304. package/modules/yieldoneBidAdapter.js +2 -2
  305. package/modules/zeta_global_sspBidAdapter.js +24 -21
  306. package/package.json +3 -3
  307. package/src/Renderer.js +1 -1
  308. package/src/adloader.js +2 -1
  309. package/src/adserver.js +0 -56
  310. package/src/auction.js +60 -16
  311. package/src/bidfactory.js +1 -1
  312. package/src/native.js +75 -60
  313. package/src/refererDetection.js +12 -1
  314. package/src/sizeMapping.js +5 -7
  315. package/src/targeting.js +1 -1
  316. package/src/userSync.js +1 -1
  317. package/src/utils/promise.js +3 -1
  318. package/src/utils.js +27 -0
  319. package/src/video.js +5 -4
  320. package/src/videoCache.js +8 -2
  321. package/test/pages/instream.html +2 -2
  322. package/test/spec/modules/acuityAdsBidAdapter_spec.js +398 -0
  323. package/test/spec/modules/adagioBidAdapter_spec.js +2 -0
  324. package/test/spec/modules/adkernelBidAdapter_spec.js +11 -2
  325. package/test/spec/modules/adriverBidAdapter_spec.js +6 -13
  326. package/test/spec/modules/adriverIdSystem_spec.js +3 -8
  327. package/test/spec/modules/adtelligentBidAdapter_spec.js +2 -0
  328. package/test/spec/modules/adtrgtmeBidAdapter_spec.js +802 -0
  329. package/test/spec/modules/alkimiBidAdapter_spec.js +2 -1
  330. package/test/spec/modules/appnexusBidAdapter_spec.js +1 -0
  331. package/test/spec/modules/beopBidAdapter_spec.js +11 -0
  332. package/test/spec/modules/betweenBidAdapter_spec.js +17 -0
  333. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +28 -12
  334. package/test/spec/modules/big-richmediaBidAdapter_spec.js +1 -0
  335. package/test/spec/modules/browsiRtdProvider_spec.js +40 -1
  336. package/test/spec/modules/consumableBidAdapter_spec.js +158 -0
  337. package/test/spec/modules/cpmstarBidAdapter_spec.js +1 -1
  338. package/test/spec/modules/criteoBidAdapter_spec.js +35 -26
  339. package/test/spec/modules/currency_spec.js +22 -0
  340. package/test/spec/modules/datawrkzBidAdapter_spec.js +656 -0
  341. package/test/spec/modules/dgkeywordRtdProvider_spec.js +1 -1
  342. package/test/spec/modules/displayioBidAdapter_spec.js +16 -52
  343. package/test/spec/modules/enrichmentFpdModule_spec.js +16 -1
  344. package/test/spec/modules/fpdModule_spec.js +2 -1
  345. package/test/spec/modules/id5IdSystem_spec.js +529 -172
  346. package/test/spec/modules/imRtdProvider_spec.js +10 -5
  347. package/test/spec/modules/improvedigitalBidAdapter_spec.js +9 -13
  348. package/test/spec/modules/ixBidAdapter_spec.js +216 -123
  349. package/test/spec/modules/kargoBidAdapter_spec.js +11 -2
  350. package/test/spec/modules/lifestreetBidAdapter_spec.js +232 -0
  351. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +59 -7
  352. package/test/spec/modules/mabidderBidAdapter_spec.js +125 -0
  353. package/test/spec/modules/mediagoBidAdapter_spec.js +97 -0
  354. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +2 -7
  355. package/test/spec/modules/oneKeyIdSystem_spec.js +107 -0
  356. package/test/spec/modules/oneKeyRtdProvider_spec.js +152 -0
  357. package/test/spec/modules/openxAnalyticsAdapter_spec.js +6 -638
  358. package/test/spec/modules/permutiveRtdProvider_spec.js +152 -2
  359. package/test/spec/modules/pubmaticBidAdapter_spec.js +69 -4
  360. package/test/spec/modules/rasBidAdapter_spec.js +2 -0
  361. package/test/spec/modules/tripleliftBidAdapter_spec.js +18 -0
  362. package/test/spec/modules/trustpidSystem_spec.js +27 -45
  363. package/test/spec/modules/vidazooBidAdapter_spec.js +36 -23
  364. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +59 -0
  365. package/test/spec/native_spec.js +257 -2
  366. package/test/spec/videoCache_spec.js +37 -7
@@ -0,0 +1,462 @@
1
+ /**
2
+ * gulp serve --modules=mediagoBidAdapter,pubCommonId --nolint --notest
3
+ */
4
+
5
+ import * as utils from '../src/utils.js';
6
+ import { getStorageManager } from '../src/storageManager.js';
7
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
8
+ // import { config } from '../src/config.js';
9
+ // import { isPubcidEnabled } from './pubCommonId.js';
10
+
11
+ const BIDDER_CODE = 'mediago';
12
+ // const PROTOCOL = window.document.location.protocol;
13
+ const ENDPOINT_URL =
14
+ // ((PROTOCOL === 'https:') ? 'https' : 'http') +
15
+ 'https://rtb-us.mediago.io/api/bid?tn=';
16
+ const TIME_TO_LIVE = 500;
17
+ // const ENDPOINT_URL = '/api/bid?tn=';
18
+ const storage = getStorageManager();
19
+ let globals = {};
20
+ let itemMaps = {};
21
+
22
+ /**
23
+ * 获取随机id
24
+ * @param {number} a random number from 0 to 15
25
+ * @return {string} random number or random string
26
+ */
27
+ // function getRandomId(
28
+ // a // placeholder
29
+ // ) {
30
+ // // if the placeholder was passed, return
31
+ // // a random number from 0 to 15
32
+ // return a
33
+ // ? (
34
+ // a ^ // unless b is 8,
35
+ // ((Math.random() * // in which case
36
+ // 16) >> // a random number from
37
+ // (a / 4))
38
+ // ) // 8 to 11
39
+ // .toString(16) // in hexadecimal
40
+ // : ( // or otherwise a concatenated string:
41
+ // [1e7] + // 10000000 +
42
+ // 1e3 + // -1000 +
43
+ // 4e3 + // -4000 +
44
+ // 8e3 + // -80000000 +
45
+ // 1e11
46
+ // ) // -100000000000,
47
+ // .replace(
48
+ // // replacing
49
+ // /[018]/g, // zeroes, ones, and eights with
50
+ // getRandomId // random hex digits
51
+ // );
52
+ // }
53
+
54
+ /* ----- mguid:start ------ */
55
+ const COOKIE_KEY_MGUID = '__mguid_';
56
+
57
+ /**
58
+ * 获取用户id
59
+ * @return {string}
60
+ */
61
+ const getUserID = () => {
62
+ const i = storage.getCookie(COOKIE_KEY_MGUID);
63
+
64
+ if (i === null) {
65
+ const uuid = utils.generateUUID();
66
+ storage.setCookie(COOKIE_KEY_MGUID, uuid);
67
+ return uuid;
68
+ }
69
+ return i;
70
+ };
71
+
72
+ /* ----- mguid:end ------ */
73
+
74
+ /**
75
+ * 获取一个对象的某个值,如果没有则返回空字符串
76
+ * @param {Object} obj 对象
77
+ * @param {...string} keys 键名
78
+ * @return {any}
79
+ */
80
+ function getProperty(obj, ...keys) {
81
+ let o = obj;
82
+
83
+ for (let key of keys) {
84
+ // console.log(key, o);
85
+ if (o && o[key]) {
86
+ o = o[key];
87
+ } else {
88
+ return '';
89
+ }
90
+ }
91
+ return o;
92
+ }
93
+
94
+ /**
95
+ * 是不是移动设备或者平板
96
+ * @return {boolean}
97
+ */
98
+ function isMobileAndTablet() {
99
+ let check = false;
100
+ (function (a) {
101
+ let reg1 = new RegExp(
102
+ [
103
+ '(android|bbd+|meego)',
104
+ '.+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)',
105
+ '|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone',
106
+ '|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap',
107
+ '|windows ce|xda|xiino|android|ipad|playbook|silk',
108
+ ].join(''),
109
+ 'i'
110
+ );
111
+ let reg2 = new RegExp(
112
+ [
113
+ '1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)',
114
+ '|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )',
115
+ '|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell',
116
+ '|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)',
117
+ '|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene',
118
+ '|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c',
119
+ '|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|/)|ibro|idea|ig01|ikom',
120
+ '|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)|klon|kpt |kwc-|kyo(c|k)',
121
+ '|le(no|xi)|lg( g|/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50/|ma(te|ui|xo)|mc(01|21|ca)',
122
+ '|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]',
123
+ '|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)',
124
+ '|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio',
125
+ '|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|mm|ms',
126
+ '|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al',
127
+ '|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)',
128
+ '|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|',
129
+ 'v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)',
130
+ '|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-',
131
+ '|your|zeto|zte-',
132
+ ].join(''),
133
+ 'i'
134
+ );
135
+ if (reg1.test(a) || reg2.test(a.substr(0, 4))) {
136
+ check = true;
137
+ }
138
+ })(navigator.userAgent || navigator.vendor || window.opera);
139
+ return check;
140
+ }
141
+
142
+ /**
143
+ * 获取底价
144
+ * @param {*} bid
145
+ * @param {*} mediaType
146
+ * @param {*} sizes
147
+ * @returns
148
+ */
149
+ // function getBidFloor(bid, mediaType, sizes) {
150
+ // var floor;
151
+ // var size = sizes.length === 1 ? sizes[0] : "*";
152
+ // if (typeof bid.getFloor === "function") {
153
+ // const floorInfo = bid.getFloor({ currency: "USD", mediaType, size });
154
+ // if (
155
+ // typeof floorInfo === "object" &&
156
+ // floorInfo.currency === "USD" &&
157
+ // !isNaN(parseFloat(floorInfo.floor))
158
+ // ) {
159
+ // floor = parseFloat(floorInfo.floor);
160
+ // }
161
+ // }
162
+ // return floor;
163
+ // }
164
+ function getBidFloor(bid) {
165
+ if (!utils.isFn(bid.getFloor)) {
166
+ return utils.deepAccess(bid, 'params.bidfloor', 0);
167
+ }
168
+
169
+ try {
170
+ const bidFloor = bid.getFloor({
171
+ currency: 'USD',
172
+ mediaType: '*',
173
+ size: '*',
174
+ });
175
+ return bidFloor.floor;
176
+ } catch (_) {
177
+ return 0;
178
+ }
179
+ }
180
+
181
+ /**
182
+ * 将尺寸转为RTB识别的尺寸
183
+ *
184
+ * @param {Array|Object} requestSizes 配置尺寸
185
+ * @return {Object}
186
+ */
187
+ function transformSizes(requestSizes) {
188
+ let sizes = [];
189
+ let sizeObj = {};
190
+
191
+ if (
192
+ utils.isArray(requestSizes) &&
193
+ requestSizes.length === 2 &&
194
+ !utils.isArray(requestSizes[0])
195
+ ) {
196
+ sizeObj.width = parseInt(requestSizes[0], 10);
197
+ sizeObj.height = parseInt(requestSizes[1], 10);
198
+ sizes.push(sizeObj);
199
+ } else if (typeof requestSizes === 'object') {
200
+ for (let i = 0; i < requestSizes.length; i++) {
201
+ let size = requestSizes[i];
202
+ sizeObj = {};
203
+ sizeObj.width = parseInt(size[0], 10);
204
+ sizeObj.height = parseInt(size[1], 10);
205
+ sizes.push(sizeObj);
206
+ }
207
+ }
208
+
209
+ return sizes;
210
+ }
211
+
212
+ // 支持的广告尺寸
213
+ const mediagoAdSize = [
214
+ { w: 300, h: 250 },
215
+ { w: 300, h: 600 },
216
+ { w: 728, h: 90 },
217
+ { w: 970, h: 250 },
218
+ { w: 320, h: 50 },
219
+ { w: 160, h: 600 },
220
+ { w: 320, h: 180 },
221
+ { w: 320, h: 100 },
222
+ { w: 336, h: 280 },
223
+ ];
224
+
225
+ /**
226
+ * 获取广告位配置
227
+ * @param {Array} validBidRequests an an array of bids
228
+ * @param {Object} bidderRequest The master bidRequest object
229
+ * @return {Object}
230
+ */
231
+ function getItems(validBidRequests, bidderRequest) {
232
+ let items = [];
233
+ items = validBidRequests.map((req, i) => {
234
+ let ret = {};
235
+ let mediaTypes = getProperty(req, 'mediaTypes');
236
+
237
+ let sizes = transformSizes(getProperty(req, 'sizes'));
238
+ let matchSize;
239
+
240
+ // 确认尺寸是否符合我们要求
241
+ for (let size of sizes) {
242
+ matchSize = mediagoAdSize.find(
243
+ (item) => size.width === item.w && size.height === item.h
244
+ );
245
+ if (matchSize) {
246
+ break;
247
+ }
248
+ }
249
+ if (!matchSize) {
250
+ return {};
251
+ }
252
+
253
+ const bidFloor = getBidFloor(req);
254
+ // const gpid =
255
+ // utils.deepAccess(req, 'ortb2Imp.ext.gpid') ||
256
+ // utils.deepAccess(req, 'ortb2Imp.ext.data.pbadslot') ||
257
+ // utils.deepAccess(req, 'params.placementId', 0);
258
+ // console.log("wjh getItems:", req, bidFloor, gpid);
259
+
260
+ // if (mediaTypes.native) {}
261
+ // banner广告类型
262
+ if (mediaTypes.banner) {
263
+ let id = '' + (i + 1);
264
+ ret = {
265
+ id: id,
266
+ bidfloor: bidFloor,
267
+ banner: {
268
+ h: matchSize.h,
269
+ w: matchSize.w,
270
+ pos: 1,
271
+ },
272
+ ext: {
273
+ // gpid: gpid, // 加入后无法返回广告
274
+ },
275
+ };
276
+ itemMaps[id] = {
277
+ req,
278
+ ret,
279
+ };
280
+ }
281
+
282
+ return ret;
283
+ });
284
+ return items;
285
+ }
286
+
287
+ /**
288
+ * 获取rtb请求参数
289
+ *
290
+ * @param {Array} validBidRequests an an array of bids
291
+ * @param {Object} bidderRequest The master bidRequest object
292
+ * @return {Object}
293
+ */
294
+ function getParam(validBidRequests, bidderRequest) {
295
+ const pubcid = utils.deepAccess(validBidRequests[0], 'crumbs.pubcid');
296
+ // console.log('wjh getParam', validBidRequests, bidderRequest);
297
+ let isMobile = isMobileAndTablet() ? 1 : 0;
298
+ let isTest = 0;
299
+ let auctionId = getProperty(bidderRequest, 'auctionId');
300
+ let items = getItems(validBidRequests, bidderRequest);
301
+
302
+ const domain = document.domain;
303
+ const location = utils.deepAccess(bidderRequest, 'refererInfo.referer');
304
+
305
+ const timeout = bidderRequest.timeout || 2000;
306
+
307
+ if (items && items.length) {
308
+ let c = {
309
+ id: 'mgprebidjs_' + auctionId,
310
+ test: +isTest,
311
+ at: 1,
312
+ cur: ['USD'],
313
+ device: {
314
+ connectiontype: 0,
315
+ // ip: '64.188.178.115',
316
+ js: 1,
317
+ // language: "en",
318
+ // os: "Microsoft Windows",
319
+ // ua: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19043",
320
+ os: navigator.platform || '',
321
+ ua: navigator.userAgent,
322
+ language: /en/.test(navigator.language) ? 'en' : navigator.language,
323
+ },
324
+ ext: {},
325
+ user: {
326
+ buyeruid: getUserID(),
327
+ id: pubcid,
328
+ },
329
+ site: {
330
+ name: domain,
331
+ domain: domain,
332
+ page: location,
333
+ ref: location,
334
+ mobile: isMobile,
335
+ cat: [], // todo
336
+ publisher: {
337
+ // todo
338
+ id: domain,
339
+ name: domain,
340
+ },
341
+ },
342
+ imp: items,
343
+ tmax: timeout,
344
+ };
345
+ return c;
346
+ } else {
347
+ return null;
348
+ }
349
+ }
350
+
351
+ export const spec = {
352
+ code: BIDDER_CODE,
353
+ // aliases: ['ex'], // short code
354
+ /**
355
+ * Determines whether or not the given bid request is valid.
356
+ *
357
+ * @param {BidRequest} bid The bid params to validate.
358
+ * @return boolean True if this is a valid bid, and false otherwise.
359
+ */
360
+ isBidRequestValid: function (bid) {
361
+ // console.log('mediago', {
362
+ // bid
363
+ // });
364
+ if (bid.params.token) {
365
+ globals['token'] = bid.params.token;
366
+ }
367
+ return !!bid.params.token;
368
+ },
369
+
370
+ /**
371
+ * Make a server request from the list of BidRequests.
372
+ *
373
+ * @param {Array} validBidRequests an an array of bids
374
+ * @param {Object} bidderRequest The master bidRequest object
375
+ * @return ServerRequest Info describing the request to the server.
376
+ */
377
+ buildRequests: function (validBidRequests, bidderRequest) {
378
+ let payload = getParam(validBidRequests, bidderRequest);
379
+
380
+ const payloadString = JSON.stringify(payload);
381
+ return {
382
+ method: 'POST',
383
+ url: ENDPOINT_URL + globals['token'],
384
+ data: payloadString,
385
+ };
386
+ },
387
+
388
+ /**
389
+ * Unpack the response from the server into a list of bids.
390
+ *
391
+ * @param {ServerResponse} serverResponse A successful response from the server.
392
+ * @return {Bid[]} An array of bids which were nested inside the server.
393
+ */
394
+ interpretResponse: function (serverResponse, bidRequest) {
395
+ const bids = getProperty(serverResponse, 'body', 'seatbid', 0, 'bid');
396
+ const cur = getProperty(serverResponse, 'body', 'cur');
397
+
398
+ const bidResponses = [];
399
+ for (let bid of bids) {
400
+ let impid = getProperty(bid, 'impid');
401
+ if (itemMaps[impid]) {
402
+ let bidId = getProperty(itemMaps[impid], 'req', 'bidId');
403
+ const bidResponse = {
404
+ requestId: bidId,
405
+ cpm: getProperty(bid, 'price'),
406
+ width: getProperty(bid, 'w'),
407
+ height: getProperty(bid, 'h'),
408
+ creativeId: getProperty(bid, 'crid'),
409
+ dealId: '',
410
+ currency: cur,
411
+ netRevenue: true,
412
+ ttl: TIME_TO_LIVE,
413
+ // referrer: REFERER,
414
+ ad: getProperty(bid, 'adm'),
415
+ nurl: getProperty(bid, 'nurl'),
416
+ // adserverTargeting: {
417
+ // granularityMultiplier: 0.1,
418
+ // priceGranularity: "pbHg",
419
+ // pbMg: "0.01",
420
+ // },
421
+ // pbMg: "0.01",
422
+ // granularityMultiplier: 0.1,
423
+ // priceGranularity: "pbHg",
424
+ };
425
+ bidResponses.push(bidResponse);
426
+ }
427
+ }
428
+
429
+ return bidResponses;
430
+ },
431
+
432
+ /**
433
+ * Register bidder specific code, which will execute if bidder timed out after an auction
434
+ * @param {data} Containing timeout specific data
435
+ */
436
+ // onTimeout: function (data) {
437
+ // // console.log('onTimeout', data);
438
+ // // Bidder specifc code
439
+ // },
440
+
441
+ /**
442
+ * Register bidder specific code, which will execute if a bid from this bidder won the auction
443
+ * @param {Bid} The bid that won the auction
444
+ */
445
+ onBidWon: function (bid) {
446
+ // console.log('onBidWon: ', bid, config.getConfig('priceGranularity'));
447
+ // Bidder specific code
448
+ if (bid['nurl']) {
449
+ utils.triggerPixel(bid['nurl']);
450
+ }
451
+ },
452
+
453
+ /**
454
+ * Register bidder specific code, which will execute when the adserver targeting has been set for a bid from this bidder
455
+ * @param {Bid} The bid of which the targeting has been set
456
+ */
457
+ // onSetTargeting: function (bid) {
458
+ // // console.log('onSetTargeting', bid);
459
+ // // Bidder specific code
460
+ // },
461
+ };
462
+ registerBidder(spec);
@@ -0,0 +1,34 @@
1
+ # Overview
2
+
3
+ ```
4
+ Module Name: MediaGo Bidder Adapter
5
+ Module Type: Bidder Adapter
6
+ Maintainer: fangsimin@baidu.com
7
+ ```
8
+
9
+ # Description
10
+
11
+ Module that connects to MediaGo's demand sources
12
+
13
+ # Test Parameters
14
+
15
+ ```
16
+ var adUnits = [
17
+ {
18
+ code: 'test-div',
19
+ mediaTypes: {
20
+ banner: {
21
+ sizes: [[300, 250]],
22
+ }
23
+ },
24
+ bids: [
25
+ {
26
+ bidder: "mediago",
27
+ params: {
28
+ token: '' // required, send email to ext_mediago_am@baidu.com to get the corresponding token
29
+ }
30
+ }
31
+ ]
32
+ }
33
+ ];
34
+ ```
@@ -420,7 +420,7 @@ function createVideoImp(bid) {
420
420
  }
421
421
  });
422
422
 
423
- return video
423
+ return video;
424
424
  }
425
425
 
426
426
  /**
@@ -703,7 +703,7 @@ export const spec = {
703
703
  agencyName: deepAccess(bid, 'ext.agency_name', null),
704
704
  primaryCatId: getPrimaryCatFromResponse(bid.cat),
705
705
  mediaType
706
- }
706
+ };
707
707
 
708
708
  const newBid = {
709
709
  requestId: bid.impid,
@@ -88,7 +88,7 @@ export const spec = {
88
88
  let v = nativeParams[k];
89
89
  const supportProp = spec.NATIVE_ASSET_KEY_TO_ASSET_MAP.hasOwnProperty(k);
90
90
  if (supportProp) {
91
- assetsCount++
91
+ assetsCount++;
92
92
  }
93
93
  if (!isPlainObject(v) || (!supportProp && deepAccess(v, 'required'))) {
94
94
  nativeOk = false;
@@ -152,7 +152,7 @@ export const spec = {
152
152
  impObj.bidfloor = floorData.floor;
153
153
  }
154
154
  if (floorData.cur) {
155
- impObj.bidfloorcur = floorData.cur
155
+ impObj.bidfloorcur = floorData.cur;
156
156
  }
157
157
  for (let mediaTypes in bid.mediaTypes) {
158
158
  switch (mediaTypes) {
@@ -26,11 +26,12 @@ export const spec = {
26
26
  _each(validBidRequests, function(bid) {
27
27
  window.nmmRefreshCounts[bid.adUnitCode] = window.nmmRefreshCounts[bid.adUnitCode] || 0;
28
28
  const id = getPlacementId(bid)
29
+ let sizes = bid.sizes
30
+ if (sizes && !Array.isArray(sizes[0])) sizes = [sizes]
31
+
32
+ const site = getSiteObj()
33
+ const device = getDeviceObj()
29
34
 
30
- if (bid.sizes && !Array.isArray(bid.sizes[0])) bid.sizes = [bid.sizes]
31
- if (!bid.ortb2) bid.ortb2 = {}
32
- if (!bid.ortb2.device) bid.ortb2.device = {}
33
- bid.ortb2.device.referrer = (getRefererInfo && getRefererInfo().ref) || ''
34
35
  const postBody = {
35
36
  'id': bid.auctionId,
36
37
  'ext': {
@@ -46,10 +47,11 @@ export const spec = {
46
47
  'scrollTop': window.pageYOffset || document.documentElement.scrollTop
47
48
  }
48
49
  },
49
- ...bid.ortb2,
50
+ device,
51
+ site,
50
52
  'imp': [{
51
53
  'banner': {
52
- 'format': (bid.sizes || []).map(s => { return {w: s[0], h: s[1]} })
54
+ 'format': (sizes || []).map(s => { return {w: s[0], h: s[1]} })
53
55
  },
54
56
  'ext': {
55
57
  'prebid': {
@@ -198,4 +200,21 @@ function getTopWindow(curWindow, nesting = 0) {
198
200
  }
199
201
  }
200
202
 
203
+ function getSiteObj() {
204
+ const refInfo = (getRefererInfo && getRefererInfo()) || {}
205
+
206
+ return {
207
+ page: refInfo.page,
208
+ ref: refInfo.ref,
209
+ domain: refInfo.domain
210
+ }
211
+ }
212
+
213
+ function getDeviceObj() {
214
+ return {
215
+ w: window.innerWidth || window.document.documentElement.clientWidth || window.document.body.clientWidth || 0,
216
+ h: window.innerHeight || window.document.documentElement.clientHeight || window.document.body.clientHeight || 0,
217
+ }
218
+ }
219
+
201
220
  registerBidder(spec);
@@ -147,7 +147,7 @@ function nobidBuildRequests(bids, bidderRequest) {
147
147
  if (eids && eids.length > 0) state['eids'] = eids;
148
148
  if (bidderRequest && bidderRequest.ortb2) state['ortb2'] = bidderRequest.ortb2;
149
149
  return state;
150
- }
150
+ };
151
151
  function newAdunit(adunitObject, adunits) {
152
152
  var getAdUnit = function(divid, adunits) {
153
153
  for (var i = 0; i < adunits.length; i++) {
@@ -438,7 +438,7 @@ export const spec = {
438
438
  type: 'image',
439
439
  url: element
440
440
  });
441
- })
441
+ });
442
442
  }
443
443
  return syncs;
444
444
  } else {
@@ -245,7 +245,7 @@ export const novatiqIdSubmodule = {
245
245
  } else {
246
246
  srcId = configParams.sourceid;
247
247
  }
248
- return srcId
248
+ return srcId;
249
249
  }
250
250
  };
251
251
  submodule('userId', novatiqIdSubmodule);
@@ -0,0 +1,78 @@
1
+ /**
2
+ * This module adds Onekey data to the User ID module
3
+ * The {@link module:modules/userId} module is required
4
+ * @module modules/oneKeyIdSystem
5
+ * @requires module:modules/userId
6
+ */
7
+
8
+ import {submodule} from '../src/hook.js';
9
+ import { logError, logMessage } from '../src/utils.js';
10
+
11
+ // Pre-init OneKey if it has not load yet.
12
+ window.OneKey = window.OneKey || {};
13
+ window.OneKey.queue = window.OneKey.queue || [];
14
+
15
+ const logPrefix = 'OneKey.Id-Module';
16
+
17
+ /**
18
+ * Generate callback that deserializes the result of getIdsAndPreferences.
19
+ */
20
+ const onIdsAndPreferencesResult = (callback) => {
21
+ return (result) => {
22
+ logMessage(logPrefix, `Has got Ids and Prefs with status: `, result);
23
+ callback(result.data);
24
+ };
25
+ };
26
+
27
+ /**
28
+ * Call OneKey once it is loaded for retrieving
29
+ * the ids and the preferences.
30
+ */
31
+ const getIdsAndPreferences = (callback) => {
32
+ logMessage(logPrefix, 'Queue getIdsAndPreferences call');
33
+ // Call OneKey in a queue so that we are sure
34
+ // it will be called when fully load and configured
35
+ // within the page.
36
+ window.OneKey.queue.push(() => {
37
+ logMessage(logPrefix, 'Get Ids and Prefs');
38
+ window.OneKey.getIdsAndPreferences()
39
+ .then(onIdsAndPreferencesResult(callback))
40
+ .catch(() => {
41
+ logError(logPrefix, 'Cannot retrieve the ids and preferences from OneKey.');
42
+ callback(undefined);
43
+ });
44
+ });
45
+ };
46
+
47
+ /** @type {Submodule} */
48
+ export const oneKeyIdSubmodule = {
49
+ /**
50
+ * used to link submodule with config
51
+ * @type {string}
52
+ */
53
+ name: 'oneKeyData',
54
+ /**
55
+ * decode the stored data value for passing to bid requests
56
+ * @function decode
57
+ * @param {(Object|string)} value
58
+ * @returns {(Object|undefined)}
59
+ */
60
+ decode(data) {
61
+ return { oneKeyData: data };
62
+ },
63
+ /**
64
+ * performs action to obtain id and return a value in the callback's response argument
65
+ * @function
66
+ * @param {SubmoduleConfig} [config]
67
+ * @param {ConsentData} [consentData]
68
+ * @param {(Object|undefined)} cacheIdObj
69
+ * @returns {IdResponse|undefined}
70
+ */
71
+ getId(config) {
72
+ return {
73
+ callback: getIdsAndPreferences
74
+ };
75
+ }
76
+ };
77
+
78
+ submodule('userId', oneKeyIdSubmodule);