prebid-universal-creative 1.9.0 → 1.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.
@@ -1,3 +1,3 @@
1
- /* v1.9.0
2
- Updated : 2021-01-13 */
3
- !function(r){var n={};function a(t){if(n[t])return n[t].exports;var e=n[t]={i:t,l:!1,exports:{}};return r[t].call(e.exports,e,e.exports,a),e.l=!0,e.exports}a.m=r,a.c=n,a.d=function(t,e,r){a.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=1)}([function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.triggerPixel=function(t,e){var r=new Image;e&&"function"==typeof e&&(r.addEventListener("load",e),r.addEventListener("error",e));r.src=t},n.createTrackPixelHtml=function(t){if(!t)return"";var e=encodeURI(t);return'<div style="position:absolute;left:0px;top:0px;visibility:hidden;"><img src="'.concat(e,'"></div>')},n.writeAdUrl=function(t,e,r){var n=a.getEmptyIframe(r,e);n.src=t,document.body.appendChild(n)},n.writeAdHtml=function(t){r(document.body,t)},n.sendRequest=function(t,e){var r=new XMLHttpRequest;r.addEventListener("load",function(){e(r.responseText)}),r.open("GET",t),r.send()},n.getUUID=function(){var r=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var e=(r+16*Math.random())%16|0;return r=Math.floor(r/16),("x"===t?e:3&e|8).toString(16)})},n.loadScript=function(t,e,r){var n=t.document,a=n.createElement("script");a.type="text/javascript",r&&"function"==typeof r&&(a.readyState?a.onreadystatechange=function(){"loaded"!==a.readyState&&"complete"!==a.readyState||(a.onreadystatechange=null,r())}:a.onload=function(){r()});a.src=e;var i=n.getElementsByTagName("head");(i=i.length?i:n.getElementsByTagName("body")).length&&(i=i[0]).insertBefore(a,i.firstChild);return a},n.getCreativeComment=function(t){return document.createComment("Creative ".concat(t.crid," served by Prebid.js Header Bidding"))},n.getCreativeCommentMarkup=function(t){var e=n.getCreativeComment(t),r=document.createElement("div");return r.appendChild(e),r.innerHTML},n.transformAuctionTargetingData=function(e){var r={hb_adid:"adId",hb_cache_host:"cacheHost",hb_cache_path:"cachePath",hb_cache_id:"uuid",hb_format:"mediaType",hb_env:"env",hb_size:"size",hb_pb:"hbPb"};function t(t){return!(!e[t]||!(function(t){return i(t,"Object")}(e[t])&&0<Object.keys(e[t]).length||s(e[t])&&""!==e[t]))}var n={},a={};t("targetingMap")?a=function(e){var r={};return Object.keys(e).forEach(function(t){Array.isArray(e[t])&&0<e[t].length&&(r[t]=e[t][0])}),r}(e.targetingMap):t("targetingKeywords")&&(a=function(t){var a={},e=t.split(",");return 0<e.length&&e.forEach(function(t){var e=t.split(":");if(2===e.length){var r=e[0],n=e[1];a[r]=n}}),a}(e.targetingKeywords));return function(e){Object.keys(e).forEach(function(t){n[r[t]||t]=e[t]})}(a),Object.keys(e).forEach(function(t){"targetingMap"!==t&&"targetingKeywords"!==t&&s(e[t])&&""!==e[t]&&(n[t]=e[t])}),n},n.parseUrl=function(t){var e=document.createElement("a");return e.href=decodeURIComponent(t),{href:e.href,protocol:(e.protocol||"").replace(/:$/,""),hostname:e.hostname,port:+e.port,pathname:e.pathname.replace(/^(?!\/)/,"/"),hash:(e.hash||"").replace(/^#/,""),host:(e.host||window.location.host).replace(/:(443|80)$/,"")}};var a=function(t){if(t&&t.__esModule)return t;var e=o();if(e&&e.has(t))return e.get(t);var r={};if(null!=t){var n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in t)if(Object.prototype.hasOwnProperty.call(t,a)){var i=n?Object.getOwnPropertyDescriptor(t,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=t[a]}}r.default=t,e&&e.set(t,r);return r}(e(3));function o(){if("function"!=typeof WeakMap)return null;var t=new WeakMap;return o=function(){return t},t}var r=e(4);function i(t,e){return Object.prototype.toString.call(t)==="[object "+e+"]"}function s(t){return i(t,"String")}},function(t,e,r){"use strict";var n=r(2);window.pbNativeTag=window.pbNativeTag||{};var a=(0,n.newNativeTrackerManager)(window);window.pbNativeTag.startTrackers=a.startTrackers},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.newNativeTrackerManager=function(n){var i;function o(t){return n.document.getElementsByClassName(t)||[]}function s(t){return t.attributes&&t.attributes[h]&&t.attributes[h].value||""}function c(t,e){l(e,"click")}function u(r){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:c;r=r||o(f);for(var t=function(t){var e=s(r[t]);r[t].addEventListener("click",function(t){n(t,e)},!0)},e=0;e<r.length;e++)t(e)}function l(t,e){if(""===t)console.warn("Prebid tracking event was missing 'adId'. Was adId macro set in the HTML attribute "+h+"on the ad's anchor element");else{var r={message:"Prebid Native",adId:t};"click"===e&&(r.action="click"),n.parent.postMessage(JSON.stringify(r),i)}}return{startTrackers:function(t){var e=(0,p.transformAuctionTargetingData)(t),r=(0,d.newNativeAssetManager)(window);if(e&&"mobile-app"===e.env){r.loadMobileAssets(e,function(t){var e=0<arguments.length&&void 0!==t?t:{},r=e.clickTrackers,n=e.impTrackers;u(!1,function(t){(t||[]).forEach(p.triggerPixel)}.bind(null,r)),(n||[]).forEach(p.triggerPixel)})}else{var n=(0,p.parseUrl)(e&&e.pubUrl);i=n.protocol+"://"+n.host;var a=o(f);r.loadAssets(function(t){return 0<t.length&&t[0].attributes&&t[0].attributes[h]&&t[0].attributes[h].value||""}(a),u),u(a,c),0<a.length&&function(t){for(var e=0;e<t.length;e++){l(s(t[e]),"impression")}}(a)}}}};var p=r(0),d=r(5),f="pb-click",h="pbAdId"},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getEmptyIframe=function(t,e){var r=document.createElement("iframe");return r.setAttribute("frameborder",0),r.setAttribute("scrolling","no"),r.setAttribute("marginheight",0),r.setAttribute("marginwidth",0),r.setAttribute("TOPMARGIN",0),r.setAttribute("LEFTMARGIN",0),r.setAttribute("allowtransparency","true"),r.setAttribute("width",e),r.setAttribute("height",t),r},e.insertElement=function(t,e,r){var n;e=e||document,n=r?e.getElementsByTagName(r):e.getElementsByTagName("head");try{(n=n.length?n:e.getElementsByTagName("body")).length&&(n=n[0]).insertBefore(t,n.firstChild)}catch(t){}}},function(t,e,r){var n;n=function(){return a={},r.m=n=[function(t,e,r){"use strict";var n,a=r(1),i=(n=a)&&n.__esModule?n:{default:n};t.exports=i.default},function(t,e,r){"use strict";e.__esModule=!0;var s=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t};e.default=h;var n,a=r(2),c=(n=a)&&n.__esModule?n:{default:n},i=function(t){{if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}}(r(4));function u(){}var o={afterAsync:u,afterDequeue:u,afterStreamStart:u,afterWrite:u,autoFix:!0,beforeEnqueue:u,beforeWriteToken:function(t){return t},beforeWrite:function(t){return t},done:u,error:function(t){throw new Error(t.msg)},releaseAsync:!1},l=0,p=[],d=null;function f(){var t=p.shift();if(t){var e=i.last(t);e.afterDequeue(),t.stream=function(t,e,n){(d=new c.default(t,n)).id=l++,d.name=n.name||d.id,h.streams[d.name]=d;var r=t.ownerDocument,a={close:r.close,open:r.open,write:r.write,writeln:r.writeln};function i(t){t=n.beforeWrite(t),d.write(t),n.afterWrite(t)}s(r,{close:u,open:u,write:function(){for(var t=arguments.length,e=Array(t),r=0;r<t;r++)e[r]=arguments[r];return i(e.join(""))},writeln:function(){for(var t=arguments.length,e=Array(t),r=0;r<t;r++)e[r]=arguments[r];return i(e.join("")+"\n")}});var o=d.win.onerror||u;return d.win.onerror=function(t,e,r){n.error({msg:t+" - "+e+": "+r}),o.apply(d.win,[t,e,r])},d.write(e,function(){s(r,a),d.win.onerror=o,n.done(),d=null,f()}),d}.apply(void 0,t),e.afterStreamStart()}}function h(t,e,r){if(i.isFunction(r))r={done:r};else if("clear"===r)return p=[],d=null,void(l=0);r=i.defaults(r,o);var n=[t=/^#/.test(t)?window.document.getElementById(t.substr(1)):t.jquery?t[0]:t,e,r];return t.postscribe={cancel:function(){n.stream?n.stream.abort():n[1]=u}},r.beforeEnqueue(n),p.push(n),d||f(),t.postscribe}s(h,{streams:{},queue:p,WriteStream:c.default})},function(t,e,r){"use strict";e.__esModule=!0;var n,s=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},a=r(3),i=(n=a)&&n.__esModule?n:{default:n},o=function(t){{if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}}(r(4));var l="data-ps-",p="ps-style",d="ps-script";function c(t,e){var r=l+e,n=t.getAttribute(r);return o.existy(n)?String(n):n}function u(t,e,r){var n=2<arguments.length&&void 0!==r?r:null,a=l+e;o.existy(n)&&""!==n?t.setAttribute(a,n):t.removeAttribute(a)}var f=(h.prototype.write=function(){var t;for((t=this.writeQueue).push.apply(t,arguments);!this.deferredRemote&&this.writeQueue.length;){var e=this.writeQueue.shift();o.isFunction(e)?this._callFunction(e):this._writeImpl(e)}},h.prototype._callFunction=function(t){var e={type:"function",value:t.name||t.toString()};this._onScriptStart(e),t.call(this.win,this.doc),this._onScriptDone(e)},h.prototype._writeImpl=function(t){this.parser.append(t);for(var e=void 0,r=void 0,n=void 0,a=[];(e=this.parser.readToken())&&!(r=o.isScript(e))&&!(n=o.isStyle(e));)(e=this.options.beforeWriteToken(e))&&a.push(e);0<a.length&&this._writeStaticTokens(a),r&&this._handleScriptToken(e),n&&this._handleStyleToken(e)},h.prototype._writeStaticTokens=function(t){var e=this._buildChunk(t);return e.actual?(e.html=this.proxyHistory+e.actual,this.proxyHistory+=e.proxy,this.proxyRoot.innerHTML=e.html,this._walkChunk(),e):null},h.prototype._buildChunk=function(t){for(var e=this.actuals.length,r=[],n=[],a=[],i=t.length,o=0;o<i;o++){var s=t[o],c=s.toString();if(r.push(c),s.attrs){if(!/^noscript$/i.test(s.tagName)){var u=e++;n.push(c.replace(/(\/?>)/," "+l+"id="+u+" $1")),s.attrs.id!==d&&s.attrs.id!==p&&a.push("atomicTag"===s.type?"":"<"+s.tagName+" "+l+"proxyof="+u+(s.unary?" />":">"))}}else n.push(c),a.push("endTag"===s.type?c:"")}return{tokens:t,raw:r.join(""),actual:n.join(""),proxy:a.join("")}},h.prototype._walkChunk=function(){for(var t=void 0,e=[this.proxyRoot];o.existy(t=e.shift());){var r=1===t.nodeType;if(!r||!c(t,"proxyof")){r&&u(this.actuals[c(t,"id")]=t,"id");var n=t.parentNode&&c(t.parentNode,"proxyof");n&&this.actuals[n].appendChild(t)}e.unshift.apply(e,o.toArray(t.childNodes))}},h.prototype._handleScriptToken=function(t){var e=this,r=this.parser.clear();r&&this.writeQueue.unshift(r),t.src=t.attrs.src||t.attrs.SRC,(t=this.options.beforeWriteToken(t))&&(t.src&&this.scriptStack.length?this.deferredRemote=t:this._onScriptStart(t),this._writeScriptToken(t,function(){e._onScriptDone(t)}))},h.prototype._handleStyleToken=function(t){var e=this.parser.clear();e&&this.writeQueue.unshift(e),t.type=t.attrs.type||t.attrs.TYPE||"text/css",(t=this.options.beforeWriteToken(t))&&this._writeStyleToken(t),e&&this.write()},h.prototype._writeStyleToken=function(t){var e=this._buildStyle(t);this._insertCursor(e,p),t.content&&(e.styleSheet&&!e.sheet?e.styleSheet.cssText=t.content:e.appendChild(this.doc.createTextNode(t.content)))},h.prototype._buildStyle=function(t){var r=this.doc.createElement(t.tagName);return r.setAttribute("type",t.type),o.eachKey(t.attrs,function(t,e){r.setAttribute(t,e)}),r},h.prototype._insertCursor=function(t,e){this._writeImpl('<span id="'+e+'"/>');var r=this.doc.getElementById(e);r&&r.parentNode.replaceChild(t,r)},h.prototype._onScriptStart=function(t){t.outerWrites=this.writeQueue,this.writeQueue=[],this.scriptStack.unshift(t)},h.prototype._onScriptDone=function(t){t===this.scriptStack[0]?(this.scriptStack.shift(),this.write.apply(this,t.outerWrites),!this.scriptStack.length&&this.deferredRemote&&(this._onScriptStart(this.deferredRemote),this.deferredRemote=null)):this.options.error({msg:"Bad script nesting or script finished twice"})},h.prototype._writeScriptToken=function(t,e){var r=this._buildScript(t),n=this._shouldRelease(r),a=this.options.afterAsync;t.src&&(r.src=t.src,this._scriptLoadHandler(r,n?a:function(){e(),a()}));try{this._insertCursor(r,d),r.src&&!n||e()}catch(t){this.options.error(t),e()}},h.prototype._buildScript=function(t){var r=this.doc.createElement(t.tagName);return o.eachKey(t.attrs,function(t,e){r.setAttribute(t,e)}),t.content&&(r.text=t.content),r},h.prototype._scriptLoadHandler=function(e,r){function n(){e=e.onload=e.onreadystatechange=e.onerror=null}var a=this.options.error;function t(){n(),null!=r&&r(),r=null}function i(t){n(),a(t),null!=r&&r(),r=null}function o(t,e){var r=t["on"+e];null!=r&&(t["_on"+e]=r)}o(e,"load"),o(e,"error"),s(e,{onload:function(){if(e._onload)try{e._onload.apply(this,Array.prototype.slice.call(arguments,0))}catch(t){i({msg:"onload handler failed "+t+" @ "+e.src})}t()},onerror:function(){if(e._onerror)try{e._onerror.apply(this,Array.prototype.slice.call(arguments,0))}catch(t){return void i({msg:"onerror handler failed "+t+" @ "+e.src})}i({msg:"remote script failed "+e.src})},onreadystatechange:function(){/^(loaded|complete)$/.test(e.readyState)&&t()}})},h.prototype._shouldRelease=function(t){return!/^script$/i.test(t.nodeName)||!!(this.options.releaseAsync&&t.src&&t.hasAttribute("async"))},h);function h(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,h),this.root=t,this.options=e,this.doc=t.ownerDocument,this.win=this.doc.defaultView||this.doc.parentWindow,this.parser=new i.default("",{autoFix:e.autoFix}),this.actuals=[t],this.proxyHistory="",this.proxyRoot=this.doc.createElement(t.nodeName),this.scriptStack=[],this.writeQueue=[],u(this.proxyRoot,"proxyof",0)}e.default=f},function(t,e,r){var n;n=function(){return a={},r.m=n=[function(t,e,r){"use strict";var n,a=r(1),i=(n=a)&&n.__esModule?n:{default:n};t.exports=i.default},function(t,e,r){"use strict";e.__esModule=!0;var n,o=u(r(2)),a=u(r(3)),i=r(6),s=(n=i)&&n.__esModule?n:{default:n},c=r(5);function u(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}var l={comment:/^<!--/,endTag:/^<\//,atomicTag:/^<\s*(script|style|noscript|iframe|textarea)[\s\/>]/i,startTag:/^</,chars:/^[^<]/},p=(d.prototype.append=function(t){this.stream+=t},d.prototype.prepend=function(t){this.stream=t+this.stream},d.prototype._readTokenImpl=function(){var t=this._peekTokenImpl();if(t)return this.stream=this.stream.slice(t.length),t},d.prototype._peekTokenImpl=function(){for(var t in l)if(l.hasOwnProperty(t)&&l[t].test(this.stream)){var e=a[t](this.stream);if(e)return"startTag"===e.type&&/script|style/i.test(e.tagName)?null:(e.text=this.stream.substr(0,e.length),e)}},d.prototype.peekToken=function(){return this._peekToken()},d.prototype.readToken=function(){return this._readToken()},d.prototype.readTokens=function(t){for(var e=void 0;e=this.readToken();)if(t[e.type]&&!1===t[e.type](e))return},d.prototype.clear=function(){var t=this.stream;return this.stream="",t},d.prototype.rest=function(){return this.stream},d);function d(){var t=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"",r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,d),this.stream=e;var n=!1,a={};for(var i in o)o.hasOwnProperty(i)&&(r.autoFix&&(a[i+"Fix"]=!0),n=n||a[i+"Fix"]);n?(this._readToken=(0,s.default)(this,a,function(){return t._readTokenImpl()}),this._peekToken=(0,s.default)(this,a,function(){return t._peekTokenImpl()})):(this._readToken=this._readTokenImpl,this._peekToken=this._peekTokenImpl)}for(var f in(e.default=p).tokenToString=function(t){return t.toString()},p.escapeAttributes=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[r]=(0,c.escapeQuotes)(t[r],null));return e},p.supports=o)o.hasOwnProperty(f)&&(p.browserHasFlaw=p.browserHasFlaw||!o[f]&&f)},function(t,e){"use strict";var r=!(e.__esModule=!0),n=!1,a=window.document.createElement("div");try{var i="<P><I></P></I>";a.innerHTML=i,e.tagSoup=r=a.innerHTML!==i}catch(t){e.tagSoup=r=!1}try{a.innerHTML="<P><i><P></P></i></P>",e.selfClose=n=2===a.childNodes.length}catch(t){e.selfClose=n=!1}a=null,e.tagSoup=r,e.selfClose=n},function(t,e,r){"use strict";e.__esModule=!0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e.comment=function(t){var e=t.indexOf("--\x3e");if(0<=e)return new s.CommentToken(t.substr(4,e-1),e+3)},e.chars=function(t){var e=t.indexOf("<");return new s.CharsToken(0<=e?e:t.length)},e.startTag=a,e.atomicTag=function(t){var e=a(t);if(e){var r=t.slice(e.length);if(r.match(new RegExp("</\\s*"+e.tagName+"\\s*>","i"))){var n=r.match(new RegExp("([\\s\\S]*?)</\\s*"+e.tagName+"\\s*>","i"));if(n)return new s.AtomicTagToken(e.tagName,n[0].length+e.length,e.attrs,e.booleanAttrs,n[1])}}},e.endTag=function(t){var e=t.match(c.endTag);if(e)return new s.EndTagToken(e[1],e[0].length)};var s=r(4),c={startTag:/^<([\-A-Za-z0-9_]+)((?:\s+[\w\-]+(?:\s*=?\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/,endTag:/^<\/([\-A-Za-z0-9_]+)[^>]*>/,attr:/(?:([\-A-Za-z0-9_]+)\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))|(?:([\-A-Za-z0-9_]+)(\s|$)+)/g,fillAttr:/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noresize|noshade|nowrap|readonly|selected)$/i};function a(t){var r,n,a;if(-1!==t.indexOf(">")){var e=t.match(c.startTag);if(e){var i=(r={},n={},a=e[2],e[2].replace(c.attr,function(t,e){arguments[2]||arguments[3]||arguments[4]||arguments[5]?arguments[5]?(r[arguments[5]]="",n[arguments[5]]=!0):r[e]=arguments[2]||arguments[3]||arguments[4]||c.fillAttr.test(e)&&e||"":r[e]="",a=a.replace(t,"")}),{v:new s.StartTagToken(e[1],e[0].length,r,n,!!e[3],a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""))});if("object"===(void 0===i?"undefined":o(i)))return i.v}}}},function(t,e,r){"use strict";e.__esModule=!0,e.EndTagToken=e.AtomicTagToken=e.StartTagToken=e.TagToken=e.CharsToken=e.CommentToken=e.Token=void 0;var o=r(5);function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}e.Token=function t(e,r){s(this,t),this.type=e,this.length=r,this.text=""},e.CommentToken=(n.prototype.toString=function(){return"\x3c!--"+this.content},n);function n(t,e){s(this,n),this.type="comment",this.length=e||(t?t.length:0),this.text="",this.content=t}e.CharsToken=(a.prototype.toString=function(){return this.text},a);function a(t){s(this,a),this.type="chars",this.length=t,this.text=""}var i=e.TagToken=(c.formatTag=function(t,e){var r=1<arguments.length&&void 0!==e?e:null,n="<"+t.tagName;for(var a in t.attrs)if(t.attrs.hasOwnProperty(a)){n+=" "+a;var i=t.attrs[a];void 0!==t.booleanAttrs&&void 0!==t.booleanAttrs[a]||(n+='="'+(0,o.escapeQuotes)(i)+'"')}return t.rest&&(n+=" "+t.rest),t.unary&&!t.html5Unary?n+="/>":n+=">",null!=r&&(n+=r+"</"+t.tagName+">"),n},c);function c(t,e,r,n,a){s(this,c),this.type=t,this.length=r,this.text="",this.tagName=e,this.attrs=n,this.booleanAttrs=a,this.unary=!1,this.html5Unary=!1}e.StartTagToken=(u.prototype.toString=function(){return i.formatTag(this)},u);function u(t,e,r,n,a,i){s(this,u),this.type="startTag",this.length=e,this.text="",this.tagName=t,this.attrs=r,this.booleanAttrs=n,this.html5Unary=!1,this.unary=a,this.rest=i}e.AtomicTagToken=(l.prototype.toString=function(){return i.formatTag(this,this.content)},l);function l(t,e,r,n,a){s(this,l),this.type="atomicTag",this.length=e,this.text="",this.tagName=t,this.attrs=r,this.booleanAttrs=n,this.unary=!1,this.html5Unary=!1,this.content=a}e.EndTagToken=(p.prototype.toString=function(){return"</"+this.tagName+">"},p);function p(t,e){s(this,p),this.type="endTag",this.length=e,this.text="",this.tagName=t}},function(t,e){"use strict";e.__esModule=!0,e.escapeQuotes=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"";return t?t.replace(/([^"]*)"/g,function(t,e){return/\\/.test(e)?e+'"':e+'\\"'}):e}},function(t,e){"use strict";e.__esModule=!0,e.default=function(r,n,e){var a=function(){var t=[];return t.last=function(){return this[this.length-1]},t.lastTagNameEq=function(t){var e=this.last();return e&&e.tagName&&e.tagName.toUpperCase()===t.toUpperCase()},t.containsTagName=function(t){for(var e,r=0;e=this[r];r++)if(e.tagName===t)return!0;return!1},t}(),i={startTag:function(t){var e=t.tagName;"TR"===e.toUpperCase()&&a.lastTagNameEq("TABLE")?(r.prepend("<TBODY>"),o()):n.selfCloseFix&&s.test(e)&&a.containsTagName(e)?a.lastTagNameEq(e)?u(r,a):(r.prepend("</"+t.tagName+">"),o()):t.unary||a.push(t)},endTag:function(t){a.last()?n.tagSoupFix&&!a.lastTagNameEq(t.tagName)?u(r,a):a.pop():n.tagSoupFix&&(e(),o())}};function o(){var t=function(t,e){var r=t.stream,n=c(e());return t.stream=r,n}(r,e);t&&i[t.type]&&i[t.type](t)}return function(){return o(),c(e())}};var r=/^(AREA|BASE|BASEFONT|BR|COL|FRAME|HR|IMG|INPUT|ISINDEX|LINK|META|PARAM|EMBED)$/i,s=/^(COLGROUP|DD|DT|LI|OPTIONS|P|TD|TFOOT|TH|THEAD|TR)$/i;function c(t){return t&&"startTag"===t.type&&(t.unary=r.test(t.tagName)||t.unary,t.html5Unary=!/\/>$/.test(t.text)),t}function u(t,e){var r=e.pop();t.prepend("</"+r.tagName+">")}}],r.c=a,r.p="",r(0);function r(t){if(a[t])return a[t].exports;var e=a[t]={exports:{},id:t,loaded:!1};return n[t].call(e.exports,e,e.exports,r),e.loaded=!0,e.exports}var n,a},t.exports=n()},function(t,e){"use strict";e.__esModule=!0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function a(t){return null!=t}function i(t,e,r){var n=void 0,a=t&&t.length||0;for(n=0;n<a;n++)e.call(r,t[n],n)}function o(t,e,r){for(var n in t)t.hasOwnProperty(n)&&e.call(r,n,t[n])}function r(t,e){return!(!t||"startTag"!==t.type&&"atomicTag"!==t.type||!("tagName"in t))&&!!~t.tagName.toLowerCase().indexOf(e)}e.existy=a,e.isFunction=function(t){return"function"==typeof t},e.each=i,e.eachKey=o,e.defaults=function(r,t){return r=r||{},o(t,function(t,e){a(r[t])||(r[t]=e)}),r},e.toArray=function(r){try{return Array.prototype.slice.call(r)}catch(t){var e=function(){var e=[];return i(r,function(t){e.push(t)}),{v:e}}();if("object"===(void 0===e?"undefined":n(e)))return e.v}},e.last=function(t){return t[t.length-1]},e.isTag=r,e.isScript=function(t){return r(t,"script")},e.isStyle=function(t){return r(t,"style")}}],r.c=a,r.p="",r(0);function r(t){if(a[t])return a[t].exports;var e=a[t]={exports:{},id:t,loaded:!1};return n[t].call(e.exports,e,e.exports,r),e.loaded=!0,e.exports}var n,a},t.exports=n()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.newNativeAssetManager=function(c){var u,l=0;function i(t){var e;try{e=JSON.parse(t)}catch(t){console.log("Error parsing response from cache host: ".concat(t))}return e}function r(t){var e=t.uuid,r="".concat(function(t,e){var r=void 0===e||""===e?v:e;return"https://".concat(void 0===t||""===t?n:t).concat(r)}(t.cacheHost,t.cachePath),"?uuid=").concat(e);(0,h.sendRequest)(r,function(t){var e=i(t);if(e&&e.adm){var r=i(e.adm);if(r&&r.assets){var n=function(t){var e,r=[];return t.assets.forEach(function(t){t.img?o.image[t.img.type]?r.push({key:o.image[t.img.type],value:t.img.url}):console.log("ERROR: Invalid image type for image asset"):t.data?o.data[t.data.type]?r.push({key:o.data[t.data.type],value:t.data.value}):console.log("ERROR: Invalid data type for data asset"):t.title&&r.push({key:"title",value:t.title.text})}),t.link&&(t.link.clicktrackers&&(e=t.link.clicktrackers),r.push({key:"clickUrl",value:t.link.url})),{assets:r,clicktrackers:e,imptrackers:t.imptrackers}}(r),a=f(c.document.body.innerHTML,n);c.document.body.innerHTML=a,u&&u({clickTrackers:n.clicktrackers,impTrackers:n.imptrackers})}}})}function a(n){var a=[],i=c.document,o=void 0!==c.pbNativeData;return Object.keys(s).forEach(function(t){var e=s[t],r=n&&!o?"".concat(e,":").concat(n):"".concat(e);~(~i.body.innerHTML.indexOf(r)?i.body.innerHTML.indexOf(r):i.head.innerHTML&&i.head.innerHTML.indexOf(r))&&a.push(e)}),a}function p(t,e){var r={message:"Prebid Native",action:"resizeNativeHeight",adId:t,height:e};c.parent.postMessage(JSON.stringify(r),"*")}function d(t){var e={};try{e=JSON.parse(t.data)}catch(t){return void(10<l++&&c.removeEventListener("message",d))}if("assetResponse"===e.message){var r=c.document.body.innerHTML,n=c.document.head.innerHTML,a=void 0!==c.pbNativeData;if(a&&e.adId!==c.pbNativeData.adId)return;if(n&&(c.document.head.innerHTML=f(n,e)),e.hasOwnProperty("rendererUrl")&&e.rendererUrl||a&&c.pbNativeData.hasOwnProperty("rendererUrl"))if(c.renderAd){var i=c.renderAd&&c.renderAd(e.assets)||"";c.document.body.innerHTML=r+i,u&&u(),c.removeEventListener("message",d),p(e.adId,document.body.clientHeight||document.body.offsetHeight)}else document.getElementById("pb-native-renderer")?document.getElementById("pb-native-renderer").addEventListener("load",function(){var t=c.renderAd&&c.renderAd(e.assets)||"";c.document.body.innerHTML=r+t,u&&u(),c.removeEventListener("message",d),p(e.adId,document.body.clientHeight||document.body.offsetHeight)}):(0,h.loadScript)(c,a&&c.pbNativeData.hasOwnProperty("rendererUrl")&&c.pbNativeData.rendererUrl||e.rendererUrl,function(){var t=c.renderAd&&c.renderAd(e.assets)||"";c.document.body.innerHTML=r+t,u&&u(),c.removeEventListener("message",d),p(e.adId,document.body.clientHeight||document.body.offsetHeight)});else if(e.hasOwnProperty("adTemplate")&&e.adTemplate||a&&c.pbNativeData.hasOwnProperty("adTemplate")){var o=f(a&&c.pbNativeData.hasOwnProperty("adTemplate")&&c.pbNativeData.adTemplate||e.adTemplate,e);c.document.body.innerHTML=r+o,u&&u(),c.removeEventListener("message",d),p(e.adId,document.body.clientHeight||document.body.offsetHeight)}else{var s=f(r,e);c.document.body.innerHTML=s,u&&u(),c.removeEventListener("message",d)}}}function f(t,e){var r=e.assets,a=e.adId,i=t;return(r||[]).forEach(function(t){var e=void 0!==c.pbNativeData,r=a&&!e?"".concat(s[t.key],":").concat(a):e?"##"+"".concat(s[t.key])+"##":"".concat(s[t.key]),n=new RegExp(r,"g");i=i.replace(n,t.value)}),i}return{loadAssets:function(t,e){var r=a(t),n=void 0!==c.pbNativeData;n&&c.pbNativeData.hasOwnProperty("assetsToReplace")&&c.pbNativeData.assetsToReplace.forEach(function(t){var e=t.match(/hb_native_/i)?t:s[t];e&&r.push(e)}),n&&c.pbNativeData.hasOwnProperty("requestAllAssets")&&c.pbNativeData.requestAllAssets?(u=e,function(t){c.addEventListener("message",d,!1);var e={message:"Prebid Native",action:"allAssetRequest",adId:t};c.parent.postMessage(JSON.stringify(e),"*")}(t)):0<r.length&&(u=e,function(t,e){c.addEventListener("message",d,!1);var r={message:"Prebid Native",action:"assetRequest",adId:t,assets:e};c.parent.postMessage(JSON.stringify(r),"*")}(t,r))},loadMobileAssets:function(t,e){0<a().length&&(u=e,r(t))}}};var h=r(0),s={title:"hb_native_title",body:"hb_native_body",body2:"hb_native_body2",privacyLink:"hb_native_privacy",sponsoredBy:"hb_native_brand",image:"hb_native_image",icon:"hb_native_icon",clickUrl:"hb_native_linkurl",displayUrl:"hb_native_displayurl",cta:"hb_native_cta",rating:"hb_native_rating",address:"hb_native_address",downloads:"hb_native_downloads",likes:"hb_native_likes",phone:"hb_native_phone",price:"hb_native_price",salePrice:"hb_native_saleprice",rendererUrl:"hb_renderer_url"},o={image:{1:"icon",3:"image"},data:{1:"sponsoredBy",2:"body",3:"rating",4:"likes",5:"downloads",6:"price",7:"salePrice",8:"phone",9:"address",10:"body2",11:"displayUrl",12:"cta"}},n="prebid.adnxs.com",v="/pbc/v1/cache"}]);
1
+ /* v1.13.0
2
+ Updated : 2021-12-09 */
3
+ !function(r){var n={};function a(t){if(n[t])return n[t].exports;var e=n[t]={i:t,l:!1,exports:{}};return r[t].call(e.exports,e,e.exports,a),e.l=!0,e.exports}a.m=r,a.c=n,a.d=function(t,e,r){a.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=1)}([function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.triggerPixel=function(t,e){var r=new Image;e&&"function"==typeof e&&(r.addEventListener("load",e),r.addEventListener("error",e));r.src=t},n.createTrackPixelHtml=function(t){if(!t)return"";var e=encodeURI(t);return'<div style="position:absolute;left:0px;top:0px;visibility:hidden;"><img src="'.concat(e,'"></div>')},n.writeAdUrl=function(t,e,r){var n=a.getEmptyIframe(r,e);n.src=t,document.body.appendChild(n)},n.writeAdHtml=function(t){r(document.body,t,{error:console.error})},n.sendRequest=function(t,e){var r=new XMLHttpRequest;r.addEventListener("load",function(){e(r.responseText)}),r.open("GET",t),r.send()},n.getUUID=function(){var r=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var e=(r+16*Math.random())%16|0;return r=Math.floor(r/16),("x"===t?e:3&e|8).toString(16)})},n.loadScript=function(t,e,r,n){var a=t.document,o=a.createElement("script");o.type="text/javascript",r&&"function"==typeof r&&(o.readyState?o.onreadystatechange=function(){"loaded"!==o.readyState&&"complete"!==o.readyState||(o.onreadystatechange=null,r())}:o.onload=function(){r()});n&&"function"==typeof n&&(o.onerror=function(){n()});o.src=e;var i=a.getElementsByTagName("head");(i=i.length?i:a.getElementsByTagName("body")).length&&(i=i[0]).insertBefore(o,i.firstChild);return o},n.getCreativeComment=function(t){return document.createComment("Creative ".concat(t.crid," served by Prebid.js Header Bidding"))},n.getCreativeCommentMarkup=function(t){var e=n.getCreativeComment(t),r=document.createElement("div");return r.appendChild(e),r.innerHTML},n.transformAuctionTargetingData=function(e){var r={hb_adid:"adId",hb_cache_host:"cacheHost",hb_cache_path:"cachePath",hb_cache_id:"uuid",hb_format:"mediaType",hb_env:"env",hb_size:"size",hb_pb:"hbPb"};function t(t){return!(!e[t]||!(function(t){return o(t,"Object")}(e[t])&&0<Object.keys(e[t]).length||s(e[t])&&""!==e[t]))}var n={},a={};t("targetingMap")?a=function(e){var r={};return Object.keys(e).forEach(function(t){Array.isArray(e[t])&&0<e[t].length&&(r[t]=e[t][0])}),r}(e.targetingMap):t("targetingKeywords")&&(a=function(t){var a={},e=t.split(",");return 0<e.length&&e.forEach(function(t){var e=t.split(":");if(2===e.length){var r=e[0],n=e[1];a[r]=n}}),a}(e.targetingKeywords));return function(e){Object.keys(e).forEach(function(t){n[r[t]||t]=e[t]})}(a),Object.keys(e).forEach(function(t){"targetingMap"!==t&&"targetingKeywords"!==t&&s(e[t])&&""!==e[t]&&(n[t]=e[t])}),n},n.parseUrl=function(t){var e=document.createElement("a");return e.href=decodeURIComponent(t),{href:e.href,protocol:(e.protocol||"").replace(/:$/,""),hostname:e.hostname,port:+e.port,pathname:e.pathname.replace(/^(?!\/)/,"/"),hash:(e.hash||"").replace(/^#/,""),host:(e.host||window.location.host).replace(/:(443|80)$/,"")}};var a=function(t){if(t&&t.__esModule)return t;var e=i();if(e&&e.has(t))return e.get(t);var r={};if(null!=t){var n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in t)if(Object.prototype.hasOwnProperty.call(t,a)){var o=n?Object.getOwnPropertyDescriptor(t,a):null;o&&(o.get||o.set)?Object.defineProperty(r,a,o):r[a]=t[a]}}r.default=t,e&&e.set(t,r);return r}(e(3));function i(){if("function"!=typeof WeakMap)return null;var t=new WeakMap;return i=function(){return t},t}var r=e(4);function o(t,e){return Object.prototype.toString.call(t)==="[object "+e+"]"}function s(t){return o(t,"String")}},function(t,e,r){"use strict";var n=r(2);window.pbNativeTag=window.pbNativeTag||{};var a=(0,n.newNativeTrackerManager)(window);window.pbNativeTag.startTrackers=a.startTrackers},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.newNativeTrackerManager=function(n){var o;function i(t){return n.document.getElementsByClassName(t)||[]}function s(t){return t.attributes&&t.attributes[h]&&t.attributes[h].value||""}function c(t,e){l(e,"click")}function u(r){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:c;r=r||i(f);for(var t=function(t){var e=s(r[t]);r[t].addEventListener("click",function(t){n(t,e)},!0)},e=0;e<r.length;e++)t(e)}function l(t,e){if(""===t)console.warn("Prebid tracking event was missing 'adId'. Was adId macro set in the HTML attribute "+h+"on the ad's anchor element");else{var r={message:"Prebid Native",adId:t};"click"===e&&(r.action="click"),n.parent.postMessage(JSON.stringify(r),o)}}return{startTrackers:function(t){var e=(0,p.transformAuctionTargetingData)(t),r=(0,d.newNativeAssetManager)(window);if(e&&"mobile-app"===e.env){r.loadMobileAssets(e,function(t){var e=0<arguments.length&&void 0!==t?t:{},r=e.clickTrackers,n=e.impTrackers;u(!1,function(t){(t||[]).forEach(p.triggerPixel)}.bind(null,r)),(n||[]).forEach(p.triggerPixel)})}else{var n=(0,p.parseUrl)(e&&e.pubUrl);o=n.protocol+"://"+n.host;var a=i(f);r.loadAssets(function(t){return 0<t.length&&t[0].attributes&&t[0].attributes[h]&&t[0].attributes[h].value||""}(a),u),u(a,c),0<a.length&&function(t){for(var e=0;e<t.length;e++){l(s(t[e]),"impression")}}(a)}}}};var p=r(0),d=r(5),f="pb-click",h="pbAdId"},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getEmptyIframe=function(t,e){var r=document.createElement("iframe");return r.setAttribute("frameborder",0),r.setAttribute("scrolling","no"),r.setAttribute("marginheight",0),r.setAttribute("marginwidth",0),r.setAttribute("TOPMARGIN",0),r.setAttribute("LEFTMARGIN",0),r.setAttribute("allowtransparency","true"),r.setAttribute("width",e),r.setAttribute("height",t),r},e.insertElement=function(t,e,r){var n;e=e||document,n=r?e.getElementsByTagName(r):e.getElementsByTagName("head");try{(n=n.length?n:e.getElementsByTagName("body")).length&&(n=n[0]).insertBefore(t,n.firstChild)}catch(t){}}},function(t,e,r){var n;n=function(){return a={},r.m=n=[function(t,e,r){"use strict";var n,a=r(1),o=(n=a)&&n.__esModule?n:{default:n};t.exports=o.default},function(t,e,r){"use strict";e.__esModule=!0;var s=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t};e.default=h;var n,a=r(2),c=(n=a)&&n.__esModule?n:{default:n},o=function(t){{if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}}(r(4));function u(){}var i={afterAsync:u,afterDequeue:u,afterStreamStart:u,afterWrite:u,autoFix:!0,beforeEnqueue:u,beforeWriteToken:function(t){return t},beforeWrite:function(t){return t},done:u,error:function(t){throw new Error(t.msg)},releaseAsync:!1},l=0,p=[],d=null;function f(){var t=p.shift();if(t){var e=o.last(t);e.afterDequeue(),t.stream=function(t,e,n){(d=new c.default(t,n)).id=l++,d.name=n.name||d.id,h.streams[d.name]=d;var r=t.ownerDocument,a={close:r.close,open:r.open,write:r.write,writeln:r.writeln};function o(t){t=n.beforeWrite(t),d.write(t),n.afterWrite(t)}s(r,{close:u,open:u,write:function(){for(var t=arguments.length,e=Array(t),r=0;r<t;r++)e[r]=arguments[r];return o(e.join(""))},writeln:function(){for(var t=arguments.length,e=Array(t),r=0;r<t;r++)e[r]=arguments[r];return o(e.join("")+"\n")}});var i=d.win.onerror||u;return d.win.onerror=function(t,e,r){n.error({msg:t+" - "+e+": "+r}),i.apply(d.win,[t,e,r])},d.write(e,function(){s(r,a),d.win.onerror=i,n.done(),d=null,f()}),d}.apply(void 0,t),e.afterStreamStart()}}function h(t,e,r){if(o.isFunction(r))r={done:r};else if("clear"===r)return p=[],d=null,void(l=0);r=o.defaults(r,i);var n=[t=/^#/.test(t)?window.document.getElementById(t.substr(1)):t.jquery?t[0]:t,e,r];return t.postscribe={cancel:function(){n.stream?n.stream.abort():n[1]=u}},r.beforeEnqueue(n),p.push(n),d||f(),t.postscribe}s(h,{streams:{},queue:p,WriteStream:c.default})},function(t,e,r){"use strict";e.__esModule=!0;var n,s=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},a=r(3),o=(n=a)&&n.__esModule?n:{default:n},i=function(t){{if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}}(r(4));var l="data-ps-",p="ps-style",d="ps-script";function c(t,e){var r=l+e,n=t.getAttribute(r);return i.existy(n)?String(n):n}function u(t,e,r){var n=2<arguments.length&&void 0!==r?r:null,a=l+e;i.existy(n)&&""!==n?t.setAttribute(a,n):t.removeAttribute(a)}var f=(h.prototype.write=function(){var t;for((t=this.writeQueue).push.apply(t,arguments);!this.deferredRemote&&this.writeQueue.length;){var e=this.writeQueue.shift();i.isFunction(e)?this._callFunction(e):this._writeImpl(e)}},h.prototype._callFunction=function(t){var e={type:"function",value:t.name||t.toString()};this._onScriptStart(e),t.call(this.win,this.doc),this._onScriptDone(e)},h.prototype._writeImpl=function(t){this.parser.append(t);for(var e=void 0,r=void 0,n=void 0,a=[];(e=this.parser.readToken())&&!(r=i.isScript(e))&&!(n=i.isStyle(e));)(e=this.options.beforeWriteToken(e))&&a.push(e);0<a.length&&this._writeStaticTokens(a),r&&this._handleScriptToken(e),n&&this._handleStyleToken(e)},h.prototype._writeStaticTokens=function(t){var e=this._buildChunk(t);return e.actual?(e.html=this.proxyHistory+e.actual,this.proxyHistory+=e.proxy,this.proxyRoot.innerHTML=e.html,this._walkChunk(),e):null},h.prototype._buildChunk=function(t){for(var e=this.actuals.length,r=[],n=[],a=[],o=t.length,i=0;i<o;i++){var s=t[i],c=s.toString();if(r.push(c),s.attrs){if(!/^noscript$/i.test(s.tagName)){var u=e++;n.push(c.replace(/(\/?>)/," "+l+"id="+u+" $1")),s.attrs.id!==d&&s.attrs.id!==p&&a.push("atomicTag"===s.type?"":"<"+s.tagName+" "+l+"proxyof="+u+(s.unary?" />":">"))}}else n.push(c),a.push("endTag"===s.type?c:"")}return{tokens:t,raw:r.join(""),actual:n.join(""),proxy:a.join("")}},h.prototype._walkChunk=function(){for(var t=void 0,e=[this.proxyRoot];i.existy(t=e.shift());){var r=1===t.nodeType;if(!r||!c(t,"proxyof")){r&&u(this.actuals[c(t,"id")]=t,"id");var n=t.parentNode&&c(t.parentNode,"proxyof");n&&this.actuals[n].appendChild(t)}e.unshift.apply(e,i.toArray(t.childNodes))}},h.prototype._handleScriptToken=function(t){var e=this,r=this.parser.clear();r&&this.writeQueue.unshift(r),t.src=t.attrs.src||t.attrs.SRC,(t=this.options.beforeWriteToken(t))&&(t.src&&this.scriptStack.length?this.deferredRemote=t:this._onScriptStart(t),this._writeScriptToken(t,function(){e._onScriptDone(t)}))},h.prototype._handleStyleToken=function(t){var e=this.parser.clear();e&&this.writeQueue.unshift(e),t.type=t.attrs.type||t.attrs.TYPE||"text/css",(t=this.options.beforeWriteToken(t))&&this._writeStyleToken(t),e&&this.write()},h.prototype._writeStyleToken=function(t){var e=this._buildStyle(t);this._insertCursor(e,p),t.content&&(e.styleSheet&&!e.sheet?e.styleSheet.cssText=t.content:e.appendChild(this.doc.createTextNode(t.content)))},h.prototype._buildStyle=function(t){var r=this.doc.createElement(t.tagName);return r.setAttribute("type",t.type),i.eachKey(t.attrs,function(t,e){r.setAttribute(t,e)}),r},h.prototype._insertCursor=function(t,e){this._writeImpl('<span id="'+e+'"/>');var r=this.doc.getElementById(e);r&&r.parentNode.replaceChild(t,r)},h.prototype._onScriptStart=function(t){t.outerWrites=this.writeQueue,this.writeQueue=[],this.scriptStack.unshift(t)},h.prototype._onScriptDone=function(t){t===this.scriptStack[0]?(this.scriptStack.shift(),this.write.apply(this,t.outerWrites),!this.scriptStack.length&&this.deferredRemote&&(this._onScriptStart(this.deferredRemote),this.deferredRemote=null)):this.options.error({msg:"Bad script nesting or script finished twice"})},h.prototype._writeScriptToken=function(t,e){var r=this._buildScript(t),n=this._shouldRelease(r),a=this.options.afterAsync;t.src&&(r.src=t.src,this._scriptLoadHandler(r,n?a:function(){e(),a()}));try{this._insertCursor(r,d),r.src&&!n||e()}catch(t){this.options.error(t),e()}},h.prototype._buildScript=function(t){var r=this.doc.createElement(t.tagName);return i.eachKey(t.attrs,function(t,e){r.setAttribute(t,e)}),t.content&&(r.text=t.content),r},h.prototype._scriptLoadHandler=function(e,r){function n(){e=e.onload=e.onreadystatechange=e.onerror=null}var a=this.options.error;function t(){n(),null!=r&&r(),r=null}function o(t){n(),a(t),null!=r&&r(),r=null}function i(t,e){var r=t["on"+e];null!=r&&(t["_on"+e]=r)}i(e,"load"),i(e,"error"),s(e,{onload:function(){if(e._onload)try{e._onload.apply(this,Array.prototype.slice.call(arguments,0))}catch(t){o({msg:"onload handler failed "+t+" @ "+e.src})}t()},onerror:function(){if(e._onerror)try{e._onerror.apply(this,Array.prototype.slice.call(arguments,0))}catch(t){return void o({msg:"onerror handler failed "+t+" @ "+e.src})}o({msg:"remote script failed "+e.src})},onreadystatechange:function(){/^(loaded|complete)$/.test(e.readyState)&&t()}})},h.prototype._shouldRelease=function(t){return!/^script$/i.test(t.nodeName)||!!(this.options.releaseAsync&&t.src&&t.hasAttribute("async"))},h);function h(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,h),this.root=t,this.options=e,this.doc=t.ownerDocument,this.win=this.doc.defaultView||this.doc.parentWindow,this.parser=new o.default("",{autoFix:e.autoFix}),this.actuals=[t],this.proxyHistory="",this.proxyRoot=this.doc.createElement(t.nodeName),this.scriptStack=[],this.writeQueue=[],u(this.proxyRoot,"proxyof",0)}e.default=f},function(t,e,r){var n;n=function(){return a={},r.m=n=[function(t,e,r){"use strict";var n,a=r(1),o=(n=a)&&n.__esModule?n:{default:n};t.exports=o.default},function(t,e,r){"use strict";e.__esModule=!0;var n,i=u(r(2)),a=u(r(3)),o=r(6),s=(n=o)&&n.__esModule?n:{default:n},c=r(5);function u(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}var l={comment:/^<!--/,endTag:/^<\//,atomicTag:/^<\s*(script|style|noscript|iframe|textarea)[\s\/>]/i,startTag:/^</,chars:/^[^<]/},p=(d.prototype.append=function(t){this.stream+=t},d.prototype.prepend=function(t){this.stream=t+this.stream},d.prototype._readTokenImpl=function(){var t=this._peekTokenImpl();if(t)return this.stream=this.stream.slice(t.length),t},d.prototype._peekTokenImpl=function(){for(var t in l)if(l.hasOwnProperty(t)&&l[t].test(this.stream)){var e=a[t](this.stream);if(e)return"startTag"===e.type&&/script|style/i.test(e.tagName)?null:(e.text=this.stream.substr(0,e.length),e)}},d.prototype.peekToken=function(){return this._peekToken()},d.prototype.readToken=function(){return this._readToken()},d.prototype.readTokens=function(t){for(var e=void 0;e=this.readToken();)if(t[e.type]&&!1===t[e.type](e))return},d.prototype.clear=function(){var t=this.stream;return this.stream="",t},d.prototype.rest=function(){return this.stream},d);function d(){var t=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"",r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,d),this.stream=e;var n=!1,a={};for(var o in i)i.hasOwnProperty(o)&&(r.autoFix&&(a[o+"Fix"]=!0),n=n||a[o+"Fix"]);n?(this._readToken=(0,s.default)(this,a,function(){return t._readTokenImpl()}),this._peekToken=(0,s.default)(this,a,function(){return t._peekTokenImpl()})):(this._readToken=this._readTokenImpl,this._peekToken=this._peekTokenImpl)}for(var f in(e.default=p).tokenToString=function(t){return t.toString()},p.escapeAttributes=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[r]=(0,c.escapeQuotes)(t[r],null));return e},p.supports=i)i.hasOwnProperty(f)&&(p.browserHasFlaw=p.browserHasFlaw||!i[f]&&f)},function(t,e){"use strict";var r=!(e.__esModule=!0),n=!1,a=window.document.createElement("div");try{var o="<P><I></P></I>";a.innerHTML=o,e.tagSoup=r=a.innerHTML!==o}catch(t){e.tagSoup=r=!1}try{a.innerHTML="<P><i><P></P></i></P>",e.selfClose=n=2===a.childNodes.length}catch(t){e.selfClose=n=!1}a=null,e.tagSoup=r,e.selfClose=n},function(t,e,r){"use strict";e.__esModule=!0;var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e.comment=function(t){var e=t.indexOf("--\x3e");if(0<=e)return new s.CommentToken(t.substr(4,e-1),e+3)},e.chars=function(t){var e=t.indexOf("<");return new s.CharsToken(0<=e?e:t.length)},e.startTag=a,e.atomicTag=function(t){var e=a(t);if(e){var r=t.slice(e.length);if(r.match(new RegExp("</\\s*"+e.tagName+"\\s*>","i"))){var n=r.match(new RegExp("([\\s\\S]*?)</\\s*"+e.tagName+"\\s*>","i"));if(n)return new s.AtomicTagToken(e.tagName,n[0].length+e.length,e.attrs,e.booleanAttrs,n[1])}}},e.endTag=function(t){var e=t.match(c.endTag);if(e)return new s.EndTagToken(e[1],e[0].length)};var s=r(4),c={startTag:/^<([\-A-Za-z0-9_]+)((?:\s+[\w\-]+(?:\s*=?\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/,endTag:/^<\/([\-A-Za-z0-9_]+)[^>]*>/,attr:/(?:([\-A-Za-z0-9_]+)\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))|(?:([\-A-Za-z0-9_]+)(\s|$)+)/g,fillAttr:/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noresize|noshade|nowrap|readonly|selected)$/i};function a(t){var r,n,a;if(-1!==t.indexOf(">")){var e=t.match(c.startTag);if(e){var o=(r={},n={},a=e[2],e[2].replace(c.attr,function(t,e){arguments[2]||arguments[3]||arguments[4]||arguments[5]?arguments[5]?(r[arguments[5]]="",n[arguments[5]]=!0):r[e]=arguments[2]||arguments[3]||arguments[4]||c.fillAttr.test(e)&&e||"":r[e]="",a=a.replace(t,"")}),{v:new s.StartTagToken(e[1],e[0].length,r,n,!!e[3],a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""))});if("object"===(void 0===o?"undefined":i(o)))return o.v}}}},function(t,e,r){"use strict";e.__esModule=!0,e.EndTagToken=e.AtomicTagToken=e.StartTagToken=e.TagToken=e.CharsToken=e.CommentToken=e.Token=void 0;var i=r(5);function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}e.Token=function t(e,r){s(this,t),this.type=e,this.length=r,this.text=""},e.CommentToken=(n.prototype.toString=function(){return"\x3c!--"+this.content},n);function n(t,e){s(this,n),this.type="comment",this.length=e||(t?t.length:0),this.text="",this.content=t}e.CharsToken=(a.prototype.toString=function(){return this.text},a);function a(t){s(this,a),this.type="chars",this.length=t,this.text=""}var o=e.TagToken=(c.formatTag=function(t,e){var r=1<arguments.length&&void 0!==e?e:null,n="<"+t.tagName;for(var a in t.attrs)if(t.attrs.hasOwnProperty(a)){n+=" "+a;var o=t.attrs[a];void 0!==t.booleanAttrs&&void 0!==t.booleanAttrs[a]||(n+='="'+(0,i.escapeQuotes)(o)+'"')}return t.rest&&(n+=" "+t.rest),t.unary&&!t.html5Unary?n+="/>":n+=">",null!=r&&(n+=r+"</"+t.tagName+">"),n},c);function c(t,e,r,n,a){s(this,c),this.type=t,this.length=r,this.text="",this.tagName=e,this.attrs=n,this.booleanAttrs=a,this.unary=!1,this.html5Unary=!1}e.StartTagToken=(u.prototype.toString=function(){return o.formatTag(this)},u);function u(t,e,r,n,a,o){s(this,u),this.type="startTag",this.length=e,this.text="",this.tagName=t,this.attrs=r,this.booleanAttrs=n,this.html5Unary=!1,this.unary=a,this.rest=o}e.AtomicTagToken=(l.prototype.toString=function(){return o.formatTag(this,this.content)},l);function l(t,e,r,n,a){s(this,l),this.type="atomicTag",this.length=e,this.text="",this.tagName=t,this.attrs=r,this.booleanAttrs=n,this.unary=!1,this.html5Unary=!1,this.content=a}e.EndTagToken=(p.prototype.toString=function(){return"</"+this.tagName+">"},p);function p(t,e){s(this,p),this.type="endTag",this.length=e,this.text="",this.tagName=t}},function(t,e){"use strict";e.__esModule=!0,e.escapeQuotes=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"";return t?t.replace(/([^"]*)"/g,function(t,e){return/\\/.test(e)?e+'"':e+'\\"'}):e}},function(t,e){"use strict";e.__esModule=!0,e.default=function(r,n,e){var a=function(){var t=[];return t.last=function(){return this[this.length-1]},t.lastTagNameEq=function(t){var e=this.last();return e&&e.tagName&&e.tagName.toUpperCase()===t.toUpperCase()},t.containsTagName=function(t){for(var e,r=0;e=this[r];r++)if(e.tagName===t)return!0;return!1},t}(),o={startTag:function(t){var e=t.tagName;"TR"===e.toUpperCase()&&a.lastTagNameEq("TABLE")?(r.prepend("<TBODY>"),i()):n.selfCloseFix&&s.test(e)&&a.containsTagName(e)?a.lastTagNameEq(e)?u(r,a):(r.prepend("</"+t.tagName+">"),i()):t.unary||a.push(t)},endTag:function(t){a.last()?n.tagSoupFix&&!a.lastTagNameEq(t.tagName)?u(r,a):a.pop():n.tagSoupFix&&(e(),i())}};function i(){var t=function(t,e){var r=t.stream,n=c(e());return t.stream=r,n}(r,e);t&&o[t.type]&&o[t.type](t)}return function(){return i(),c(e())}};var r=/^(AREA|BASE|BASEFONT|BR|COL|FRAME|HR|IMG|INPUT|ISINDEX|LINK|META|PARAM|EMBED)$/i,s=/^(COLGROUP|DD|DT|LI|OPTIONS|P|TD|TFOOT|TH|THEAD|TR)$/i;function c(t){return t&&"startTag"===t.type&&(t.unary=r.test(t.tagName)||t.unary,t.html5Unary=!/\/>$/.test(t.text)),t}function u(t,e){var r=e.pop();t.prepend("</"+r.tagName+">")}}],r.c=a,r.p="",r(0);function r(t){if(a[t])return a[t].exports;var e=a[t]={exports:{},id:t,loaded:!1};return n[t].call(e.exports,e,e.exports,r),e.loaded=!0,e.exports}var n,a},t.exports=n()},function(t,e){"use strict";e.__esModule=!0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function a(t){return null!=t}function o(t,e,r){var n=void 0,a=t&&t.length||0;for(n=0;n<a;n++)e.call(r,t[n],n)}function i(t,e,r){for(var n in t)t.hasOwnProperty(n)&&e.call(r,n,t[n])}function r(t,e){return!(!t||"startTag"!==t.type&&"atomicTag"!==t.type||!("tagName"in t))&&!!~t.tagName.toLowerCase().indexOf(e)}e.existy=a,e.isFunction=function(t){return"function"==typeof t},e.each=o,e.eachKey=i,e.defaults=function(r,t){return r=r||{},i(t,function(t,e){a(r[t])||(r[t]=e)}),r},e.toArray=function(r){try{return Array.prototype.slice.call(r)}catch(t){var e=function(){var e=[];return o(r,function(t){e.push(t)}),{v:e}}();if("object"===(void 0===e?"undefined":n(e)))return e.v}},e.last=function(t){return t[t.length-1]},e.isTag=r,e.isScript=function(t){return r(t,"script")},e.isStyle=function(t){return r(t,"style")}}],r.c=a,r.p="",r(0);function r(t){if(a[t])return a[t].exports;var e=a[t]={exports:{},id:t,loaded:!1};return n[t].call(e.exports,e,e.exports,r),e.loaded=!0,e.exports}var n,a},t.exports=n()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.newNativeAssetManager=function(c){var u,l=0;function o(t){var e;try{e=JSON.parse(t)}catch(t){console.log("Error parsing response from cache host: ".concat(t))}return e}function r(t){var e=t.uuid,r="".concat(function(t,e){var r=void 0===e||""===e?v:e;return"https://".concat(void 0===t||""===t?n:t).concat(r)}(t.cacheHost,t.cachePath),"?uuid=").concat(e);(0,h.sendRequest)(r,function(t){var e=o(t);if(e&&e.adm){var r=o(e.adm);if(r&&r.assets){var n=function(t){var e,r=[];return t.assets.forEach(function(t){t.img?i.image[t.img.type]?r.push({key:i.image[t.img.type],value:t.img.url}):console.log("ERROR: Invalid image type for image asset"):t.data?i.data[t.data.type]?r.push({key:i.data[t.data.type],value:t.data.value}):console.log("ERROR: Invalid data type for data asset"):t.title&&r.push({key:"title",value:t.title.text})}),t.link&&(t.link.clicktrackers&&(e=t.link.clicktrackers),r.push({key:"clickUrl",value:t.link.url})),{assets:r,clicktrackers:e,imptrackers:t.imptrackers}}(r),a=f(c.document.body.innerHTML,n);c.document.body.innerHTML=a,u&&u({clickTrackers:n.clicktrackers,impTrackers:n.imptrackers})}}})}function a(n){var a=[],o=c.document,i=void 0!==c.pbNativeData;return Object.keys(s).forEach(function(t){var e=s[t],r=n&&!i?"".concat(e,":").concat(n):"".concat(e);~(~o.body.innerHTML.indexOf(r)?o.body.innerHTML.indexOf(r):o.head.innerHTML&&o.head.innerHTML.indexOf(r))&&a.push(e)}),a}function p(t,e){var r={message:"Prebid Native",action:"resizeNativeHeight",adId:t,height:e};c.parent.postMessage(JSON.stringify(r),"*")}function d(t){var e={};try{e=JSON.parse(t.data)}catch(t){return void(10<l++&&c.removeEventListener("message",d))}if("assetResponse"===e.message){var r=c.document.body.innerHTML,n=c.document.head.innerHTML,a=void 0!==c.pbNativeData;if(a&&e.adId!==c.pbNativeData.adId)return;if(n&&(c.document.head.innerHTML=f(n,e)),e.hasOwnProperty("rendererUrl")&&e.rendererUrl||a&&c.pbNativeData.hasOwnProperty("rendererUrl"))if(c.renderAd){var o=c.renderAd&&c.renderAd(e.assets)||"";c.document.body.innerHTML=r+o,u&&u(),c.removeEventListener("message",d),p(e.adId,document.body.clientHeight||document.body.offsetHeight)}else document.getElementById("pb-native-renderer")?document.getElementById("pb-native-renderer").addEventListener("load",function(){var t=c.renderAd&&c.renderAd(e.assets)||"";c.document.body.innerHTML=r+t,u&&u(),c.removeEventListener("message",d),p(e.adId,document.body.clientHeight||document.body.offsetHeight)}):(0,h.loadScript)(c,a&&c.pbNativeData.hasOwnProperty("rendererUrl")&&c.pbNativeData.rendererUrl||e.rendererUrl,function(){var t=c.renderAd&&c.renderAd(e.assets)||"";c.document.body.innerHTML=r+t,u&&u(),c.removeEventListener("message",d),p(e.adId,document.body.clientHeight||document.body.offsetHeight)});else if(e.hasOwnProperty("adTemplate")&&e.adTemplate||a&&c.pbNativeData.hasOwnProperty("adTemplate")){var i=f(a&&c.pbNativeData.hasOwnProperty("adTemplate")&&c.pbNativeData.adTemplate||e.adTemplate,e);c.document.body.innerHTML=r+i,u&&u(),c.removeEventListener("message",d),p(e.adId,document.body.clientHeight||document.body.offsetHeight)}else{var s=f(r,e);c.document.body.innerHTML=s,u&&u(),c.removeEventListener("message",d)}}}function f(t,e){var r=e.assets,a=e.adId,o=t;return(r||[]).forEach(function(t){var e=void 0!==c.pbNativeData,r=a&&!e?"".concat(s[t.key],":").concat(a):e?"##"+"".concat(s[t.key])+"##":"".concat(s[t.key]),n=new RegExp(r,"g");o=o.replace(n,t.value)}),o}return{loadAssets:function(t,e){var r=a(t),n=void 0!==c.pbNativeData;n&&c.pbNativeData.hasOwnProperty("assetsToReplace")&&c.pbNativeData.assetsToReplace.forEach(function(t){var e=t.match(/hb_native_/i)?t:s[t];e&&r.push(e)}),n&&c.pbNativeData.hasOwnProperty("requestAllAssets")&&c.pbNativeData.requestAllAssets?(u=e,function(t){c.addEventListener("message",d,!1);var e={message:"Prebid Native",action:"allAssetRequest",adId:t};c.parent.postMessage(JSON.stringify(e),"*")}(t)):0<r.length&&(u=e,function(t,e){c.addEventListener("message",d,!1);var r={message:"Prebid Native",action:"assetRequest",adId:t,assets:e};c.parent.postMessage(JSON.stringify(r),"*")}(t,r))},loadMobileAssets:function(t,e){0<a().length&&(u=e,r(t))}}};var h=r(0),s={title:"hb_native_title",body:"hb_native_body",body2:"hb_native_body2",privacyLink:"hb_native_privacy",sponsoredBy:"hb_native_brand",image:"hb_native_image",icon:"hb_native_icon",clickUrl:"hb_native_linkurl",displayUrl:"hb_native_displayurl",cta:"hb_native_cta",rating:"hb_native_rating",address:"hb_native_address",downloads:"hb_native_downloads",likes:"hb_native_likes",phone:"hb_native_phone",price:"hb_native_price",salePrice:"hb_native_saleprice",rendererUrl:"hb_renderer_url"},i={image:{1:"icon",3:"image"},data:{1:"sponsoredBy",2:"body",3:"rating",4:"likes",5:"downloads",6:"price",7:"salePrice",8:"phone",9:"address",10:"body2",11:"displayUrl",12:"cta"}},n="prebid.adnxs.com",v="/pbc/v1/cache"}]);
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <VAST version="2.0">
3
+ <Ad id="PrebidMobileAppEvent">
4
+ <InLine>
5
+ <AdSystem version="1.0">Prebid org</AdSystem>
6
+ <AdTitle>PrebidAppEvent</AdTitle>
7
+ <Impression><![CDATA[https://test.url.com]]></Impression>
8
+ <Creatives>
9
+ <Creative>
10
+ <Linear>
11
+ <Duration>00:00:02</Duration>
12
+ <MediaFiles>
13
+ <MediaFile delivery="progressive" height="540" id="539733616" type="video/mp4" width="960">
14
+ <![CDATA[https://test.url.com/gam_rewarded.mp4]]>
15
+ </MediaFile>
16
+ </MediaFiles>
17
+ </Linear>
18
+ </Creative>
19
+ </Creatives>
20
+ </InLine>
21
+ </Ad>
22
+ </VAST>
package/dist/uid.js CHANGED
@@ -1,3 +1,3 @@
1
- /* v1.9.0
2
- Updated : 2021-01-13 */
1
+ /* v1.13.0
2
+ Updated : 2021-12-09 */
3
3
  !function(r){var n={};function o(t){if(n[t])return n[t].exports;var e=n[t]={i:t,l:!1,exports:{}};return r[t].call(e.exports,e,e.exports,o),e.l=!0,e.exports}o.m=r,o.c=n,o.d=function(t,e,r){o.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=0)}([function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getBuyerUids=s,e.loadData=c;var n=function(t){if(t&&t.__esModule)return t;var e=u();if(e&&e.has(t))return e.get(t);var r={};if(null!=t){var n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in t)if(Object.prototype.hasOwnProperty.call(t,o)){var a=n?Object.getOwnPropertyDescriptor(t,o):null;a&&(a.get||a.set)?Object.defineProperty(r,o,a):r[o]=t[o]}}r.default=t,e&&e.set(t,r);return r}(r(1));function u(){if("function"!=typeof WeakMap)return null;var t=new WeakMap;return u=function(){return t},t}window.pbs=window.pbs||{},window.pbs.getBuyerUids=s;var o="https://prebid.adnxs.com/pbs/v1/getuids",a="ssp-buyeruids",i=14;function s(e){var t=n.getDataFromLocalStorage(a);if(l(t))c(e);else{try{t=JSON.parse(t)}catch(t){return void e(t,null)}delete t.lastUpdated,e(null,t)}}function c(e){l(n.getDataFromLocalStorage(a))&&n.ajax(o,function(t){try{(t=JSON.parse(t)).lastUpdated=n.timestamp(),n.setDataInLocalStorage(a,JSON.stringify(t)),delete t.lastUpdated,e(null,t)}catch(t){e(t,null)}},null,{withCredentials:!0})}function l(t){return!t||n.timestamp()>t.lastUpdated+24*i*60*60*1e3}c(function(){})},function(t,e,r){"use strict";function s(){return(s=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t}).apply(this,arguments)}function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function n(){try{return!!window.localStorage}catch(t){console.log("Local storage api disabled")}}Object.defineProperty(e,"__esModule",{value:!0}),e.setDataInLocalStorage=function(t,e){n()&&window.localStorage.setItem(t,e)},e.getDataFromLocalStorage=function(t){if(n())return window.localStorage.getItem(t)},e.hasLocalStorage=n,e.timestamp=function(){return(new Date).getTime()},e.ajax=function(t,e,r){var n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{};try{var o,a=n.method||(r?"POST":"GET"),u="object"===c(e)?e:{success:function(){console.log("xhr success")},error:function(t){console.log("xhr error",null,t)}};if("function"==typeof e&&(u.success=e),(o=new window.XMLHttpRequest).onreadystatechange=function(){if(4===o.readyState){var t=o.status;200<=t&&t<300||304===t?u.success(o.responseText,o):u.error(o.statusText,o)}},o.ontimeout=function(){console.log("xhr timeout after ",o.timeout,"ms")},"GET"===a&&r){var i=parseURL(t,n);s(i.search,r),t=formatURL(i)}o.open(a,t),o.timeout=3e3,n.withCredentials&&(o.withCredentials=!0),n.preflight&&o.setRequestHeader("X-Requested-With","XMLHttpRequest"),o.setRequestHeader("Content-Type",n.contentType||"text/plain"),"POST"===a&&r?o.send(r):o.send()}catch(t){console.log("xhr construction",t)}}}]);
package/gulpfile.js CHANGED
@@ -155,6 +155,11 @@ function buildUid() {
155
155
  .pipe(gulp.dest('dist'));
156
156
  }
157
157
 
158
+ function includeStaticVastXmlFile() {
159
+ let target = gulp.src('static/prebid-mobile-rewarded-vast.xml');
160
+ return target.pipe(gulp.dest('dist'));
161
+ }
162
+
158
163
  // Run the unit tests.
159
164
  //
160
165
  // By default, this runs in headless chrome.
@@ -200,7 +205,7 @@ function setupE2E(done) {
200
205
 
201
206
  gulp.task('test', gulp.series(clean, test));
202
207
 
203
- gulp.task('e2e-test', gulp.series(clean, setupE2E, gulp.parallel(buildDev, buildCookieSync, buildCookieSyncWithConsent, buildNativeDev, buildNativeRenderDev, buildUidDev, watch), test));
208
+ gulp.task('e2e-test', gulp.series(clean, setupE2E, gulp.parallel(buildDev, buildCookieSync, buildCookieSyncWithConsent, buildNativeDev, buildNativeRenderDev, buildUidDev, includeStaticVastXmlFile, watch), test));
204
209
 
205
210
  function watch(done) {
206
211
  const mainWatcher = gulp.watch([
@@ -215,7 +220,7 @@ function watch(done) {
215
220
  root: './'
216
221
  });
217
222
 
218
- mainWatcher.on('all', gulp.series(clean, gulp.parallel(buildDev, buildNativeDev, buildNativeRenderDev, buildCookieSync, buildCookieSyncWithConsent, buildUidDev), test));
223
+ mainWatcher.on('all', gulp.series(clean, gulp.parallel(buildDev, buildNativeDev, buildNativeRenderDev, buildCookieSync, buildCookieSyncWithConsent, buildUidDev, includeStaticVastXmlFile), test));
219
224
  done();
220
225
  }
221
226
 
@@ -223,9 +228,9 @@ function openWebPage() {
223
228
  return opens(`${(argv.https) ? 'https' : 'http'}://localhost:${port}`);
224
229
  }
225
230
 
226
- gulp.task('serve', gulp.series(clean, gulp.parallel(buildDev, buildNativeDev, buildNativeRenderDev, buildCookieSync, buildCookieSyncWithConsent, buildUidDev, watch, test), openWebPage));
231
+ gulp.task('serve', gulp.series(clean, gulp.parallel(buildDev, buildNativeDev, buildNativeRenderDev, buildCookieSync, buildCookieSyncWithConsent, buildUidDev, includeStaticVastXmlFile, watch, test), openWebPage));
227
232
 
228
- gulp.task('build', gulp.parallel(buildProd, buildCookieSync, buildCookieSyncWithConsent, buildNative, buildNativeRender, buildUid));
233
+ gulp.task('build', gulp.parallel(buildProd, buildCookieSync, buildCookieSyncWithConsent, buildNative, buildNativeRender, buildUid, includeStaticVastXmlFile));
229
234
 
230
235
  gulp.task('test-coverage', (done) => {
231
236
  new KarmaServer(karmaConfMaker(true, false, false), newKarmaCallback(done)).start();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prebid-universal-creative",
3
- "version": "1.9.0",
3
+ "version": "1.13.0",
4
4
  "description": "Universal creative for Prebid apps",
5
5
  "main": "dist/creative.js",
6
6
  "engines": {
package/src/cookieSync.js CHANGED
@@ -17,17 +17,22 @@ const VALID_ENDPOINTS = {
17
17
  const ENDPOINT = sanitizeEndpoint(parseQueryParam('endpoint', window.location.search));
18
18
  const ENDPOINT_ARGS = sanitizeEndpointArgs(parseQueryParam('args', window.location.search));
19
19
  const BIDDER_ARGS = sanitizeBidders(parseQueryParam('bidders', window.location.search));
20
+ const IS_AMP = sanitizeSource(parseQueryParam('source', window.location.search));
20
21
  const maxSyncCountParam = parseQueryParam('max_sync_count', window.location.search);
21
22
  const MAX_SYNC_COUNT = sanitizeSyncCount(parseInt((maxSyncCountParam) ? maxSyncCountParam : 10, 10));
22
23
  const GDPR = sanitizeGdpr(parseInt(parseQueryParam('gdpr', window.location.search), 10));
23
24
  const GDPR_CONSENT = sanitizeGdprConsent(parseQueryParam('gdpr_consent', window.location.search));
25
+
24
26
  /**
25
27
  * checks to make sure URL is valid. Regex from https://validatejs.org/#validators-url, https://gist.github.com/dperini/729294
26
28
  */
27
- const isValidUrl = new RegExp(/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i);
29
+ function isValidUrl(url) {
30
+ let regex = new RegExp(/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i);
31
+ return regex.test(url);
32
+ }
28
33
 
29
34
  function doBidderSync(type, url, bidder, done) {
30
- if (!url || !isValidUrl.test(url)) {
35
+ if (!url || !isValidUrl(url)) {
31
36
  console.log(`No valid sync url for bidder "${bidder}": ${url}`);
32
37
  done();
33
38
  } else if (type === 'image' || type === 'redirect') {
@@ -165,7 +170,11 @@ function parseQueryParam(name, urlSearch) {
165
170
  * Otherwise it will return a default value
166
171
  */
167
172
  function sanitizeEndpoint(value) {
168
- return (value && VALID_ENDPOINTS.hasOwnProperty(value)) ? VALID_ENDPOINTS[value] : 'https://prebid.adnxs.com/pbs/v1/cookie_sync';
173
+ let defaultUrl = 'https://prebid.adnxs.com/pbs/v1/cookie_sync';
174
+ if (!value) return defaultUrl;
175
+
176
+ let url = VALID_ENDPOINTS[value] || decodeURIComponent(value) || '';
177
+ return (isValidUrl(url)) ? url : defaultUrl;
169
178
  }
170
179
 
171
180
  function sanitizeEndpointArgs(value) {
@@ -181,6 +190,15 @@ function sanitizeEndpointArgs(value) {
181
190
  }
182
191
  }
183
192
 
193
+ /**
194
+ * Function to return if source set to amp
195
+ * @param {string} query param defining name of source
196
+ * @return {Boolean} returns if source is equal to amp
197
+ */
198
+ function sanitizeSource(value) {
199
+ return (value && value.toLowerCase() === 'amp');
200
+ }
201
+
184
202
  /**
185
203
  * If the value is a valid sync count (0 or a positive number), return it.
186
204
  * Otherwise return a really big integer (equivalent to "no sync").
@@ -239,6 +257,12 @@ function getStringifiedData(endPointArgs) {
239
257
 
240
258
  if(GDPR) data.gdpr = GDPR;
241
259
  if(GDPR_CONSENT) data.gdpr_consent = GDPR_CONSENT;
260
+ if(IS_AMP) data.filterSettings = {
261
+ iframe: {
262
+ bidders: '*',
263
+ filter: 'exclude'
264
+ }
265
+ };
242
266
  if(BIDDER_ARGS) data.bidders = BIDDER_ARGS;
243
267
 
244
268
  return JSON.stringify(data);
@@ -16,6 +16,8 @@ const VALID_ENDPOINTS = {
16
16
  };
17
17
  const ENDPOINT = sanitizeEndpoint(parseQueryParam('endpoint', window.location.search));
18
18
  const ENDPOINT_ARGS = sanitizeEndpointArgs(parseQueryParam('args', window.location.search));
19
+ const IS_AMP = sanitizeSource(parseQueryParam('source', window.location.search));
20
+ const BIDDER_ARGS = sanitizeBidders(parseQueryParam('bidders', window.location.search));
19
21
  const maxSyncCountParam = parseQueryParam('max_sync_count', window.location.search);
20
22
  const MAX_SYNC_COUNT = sanitizeSyncCount(parseInt((maxSyncCountParam) ? maxSyncCountParam : 10, 10));
21
23
  const TIMEOUT = sanitizeTimeout(parseInt(parseQueryParam('timeout', window.location.search), 10));
@@ -23,14 +25,17 @@ const DEFAULT_GDPR_SCOPE = sanitizeScope(parseInt(parseQueryParam('defaultGdprSc
23
25
 
24
26
  let consent = {};
25
27
  let syncRan = false;
28
+
26
29
  /**
27
30
  * checks to make sure URL is valid. Regex from https://validatejs.org/#validators-url, https://gist.github.com/dperini/729294
28
31
  */
29
- const isValidUrl = new RegExp(/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i);
30
-
32
+ function isValidUrl(url) {
33
+ let regex = new RegExp(/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i);
34
+ return regex.test(url);
35
+ }
31
36
 
32
37
  function doBidderSync(type, url, bidder, done) {
33
- if (!url || !isValidUrl.test(url)) {
38
+ if (!url || !isValidUrl(url)) {
34
39
  console.log(`No valid sync url for bidder "${bidder}": ${url}`);
35
40
  done();
36
41
  } else if (type === 'image' || type === 'redirect') {
@@ -168,7 +173,11 @@ function parseQueryParam(name, urlSearch) {
168
173
  * Otherwise it will return a default value
169
174
  */
170
175
  function sanitizeEndpoint(value) {
171
- return (value && VALID_ENDPOINTS.hasOwnProperty(value)) ? VALID_ENDPOINTS[value] : 'https://prebid.adnxs.com/pbs/v1/cookie_sync';
176
+ let defaultUrl = 'https://prebid.adnxs.com/pbs/v1/cookie_sync';
177
+ if (!value) return defaultUrl;
178
+
179
+ let url = VALID_ENDPOINTS[value] || decodeURIComponent(value) || '';
180
+ return (isValidUrl(url)) ? url : defaultUrl;
172
181
  }
173
182
 
174
183
  function sanitizeEndpointArgs(value) {
@@ -184,6 +193,15 @@ function sanitizeEndpointArgs(value) {
184
193
  }
185
194
  }
186
195
 
196
+ /**
197
+ * Function to return if source set to amp
198
+ * @param {string} query param defining name of source
199
+ * @return {Boolean} returns if source is equal to amp
200
+ */
201
+ function sanitizeSource(value) {
202
+ return (value && value.toLowerCase() === 'amp');
203
+ }
204
+
187
205
  /**
188
206
  * If the value is a valid sync count (0 or a positive number), return it.
189
207
  * Otherwise return a really big integer (equivalent to "no sync").
@@ -195,6 +213,22 @@ function sanitizeSyncCount(value) {
195
213
  return value;
196
214
  }
197
215
 
216
+ /**
217
+ * If the value is a non empty string return it.
218
+ * Otherwise it will return undefined.
219
+ */
220
+ function sanitizeBidders(value) {
221
+ if (value) {
222
+ var arr = value.split(',');
223
+ var filtered = arr.filter(function (el) {
224
+ return (el) ? true : false;
225
+ });
226
+ if(filtered.length > 0){
227
+ return filtered;
228
+ }
229
+ }
230
+ }
231
+
198
232
  /**
199
233
  * If the value is 0 or 1 return it.
200
234
  * Otherwise it will return default 1.
@@ -240,6 +274,14 @@ function getStringifiedData(endPointArgs) {
240
274
  var data = (endPointArgs && typeof endPointArgs === 'object') ? endPointArgs : {}
241
275
  data['limit'] = MAX_SYNC_COUNT;
242
276
 
277
+ if(IS_AMP) data.filterSettings = {
278
+ iframe: {
279
+ bidders: '*',
280
+ filter: 'exclude'
281
+ }
282
+ };
283
+ if(BIDDER_ARGS) data.bidders = BIDDER_ARGS;
284
+
243
285
  data = attachConsent(data);
244
286
 
245
287
  return JSON.stringify(data);
@@ -191,6 +191,7 @@ export function newRenderingManager(win, environment) {
191
191
  function responseCallback(isMobileApp, hbPb) {
192
192
  return function(response) {
193
193
  let bidObject = parseResponse(response);
194
+ let auctionPrice = bidObject.price || hbPb;
194
195
  let ad = utils.getCreativeCommentMarkup(bidObject);
195
196
  let width = (bidObject.width) ? bidObject.width : bidObject.w;
196
197
  let height = (bidObject.height) ? bidObject.height : bidObject.h;
@@ -201,8 +202,8 @@ export function newRenderingManager(win, environment) {
201
202
  }
202
203
 
203
204
  if (bidObject.adm) {
204
- if(hbPb) { // replace ${AUCTION_PRICE} macro with the hb_pb.
205
- bidObject.adm = bidObject.adm.replace('${AUCTION_PRICE}', hbPb);
205
+ if(auctionPrice) { // replace ${AUCTION_PRICE} macro with the bidObject.price or hb_pb.
206
+ bidObject.adm = bidObject.adm.replace('${AUCTION_PRICE}', auctionPrice);
206
207
  } else {
207
208
  /*
208
209
  From OpenRTB spec 2.5: If the source value is an optional parameter that was not specified, the macro will simply be removed (i.e., replaced with a zero-length string).
@@ -213,6 +214,22 @@ export function newRenderingManager(win, environment) {
213
214
  if (bidObject.nurl) {
214
215
  ad += utils.createTrackPixelHtml(decodeURIComponent(bidObject.nurl));
215
216
  }
217
+ if (bidObject.burl) {
218
+ let triggerBurl = function(){ utils.triggerPixel(bidObject.burl); };
219
+ if(isMobileApp) {
220
+ let mraidScript = utils.loadScript(win, 'mraid.js',
221
+ function() { // Success loading MRAID
222
+ let result = registerMRAIDViewableEvent(triggerBurl);
223
+ if (!result) {
224
+ triggerBurl(); // Error registering event
225
+ }
226
+ },
227
+ triggerBurl // Error loading MRAID
228
+ );
229
+ } else {
230
+ triggerBurl(); // Not a mobile app
231
+ }
232
+ }
216
233
  utils.writeAdHtml(ad);
217
234
  } else if (bidObject.nurl) {
218
235
  if(isMobileApp) {
@@ -226,9 +243,6 @@ export function newRenderingManager(win, environment) {
226
243
  utils.writeAdUrl(nurl, width, height);
227
244
  }
228
245
  }
229
- if (bidObject.burl) {
230
- utils.triggerBurl(bidObject.burl);
231
- }
232
246
  }
233
247
  };
234
248
 
@@ -300,6 +314,51 @@ export function newRenderingManager(win, environment) {
300
314
  }
301
315
  }
302
316
 
317
+ function registerMRAIDViewableEvent(callback) {
318
+
319
+ function exposureChangeListener(exposure) {
320
+ if (exposure > 0) {
321
+ mraid.removeEventListener('exposureChange', exposureChangeListener);
322
+ callback();
323
+ }
324
+ }
325
+
326
+ function viewableChangeListener(viewable) {
327
+ if (viewable) {
328
+ mraid.removeEventListener('viewableChange', viewableChangeListener);
329
+ callback();
330
+ }
331
+ }
332
+
333
+ function registerViewableChecks() {
334
+ if (win.MRAID_ENV && parseFloat(win.MRAID_ENV.version) >= 3) {
335
+ mraid.addEventListener('exposureChange', exposureChangeListener);
336
+ } else if(win.MRAID_ENV && parseFloat(win.MRAID_ENV.version) < 3) {
337
+ if (mraid.isViewable()) {
338
+ callback();
339
+ } else {
340
+ mraid.addEventListener('viewableChange', viewableChangeListener);
341
+ }
342
+ }
343
+ }
344
+
345
+ function readyListener() {
346
+ mraid.removeEventListener('ready', readyListener);
347
+ registerViewableChecks();
348
+ }
349
+
350
+ if (win.mraid && win.MRAID_ENV) {
351
+ if (mraid.getState() == 'loading') {
352
+ mraid.addEventListener('ready', readyListener);
353
+ } else {
354
+ registerViewableChecks();
355
+ }
356
+ return true;
357
+ } else {
358
+ return false;
359
+ }
360
+ }
361
+
303
362
  return {
304
363
  renderAd
305
364
  }
package/src/utils.js CHANGED
@@ -32,7 +32,9 @@ export function writeAdUrl(adUrl, width, height) {
32
32
  }
33
33
 
34
34
  export function writeAdHtml(markup) {
35
- postscribe(document.body, markup);
35
+ postscribe(document.body, markup, {
36
+ error: console.error
37
+ });
36
38
  }
37
39
 
38
40
  export function sendRequest(url, callback) {
@@ -56,27 +58,34 @@ export function getUUID() {
56
58
  return uuid;
57
59
  };
58
60
 
59
- export function loadScript(currentWindow, tagSrc, callback) {
61
+ export function loadScript(currentWindow, tagSrc, successCallback, errorCallback) {
60
62
  let doc = currentWindow.document;
61
63
  let scriptTag = doc.createElement('script');
62
64
  scriptTag.type = 'text/javascript';
63
65
 
64
- // Execute a callback if necessary
65
- if (callback && typeof callback === 'function') {
66
+ // Execute success callback if necessary
67
+ if (successCallback && typeof successCallback === 'function') {
66
68
  if (scriptTag.readyState) {
67
69
  scriptTag.onreadystatechange = function() {
68
70
  if (scriptTag.readyState === 'loaded' || scriptTag.readyState === 'complete') {
69
71
  scriptTag.onreadystatechange = null;
70
- callback();
72
+ successCallback();
71
73
  }
72
74
  };
73
75
  } else {
74
76
  scriptTag.onload = function() {
75
- callback();
77
+ successCallback();
76
78
  };
77
79
  }
78
80
  }
79
81
 
82
+ // Execute error callback if necessary
83
+ if (errorCallback && typeof errorCallback === 'function') {
84
+ scriptTag.onerror = function() {
85
+ errorCallback();
86
+ };
87
+ }
88
+
80
89
  scriptTag.src = tagSrc;
81
90
 
82
91
  //add the new script tag to the page
@@ -92,7 +101,7 @@ export function loadScript(currentWindow, tagSrc, callback) {
92
101
 
93
102
  /**
94
103
  * Return comment element
95
- * @param {*} bid
104
+ * @param {*} bid
96
105
  */
97
106
  export function getCreativeComment(bid) {
98
107
  return document.createComment(`Creative ${bid.crid} served by Prebid.js Header Bidding`);
@@ -100,7 +109,7 @@ export function getCreativeComment(bid) {
100
109
 
101
110
  /**
102
111
  * Returns comment element markup
103
- * @param {*} bid
112
+ * @param {*} bid
104
113
  */
105
114
  export function getCreativeCommentMarkup(bid) {
106
115
  let creativeComment = exports.getCreativeComment(bid);
@@ -131,7 +140,7 @@ export function transformAuctionTargetingData(tagData) {
131
140
  function isMacroPresent(paramName) {
132
141
  return !!(
133
142
  tagData[paramName] && (
134
- (isPlainObject(tagData[paramName]) && Object.keys(tagData[paramName]).length > 0) ||
143
+ (isPlainObject(tagData[paramName]) && Object.keys(tagData[paramName]).length > 0) ||
135
144
  (isStr(tagData[paramName]) && tagData[paramName] !== '')
136
145
  )
137
146
  );
@@ -162,7 +171,7 @@ export function transformAuctionTargetingData(tagData) {
162
171
  function convertKeyPairStringToMap(keywordsStr) {
163
172
  let keywordsMap = {};
164
173
  const keywordsArr = keywordsStr.split(',');
165
-
174
+
166
175
  if (keywordsArr.length > 0) {
167
176
  keywordsArr.forEach(function(keyPairStr) {
168
177
  let keyPairArr = keyPairStr.split(':');
@@ -175,7 +184,7 @@ export function transformAuctionTargetingData(tagData) {
175
184
  }
176
185
  return keywordsMap;
177
186
  }
178
-
187
+
179
188
  /**
180
189
  * Rename key if it's part of the auctionKeyMap object; if not, leave key as is
181
190
  * Store the resultant keypair in the auctionData object for later use in renderingManager.renderAd()
@@ -185,19 +194,19 @@ export function transformAuctionTargetingData(tagData) {
185
194
  Object.keys(adServerKeyMap).forEach(function(key) {
186
195
  let internalKey = auctionKeyMap[key] || key;
187
196
  auctionData[internalKey] = adServerKeyMap[key];
188
- });
197
+ });
189
198
  }
190
199
 
191
200
  let auctionData = {};
192
201
  let formattedKeyMap = {};
193
-
202
+
194
203
  if (isMacroPresent('targetingMap')) {
195
204
  formattedKeyMap = convertTargetingMapToNormalMap(tagData.targetingMap);
196
205
  } else if (isMacroPresent('targetingKeywords')) {
197
206
  formattedKeyMap = convertKeyPairStringToMap(tagData.targetingKeywords);
198
207
  }
199
208
  renameKnownAuctionKeys(formattedKeyMap);
200
-
209
+
201
210
  // set keys not in defined map macros (eg targetingMap) and/or the keys setup within a non-DFP adserver
202
211
  Object.keys(tagData).forEach(function (key) {
203
212
  if (key !== 'targetingMap' && key !== 'targetingKeywords' && isStr(tagData[key]) && tagData[key] !== '') {
@@ -211,7 +220,7 @@ export function parseUrl(url) {
211
220
  let parsed = document.createElement('a');
212
221
 
213
222
  parsed.href = decodeURIComponent(url);
214
-
223
+
215
224
  return {
216
225
  href: parsed.href,
217
226
  protocol: (parsed.protocol || '').replace(/:$/, ''),