UNPKG

mk9-prebid

Version:

Header Bidding Management Library

91 lines (79 loc) 2.56 kB
import { deepAccess } from './utils.js'; let adUnits = {}; function ensureAdUnit(adunit, bidderCode) { let adUnit = adUnits[adunit] = adUnits[adunit] || { bidders: {} }; if (bidderCode) { return adUnit.bidders[bidderCode] = adUnit.bidders[bidderCode] || {} } return adUnit; } function incrementAdUnitCount(adunit, counter, bidderCode) { let adUnit = ensureAdUnit(adunit, bidderCode); adUnit[counter] = (adUnit[counter] || 0) + 1; return adUnit[counter]; } /** * Increments and returns current Adunit counter * @param {string} adunit id * @returns {number} current adunit count */ function incrementRequestsCounter(adunit) { return incrementAdUnitCount(adunit, 'requestsCounter'); } /** * Increments and returns current Adunit requests counter for a bidder * @param {string} adunit id * @param {string} bidderCode code * @returns {number} current adunit bidder requests count */ function incrementBidderRequestsCounter(adunit, bidderCode) { return incrementAdUnitCount(adunit, 'requestsCounter', bidderCode); } /** * Increments and returns current Adunit wins counter for a bidder * @param {string} adunit id * @param {string} bidderCode code * @returns {number} current adunit bidder requests count */ function incrementBidderWinsCounter(adunit, bidderCode) { return incrementAdUnitCount(adunit, 'winsCounter', bidderCode); } /** * Returns current Adunit counter * @param {string} adunit id * @returns {number} current adunit count */ function getRequestsCounter(adunit) { return deepAccess(adUnits, `${adunit}.requestsCounter`) || 0; } /** * Returns current Adunit requests counter for a specific bidder code * @param {string} adunit id * @param {string} bidder code * @returns {number} current adunit bidder requests count */ function getBidderRequestsCounter(adunit, bidder) { return deepAccess(adUnits, `${adunit}.bidders.${bidder}.requestsCounter`) || 0; } /** * Returns current Adunit requests counter for a specific bidder code * @param {string} adunit id * @param {string} bidder code * @returns {number} current adunit bidder requests count */ function getBidderWinsCounter(adunit, bidder) { return deepAccess(adUnits, `${adunit}.bidders.${bidder}.winsCounter`) || 0; } /** * A module which counts how many times an adunit was called * @module adunitCounter */ let adunitCounter = { incrementRequestsCounter, incrementBidderRequestsCounter, incrementBidderWinsCounter, getRequestsCounter, getBidderRequestsCounter, getBidderWinsCounter } export { adunitCounter };