UNPKG

aol-hb

Version:

Header bidding library for AOL's supply side platform.

1 lines 15.9 kB
!function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),n(1);var i=n(2),o=r(i),s=n(3),a=r(s),u=window.aolhb=window.aolhb||{};u.queue=u.queue||[],u.pixelsDropped=!1,u.init=function(e,t){var n=new o.default(e,t);n.sendBidRequests(),u.renderAd=function(e){var t=n.getBidResponseByAlias(e);if(t){new a.default(t,document).renderAd()}},u.getBidResponse=function(e){return n.getBidResponseByAlias(e)},u.refreshAd=function(e){n.refreshAd(e)},u.addNewAd=function(e){n.addNewAd(e)}},u.queue.push=function(e){if("function"==typeof e)try{e.call()}catch(e){console.warn("Error processing command","aol-hb.js",e)}else console.warn("Commands written into aolhb.que.push must be wrapped in a function","aol-hb.js")};for(var c=0;c<u.queue.length;c++)if(void 0===u.queue[c].called)try{u.queue[c].call(),u.queue[c].called=!0}catch(e){console.warn("Error processing command","aol-hb.js",e)}t.default=u},function(e,t){"use strict";Array.prototype.find||(Array.prototype.find=function(e){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var t,n=Object(this),r=n.length>>>0,i=arguments[1],o=0;o<r;o++)if(t=n[o],e.call(i,t,o,n))return t}),Number.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),s=n(3),a=r(s),u=n(4),c=r(u),l=n(8),f=r(l),d=n(9),p=r(d),h=function(){function e(t,n){i(this,e),this.bidRequestConfig=t,this.placementsConfigs=n||[],this.bidderKey=t.bidderKey||"aolbid",this.aliasKey=t.aliasKey||"mpalias",this.userSyncOn=t.userSyncOn||e.HEADER_BIDDING_EVENTS.bidResponse,this.bidResponses=[]}return o(e,[{key:"sendBidRequests",value:function(){var e=this;this.placementsConfigs.forEach(function(t){e.sendBidRequest(t,function(n){e.handleBidRequestResponse(t,n),e.checkBidResponsesState()})})}},{key:"refreshAd",value:function(e){var t=this.getPlacementConfigByAlias(e);t&&this.sendBidRequest(t)}},{key:"addNewAd",value:function(e){e&&(this.addNewPlacementConfig(e),this.sendBidRequest(e))}},{key:"sendBidRequest",value:function(e,t){var n=this,r=function(t){n.handleBidRequestResponse(e,t)};t=t||r;var i=this.resolveBidRequest(this.bidRequestConfig,e);i&&i.send(t)}},{key:"handleBidRequestResponse",value:function(e,t){var n=this.bidRequestConfig.onBidResponse,r=JSON.parse(t),i=this.createBidResponse(r,e);i&&(this.renderPixels(i),n&&n(i))}},{key:"checkBidResponsesState",value:function(){var e=this.placementsConfigs.length===this.bidResponses.length,t=this.bidRequestConfig.onAllBidResponses;e&&t&&t(this.bidResponses)}},{key:"getBidData",value:function(e){try{return e.seatbid[0].bid[0]}catch(e){return}}},{key:"getPixels",value:function(e){try{return e.ext.pixels}catch(e){return}}},{key:"getCPM",value:function(e){return e.ext&&e.ext.encp?e.ext.encp:e.price}},{key:"getBidResponseByAlias",value:function(e){return this.bidResponses.find(function(t){return t.alias===e})}},{key:"addNewBidResponse",value:function(e){if(e){var t=this.getBidResponseByAlias(e.alias);if(t){var n=this.bidResponses.indexOf(t);this.bidResponses[n]=e}else this.bidResponses.push(e)}}},{key:"createBidResponse",value:function(e,t){var n=this.formatBidResponse(e,t);if(n)return this.addNewBidResponse(n),n}},{key:"formatBidResponse",value:function(e,t){var n=this.getBidData(e);if(n)return{cpm:this.getCPM(n),ad:n.adm,pixels:this.getPixels(e),adContainerId:t.adContainerId,width:n.w,height:n.h,creativeId:n.crid,bidderCode:this.bidderKey,aliasKey:this.aliasKey,alias:t.alias}}},{key:"getPlacementConfigByAlias",value:function(e){return this.placementsConfigs.find(function(t){return t.alias===e})}},{key:"addNewPlacementConfig",value:function(e){this.placementsConfigs.push(e)}},{key:"isUserSyncOnBidResponseMode",value:function(){return this.userSyncOn===e.HEADER_BIDDING_EVENTS.bidResponse}},{key:"renderPixels",value:function(e){if(e.pixels&&this.isUserSyncOnBidResponseMode()){new a.default(e).renderPixels()}}},{key:"resolveBidRequest",value:function(e,t){return e.dcn&&t.pos?new f.default(e,t):e.network&&t.placement?new c.default(e,t):this.isNexagePostRequest(t.openRtbParams)?new p.default(e,t):void 0}},{key:"isNexagePostRequest",value:function(e){if(e&&e.id&&e.imp[0]){var t=e.imp[0];return this.isImpressionValid(t)}}},{key:"isImpressionValid",value:function(e){return e.id&&e.tagid&&(this.isBannerPresent(e)||this.isVideoPresent(e))}},{key:"isBannerPresent",value:function(e){return e.banner&&e.banner.w&&e.banner.h}},{key:"isVideoPresent",value:function(e){return e.video&&e.video.mimes&&e.video.minduration&&e.video.maxduration}}]),e}();h.HEADER_BIDDING_EVENTS={bidResponse:"bidResponse",adRender:"adRender"},t.default=h},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=function(){function e(t){n(this,e),this.bidResponse=t,this.document=document}return r(e,[{key:"renderAd",value:function(){var e=this.createAdFrame();e&&(this.renderPixels(),this.insertElementInAdContainer(e),this.populateIframeContent(e))}},{key:"createAdFrame",value:function(){var e=this.document.createElement("iframe");return e.id="aol-pub-frame-"+this.bidResponse.adContainerId,e.name=e.id,e.style.border="0px",e.scrolling="no",e.frameborder=0,e.width=this.bidResponse.width,e.height=this.bidResponse.height,e.allowtransparency=!0,e.setAttribute("allowFullScreen","true"),e.setAttribute("mozallowFullScreen","true"),e.setAttribute("webkitAllowFullScreen","true"),e}},{key:"insertElementInAdContainer",value:function(e){var t=this.document.getElementById(this.bidResponse.adContainerId);t&&t.appendChild(e)}},{key:"prepareAdForIframe",value:function(e){if(e)return"<head></head><body><style></style>"+e+"</body>"}},{key:"populateIframeContent",value:function(e){var t=this.prepareAdForIframe(this.bidResponse.ad);t&&(e.contentWindow.document.open(),e.contentWindow.document.write(t),e.contentWindow.document.close())}},{key:"renderPixels",value:function(){if(this.bidResponse.pixels&&!aolhb.pixelsDropped){var e=this.parsePixelsItems(this.bidResponse.pixels);this.renderPixelsItems(e),aolhb.pixelsDropped=!0}}},{key:"parsePixelsItems",value:function(e){var t=[],n=e.match(/(img|iframe)[\s\S]*?src\s*=\s*("([^"]*)"|'([^']*)')/gi);return n&&n.forEach(function(e){var n=e.match(/\w*(?=\s)/),r=e.match(/src\s*=\s*("|')([^\1]+)\1/i);n&&r&&t.push({tagName:n[0].toUpperCase(),src:r[2]})}),t}},{key:"renderPixelsItems",value:function(t){var n=this;t.forEach(function(t){switch(t.tagName){case e.PIXELS_ITEMS.img:n.renderPixelsImage(t);break;case e.PIXELS_ITEMS.iframe:n.renderPixelsIframe(t)}})}},{key:"renderPixelsImage",value:function(e){(new Image).src=e.src}},{key:"renderPixelsIframe",value:function(e){var t=this.document.createElement("iframe");t.width=1,t.height=1,t.style="display: none",t.src=e.src,this.document.body.appendChild(t)}}]),e}();i.PIXELS_ITEMS={iframe:"IFRAME",img:"IMG"},t.default=i},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=function(e,t){return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["","://","/pubapi/3.0/","/\n ","/0/-1/ADTECH;cmd=bid;cors=yes;\n v=2;alias=",";",""],["","://","/pubapi/3.0/","/\n ","/0/-1/ADTECH;cmd=bid;cors=yes;\n v=2;alias=",";",""]),c=n(5),l=r(c),f=n(6),d=r(f),p=function(e){function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return s(t,e),a(t,[{key:"formatUrl",value:function(){return l.default.formatTemplateString(u,"protocol","hostName","network","placement","alias","bidFloorPrice")({protocol:l.default.resolveHttpProtocol(),hostName:this.resolveHostName(),network:this.bidRequestConfig.network,placement:parseInt(this.placementConfig.placement),alias:this.placementConfig.alias,bidFloorPrice:this.resolveBidFloorPrice(this.placementConfig.bidFloorPrice)})}},{key:"resolveHostName",value:function(){var e=t.SERVER_MAP;return e[this.bidRequestConfig.region]||e.US}},{key:"resolveBidFloorPrice",value:function(e){return e?"bidfloor="+e.toString()+";":""}}]),t}(d.default);p.SERVER_MAP={EU:"adserver.adtech.de",US:"adserver.adtechus.com",Asia:"adserver.adtechjp.com"},t.default=p},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={formatTemplateString:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];return function(){for(var t=arguments.length,i=Array(t),o=0;o<t;o++)i[o]=arguments[o];var s=i[i.length-1]||{},a=[e[0]];return r.forEach(function(t,n){var r=Number.isInteger(t)?i[t]:s[t];a.push(r,e[n+1])}),n.trimTemplateStringResult(a.join(""))}},trimTemplateStringResult:function(e){return e?e.replace(/(?:\n\s*)/g,""):null},resolveHttpProtocol:function(){return"https:"===document.location.protocol?"https":"http"},each:function(e,t){if(e){if("function"==typeof e.forEach)return e.forEach(t,void 0);if(e.length>0)for(var n=0;n<e.length;n++)t(e[n],n,e);else for(var r in e)e.hasOwnProperty(r)&&t(e[r],r)}}};t.default=n},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(7),s=function(){function e(t,n){r(this,e),this.bidRequestConfig=t,this.placementConfig=n}return i(e,[{key:"send",value:function(e){var t=this.formatUrl(this.placementConfig);(0,o.sendGetRequest)(t,e)}}]),e}();t.default=s},function(e,t,n){"use strict";function r(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=new XMLHttpRequest,i=function(){r.readyState===XMLHttpRequest.DONE&&t&&t(r.responseText)};r.withCredentials=!0,r.open(n.method,e),r.onreadystatechange=i,a.default.each(n.customHeaders,function(e,t){r.setRequestHeader(t,e)}),r.setRequestHeader("Content-Type",n.contentType||"text/plain"),r.send(n.data)}function i(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n.method="GET",r(e,t,n)}function o(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n.method="POST",r(e,t,n)}Object.defineProperty(t,"__esModule",{value:!0}),t.sendRequest=r,t.sendGetRequest=i,t.sendPostRequest=o;var s=n(5),a=function(e){return e&&e.__esModule?e:{default:e}}(s)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=function(e,t){return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["","://","/bidRequest?\n dcn=","&pos=","&cmd=bid",""],["","://","/bidRequest?\n dcn=","&pos=","&cmd=bid",""]),c=n(5),l=r(c),f=n(6),d=r(f),p=function(e){function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return s(t,e),a(t,[{key:"formatUrl",value:function(){return l.default.formatTemplateString(u,"protocol","hostName","dcn","pos","ext")({protocol:l.default.resolveHttpProtocol(),hostName:this.bidRequestConfig.host||"hb.nexage.com",dcn:this.bidRequestConfig.dcn,pos:this.placementConfig.pos,ext:this.formatDynamicParams()})}},{key:"formatDynamicParams",value:function(){var e="",t=this.placementConfig.ext;return l.default.each(t,function(t,n){e+=encodeURIComponent("&"+n+"="+t)}),e}}]),t}(d.default);t.default=p},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=function(e,t){return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["","://","/bidRequest?"],["","://","/bidRequest?"]),c=n(5),l=r(c),f=n(7),d=n(6),p=r(d),h=function(e){function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return s(t,e),a(t,[{key:"formatUrl",value:function(){return l.default.formatTemplateString(u,"protocol","hostName")({protocol:l.default.resolveHttpProtocol(),hostName:this.bidRequestConfig.host||"hb.nexage.com"})}},{key:"send",value:function(e){var t=this.formatUrl(this.placementConfig),n={contentType:"application/json",data:this.placementConfig.openRtbParams,customHeaders:{"x-openrtb-version":"2.2"}};(0,f.sendPostRequest)(t,e,n)}}]),t}(p.default);t.default=h}]);