prebid-universal-creative 1.16.0 → 1.17.1
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.
- package/.circleci/config.yml +44 -30
- package/.github/workflows/codeql.yml +98 -0
- package/README.md +2 -2
- package/dist/0df2612ebfffd5ad651a.max.js +1050 -0
- package/dist/amp.js +3 -3
- package/dist/banner.js +3 -3
- package/dist/creative.js +3 -3
- package/dist/load-cookie-with-consent.html +1 -1
- package/dist/load-cookie.html +1 -1
- package/dist/mobile.js +3 -3
- package/dist/native-render.js +3 -3
- package/dist/native-trk.js +3 -3
- package/dist/native.js +3 -3
- package/dist/uid.js +2 -2
- package/dist/video.js +3 -3
- package/gulpfile.js +12 -24
- package/integ-test/fixtures/test.js +79 -0
- package/integ-test/pages/amp.html +80 -0
- package/integ-test/pages/banner.html +96 -0
- package/integ-test/pages/native_legacy.html +107 -0
- package/integ-test/spec/amp_spec.js +111 -0
- package/integ-test/spec/banner_spec.js +85 -0
- package/integ-test/spec/native_legacy_spec.js +213 -0
- package/package.json +7 -13
- package/playwright.config.js +108 -0
- package/src/adHtmlRender.js +15 -0
- package/src/cookieSync.js +3 -0
- package/src/cookieSyncWithConsent.js +3 -0
- package/src/domHelper.js +25 -15
- package/src/dynamicRenderer.js +56 -0
- package/src/messaging.js +23 -2
- package/src/mobileAndAmpRender.js +17 -20
- package/src/nativeAssetManager.js +98 -79
- package/src/nativeORTBTrackerManager.js +1 -1
- package/src/nativeRenderManager.js +7 -12
- package/src/nativeTrackerManager.js +2 -2
- package/src/renderingManager.js +13 -19
- package/test/helpers/mocks.js +1 -0
- package/test/spec/dynamicRenderer_spec.js +167 -0
- package/test/spec/messaging_spec.js +98 -3
- package/test/spec/mobileAndAmpRender_spec.js +59 -66
- package/test/spec/nativeAssetManager_spec.js +73 -23
- package/test/spec/renderingManager_spec.js +20 -6
- package/webpack.conf.js +0 -1
- package/.nvmrc +0 -1
- package/dist/creative.max.js +0 -3102
- package/src/postscribeRender.js +0 -10
- package/test/e2e/specs/hello_world_banner_non_sf.spec.js +0 -14
- package/test/e2e/specs/outstream_non_sf.spec.js +0 -14
- package/test/e2e/specs/outstream_sf.spec.js +0 -14
- package/wdio.conf.js +0 -50
package/dist/native.js
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
/* prebid-universal-creative v1.
|
2
|
-
Updated :
|
3
|
-
!function(n){var r={};function a(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.m=n,a.c=r,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=2)}([function(e,t,n){"use strict";t.c=function(e,t){var n=new XMLHttpRequest;n.addEventListener("load",function(){t(n.responseText)}),n.open("GET",e),n.send()},t.a=function(e,t,n,r){var a=e.document,i=a.createElement("script");i.type="text/javascript",n&&"function"==typeof n&&(i.readyState?i.onreadystatechange=function(){"loaded"!==i.readyState&&"complete"!==i.readyState||(i.onreadystatechange=null,n())}:i.onload=function(){n()});r&&"function"==typeof r&&(i.onerror=function(){r()});i.src=t;var o=a.getElementsByTagName("head");(o=o.length?o:a.getElementsByTagName("body")).length&&(o=o[0]).insertBefore(i,o.firstChild);return i},t.b=function(e){var t=document.createElement("a");return t.href=decodeURIComponent(e),{href:t.href,protocol:(t.protocol||"").replace(/:$/,""),hostname:t.hostname,port:+t.port,pathname:t.pathname.replace(/^(?!\/)/,"/"),hash:(t.hash||"").replace(/^#/,""),host:(t.host||window.location.host).replace(/:(443|80)$/,"")}};n(6)},function(e,t,n){"use strict";t.a=function(t){var i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:window,o=function(){if(null==t)return null;var e=Object(r.b)(t);return e.protocol+"://"+e.host}();return function(e,t){if(null==o)throw new Error("Missing pubUrl");var n;if(e=JSON.stringify(e),null==t)i.parent.postMessage(e,o);else{var r=new MessageChannel;(n=r.port1).onmessage=t,i.addEventListener("message",a),i.parent.postMessage(e,o,[r.port2])}return function(){null!=n&&(i.removeEventListener("message",a),n.onmessage=null,n=null)};function a(e){(e.origin||e.originalEvent&&e.originalEvent.origin)===o&&t(e)}}};var r=n(0)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3),a=Object(r.a)(window);window.ucTag=window.ucTag||{},window.ucTag.renderAd=a.renderNativeAd},function(e,t,n){"use strict";t.a=function(i){var o,c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:a.a,s=2<arguments.length&&void 0!==arguments[2]?arguments[2]:r.a;return{renderNativeAd:function(e,t){function n(e,t,n){o({message:"Prebid Event",adId:e,event:t?"adRenderSucceeded":"adRenderFailed",info:n})}window.pbNativeData=t,o=c(t.pubUrl,i);try{var r=s(window,t);if(null!=t.adId){if(t.hasOwnProperty("rendererUrl")&&!t.rendererUrl.match(/##.*##/i)){var a=e.createElement("SCRIPT");a.src=t.rendererUrl,a.id="pb-native-renderer",e.body.appendChild(a)}r.loadAssets(t.adId,function(){n(t.adId,!0)},function(e){n(t.adId,!1,{reason:"exception",message:e.message})})}else n(null,!1,{reason:"missingDocOrAdid"}),console.warn("Prebid Native Tag object was missing 'adId'.")}catch(e){n(t&&t.adId,!1,{reason:"exception",message:e.message}),console.error("Error rendering ad",e)}}}};var r=n(4),a=n(1)},function(e,t,n){"use strict";t.a=function(c,e){var t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:w.a;e.clickUrlUnesc&&e.clickUrlUnesc!==I&&(U=e.clickUrlUnesc);var s,d,a,n=e.pubUrl,l=t(n,c),u=0;function v(){null!=a&&(a(),a=null)}function i(e){var t;try{t=JSON.parse(e)}catch(e){console.log("Error parsing response from cache host: ".concat(e))}return t}function r(e){var t=e.uuid,n="".concat(function(e,t){var n=void 0===t||""===t?T:t;return"https://".concat(void 0===e||""===e?N:e).concat(n)}(e.cacheHost,e.cachePath),"?uuid=").concat(t);Object(_.c)(n,function(e){var t=i(e);if(t&&t.adm){var n=i(t.adm);if(n&&n.assets){var r=function(e){var t,n=[];return e.assets.forEach(function(e){e.img?E.image[e.img.type]?n.push({key:E.image[e.img.type],value:e.img.url}):console.log("ERROR: Invalid image type for image asset"):e.data?E.data[e.data.type]?n.push({key:E.data[e.data.type],value:e.data.value}):console.log("ERROR: Invalid data type for data asset"):e.title&&n.push({key:"title",value:e.title.text})}),e.link&&(e.link.clicktrackers&&(t=e.link.clicktrackers),n.push({key:"clickUrl",value:e.link.url})),{assets:n,clicktrackers:t,imptrackers:e.imptrackers,eventtrackers:e.eventtrackers}}(n),a=g(c.document.body.innerHTML,r);c.document.body.innerHTML=a,s&&s({clickTrackers:r.clicktrackers,impTrackers:r.imptrackers,eventtrackers:r.eventtrackers})}}})}function f(){return void 0!==c.pbNativeData}function p(e,t){return t&&!f()?"".concat(e,":").concat(t):f()?"##".concat(e,"##"):e}function h(s){for(var e=arguments.length,d=new Array(1<e?e-1:0),t=1;t<e;t++)d[t-1]=arguments[t];return Object.values(A).reduce(function(e,t){var n=p(t,s),r=!0,a=!1,i=void 0;try{for(var o,c=d.filter(Boolean)[Symbol.iterator]();!(r=(o=c.next()).done);r=!0){if(0<=o.value.indexOf(n)){e.push(t);break}}}catch(e){a=!0,i=e}finally{try{r||null==c.return||c.return()}finally{if(a)throw i}}return e},[])}function o(e){return h(e,c.document.body.innerHTML,c.document.head.innerHTML)}function b(e){try{var t={};try{t=JSON.parse(e.data)}catch(e){if(10<u++)throw v(),e;return}if("assetResponse"===t.message){t.clickUrlUnesc=U;var n=c.document.body.innerHTML,r=c.document.head.innerHTML;if(f()&&t.adId!==c.pbNativeData.adId)return;o=s,s=function(){Object(y.b)(t.adId,l),Object(y.a)(t.adId,l),o&&o()},r&&(c.document.head.innerHTML=g(r,t)),t.assets=t.assets||[];var a=t.assets;if(t.ortb&&(a.ortb=t.ortb),t.hasOwnProperty("rendererUrl")&&t.rendererUrl||f()&&c.pbNativeData.hasOwnProperty("rendererUrl"))if(c.renderAd)m(c.renderAd&&c.renderAd(a)||"",t);else document.getElementById("pb-native-renderer")?document.getElementById("pb-native-renderer").addEventListener("load",function(){m(c.renderAd&&c.renderAd(a)||"",t)}):Object(_.a)(c,f()&&c.pbNativeData.hasOwnProperty("rendererUrl")&&c.pbNativeData.rendererUrl||t.rendererUrl,function(){m(c.renderAd&&c.renderAd(a)||"",t)});else if(t.hasOwnProperty("adTemplate")&&t.adTemplate||f()&&c.pbNativeData.hasOwnProperty("adTemplate")){m(g(f()&&c.pbNativeData.hasOwnProperty("adTemplate")&&c.pbNativeData.adTemplate||t.adTemplate,t),t)}else{var i=g(n,t);c.document.body.innerHTML=i,s&&s(),v()}}}catch(e){d&&d(e)}var o}function m(e,t){if(!Object(k.a)(window)){var n=function(e){for(var t,n=e;n!==e.top;){if(!(t=n.parent).frames||!t.frames.length)return null;for(var r=0;r<t.frames.length;r++)if(t.frames[r]===n){if(!t.document)return null;var a=!0,i=!1,o=void 0;try{for(var c,s=t.document.getElementsByTagName("iframe")[Symbol.iterator]();!(a=(c=s.next()).done);a=!0){var d=c.value;if(!d.contentWindow)return null;if(d.contentWindow===n)return d.parentElement}}catch(e){i=!0,o=e}finally{try{a||null==s.return||s.return()}finally{if(i)throw o}}}}}(c);if(n&&n.children&&n.children[0]){var r=n.children[0];if("1"===r.width&&"1"===r.height){var a=n.getBoundingClientRect().width;c.document.body.style.width="".concat(a,"px")}}}e=e.replaceAll(I,t.clickUrlUnesc||""),c.document.body.innerHTML+=e,s&&s(),c.removeEventListener("message",b),v();function i(){return function(e,t,n){l({message:"Prebid Native",action:"resizeNativeHeight",adId:e,height:t,width:n})}(t.adId,document.body.clientHeight||document.body.offsetHeight,document.body.clientWidth)}"complete"===document.readyState?i():window.onload=i,"function"==typeof window.postRenderAd&&window.postRenderAd(t)}function g(a,e){var i=e.assets,t=e.ortb,o=e.adId;if(t)a=function(t,e){return e.assets.forEach(function(e){t=t.replaceAll("##hb_native_asset_id_".concat(e.id,"##"),function(e){return e.img?e.img.url:e.data?e.data.value:e.title?e.title.text:e.video?e.video.vasttag:""}(e)),e.link&&e.link.url&&(t=t.replaceAll("##hb_native_asset_link_id_".concat(e.id,"##"),e.link.url))}),t=t.replaceAll(/##hb_native_asset_id_\d+##/gm,""),e.privacy&&(t=t.replaceAll("##hb_native_privacy##",e.privacy)),e.link&&(t=t.replaceAll("##hb_native_linkurl##",e.link.url)),t}(a,t);else if(!Array.isArray(i))return a;return i=i||[],h(o,a).forEach(function(t){var e=p(t,o),n=new RegExp(e,"g"),r=i.find(function(e){return t===A[e.key]});a=a.replace(n,r?r.value:"")}),a}return{loadAssets:function(e,t,n){d=n;var r=o(e);f()&&c.pbNativeData.hasOwnProperty("assetsToReplace")&&c.pbNativeData.assetsToReplace.forEach(function(e){var t=e.match(/hb_native_/i)?e:A[e];t&&r.push(t)}),f()&&c.pbNativeData.hasOwnProperty("requestAllAssets")&&c.pbNativeData.requestAllAssets?(s=t,a=function(e){return l({message:"Prebid Native",action:"allAssetRequest",adId:e},b)}(e)):0<r.length?(s=t,a=function(e,t){return l({message:"Prebid Native",action:"assetRequest",adId:e,assets:t},b)}(e,r)):n&&n(new Error("No assets to load: no placeholders found in template"))},loadMobileAssets:function(e,t){0<o().length&&(s=t,r(e))}}};var y=n(5),_=n(0),w=n(1),k=n(7),A={title:"hb_native_title",body:"hb_native_body",body2:"hb_native_body2",privacyLink:"hb_native_privacy",privacyIcon:"hb_native_privicon",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"},E={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",T="/pbc/v1/cache",I="%%CLICK_URL_UNESC%%",U=""},function(e,t,n){"use strict";t.b=function(e,t){t({message:"Prebid Native",action:"fireNativeImpressionTrackers",adId:e})},t.a=function(e,r){for(var a={message:"Prebid Native",action:"click",adId:e},t=document.getElementsByClassName(i)||[],n=0;n<t.length;n++)t[n].addEventListener("click",function(e){var t=e.target,n=t&&t.getAttribute(o);a.assetId=n,r(a)},!0)};n(0);var i="pb-click",o="hb_native_asset_id"},function(e,t,n){"use strict";t.a=function(e,t){var n=document.createElement("iframe");return n.setAttribute("frameborder",0),n.setAttribute("scrolling","no"),n.setAttribute("marginheight",0),n.setAttribute("marginwidth",0),n.setAttribute("TOPMARGIN",0),n.setAttribute("LEFTMARGIN",0),n.setAttribute("allowtransparency","true"),n.setAttribute("width",t),n.setAttribute("height",e),n}},function(e,t,n){"use strict";t.a=function(e){return!(!e.$sf||!e.$sf.ext)}}]);
|
1
|
+
/* prebid-universal-creative v1.17.1
|
2
|
+
Updated : 2025-03-19 */
|
3
|
+
!function(n){var r={};function a(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.m=n,a.c=r,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=3)}([function(e,t,n){"use strict";t.c=function(e,t){var n=new XMLHttpRequest;n.addEventListener("load",function(){t(n.responseText)}),n.open("GET",e),n.send()},t.a=function(e,t,n,r){var a=e.document,i=a.createElement("script");i.type="text/javascript",n&&"function"==typeof n&&(i.readyState?i.onreadystatechange=function(){"loaded"!==i.readyState&&"complete"!==i.readyState||(i.onreadystatechange=null,n())}:i.onload=function(){n()});r&&"function"==typeof r&&(i.onerror=function(){r()});i.src=t;var o=a.getElementsByTagName("head");(o=o.length?o:a.getElementsByTagName("body")).length&&(o=o[0]).insertBefore(i,o.firstChild);return i},t.b=function(e){var t=document.createElement("a");return t.href=decodeURIComponent(e),{href:t.href,protocol:(t.protocol||"").replace(/:$/,""),hostname:t.hostname,port:+t.port,pathname:t.pathname.replace(/^(?!\/)/,"/"),hash:(t.hash||"").replace(/^#/,""),host:(t.host||window.location.host).replace(/:(443|80)$/,"")}};n(2)},function(e,t,n){"use strict";t.a=function(t){var i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:window,o=function(){if(null==t)return null;var e=Object(r.b)(t);return e.protocol+"://"+e.host}();function e(e){return e&&e.frames&&e.frames.__pb_locator__}var c=i.parent;try{for(;null!=c&&c!==i.top&&!e(c);)c=c.parent;e(c)||(c=i.parent)}catch(e){}return function(e,t){if(null==o)throw new Error("Missing pubUrl");var n;if(e=JSON.stringify(e),null==t)c.postMessage(e,o);else{var r=new MessageChannel;(n=r.port1).onmessage=t,i.addEventListener("message",a),c.postMessage(e,o,[r.port2])}return function(){null!=n&&(i.removeEventListener("message",a),n.onmessage=null,n=null)};function a(e){(e.origin||e.originalEvent&&e.originalEvent.origin)===o&&t(e)}}},t.b=function(e,t){return a({adId:e,message:i,event:t?c:o},t?{info:t}:null)};var r=n(0);function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var i="Prebid Event",o="adRenderSucceeded",c="adRenderFailed"},function(e,t,n){"use strict";function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var n=[],r=!0,a=!1,i=void 0;try{for(var o,c=e[Symbol.iterator]();!(r=(o=c.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,i=e}finally{try{r||null==c.return||c.return()}finally{if(a)throw i}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function a(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},a=e.createElement("iframe");return Object.entries(r({frameborder:0,scrolling:"no",marginheight:0,marginwidth:0,TOPMARGIN:0,LEFTMARGIN:0,allowtransparency:"true"},t)).forEach(function(e){var t=i(e,2),n=t[0],r=t[1];a.setAttribute(n,r)}),a}t.b=a,t.a=function(e,t){return a(document,{height:e,width:t})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4),a=Object(r.a)(window);window.ucTag=window.ucTag||{},window.ucTag.renderAd=a.renderNativeAd},function(e,t,n){"use strict";t.a=function(i){var o,c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:d.a,s=2<arguments.length&&void 0!==arguments[2]?arguments[2]:r.a;return{renderNativeAd:function(e,t){function n(e,t){o(Object(d.b)(e,t))}window.pbNativeData=t,o=c(t.pubUrl,i);try{var r=s(window,t);if(null!=t.adId){if(t.hasOwnProperty("rendererUrl")&&!t.rendererUrl.match(/##.*##/i)){var a=e.createElement("SCRIPT");a.src=t.rendererUrl,a.id="pb-native-renderer",e.body.appendChild(a)}r.loadAssets(t.adId,function(){n(t.adId)},function(e){n(t.adId,{reason:"exception",message:e.message})})}else n(null,{reason:"missingDocOrAdid"}),console.warn("Prebid Native Tag object was missing 'adId'.")}catch(e){n(t&&t.adId,{reason:"exception",message:e.message}),console.error("Error rendering ad",e)}}}};var r=n(5),d=n(1)},function(e,t,n){"use strict";t.a=function(s,e){var t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:w.a;e.clickUrlUnesc&&e.clickUrlUnesc!==I&&(U=e.clickUrlUnesc);var d,l,a,n=e.pubUrl,u=t(n,s),f=0;function v(){null!=a&&(a(),a=null)}function i(e){var t;try{t=JSON.parse(e)}catch(e){console.log("Error parsing response from cache host: ".concat(e))}return t}function r(e){var t=e.uuid,n="".concat(function(e,t){var n=void 0===t||""===t?T:t;return"https://".concat(void 0===e||""===e?N:e).concat(n)}(e.cacheHost,e.cachePath),"?uuid=").concat(t);Object(_.c)(n,function(e){var t=i(e);if(t&&t.adm){var n=i(t.adm);if(n&&n.assets){var r=function(e){var t,n=[];return e.assets.forEach(function(e){e.img?E.image[e.img.type]?n.push({key:E.image[e.img.type],value:e.img.url}):console.log("ERROR: Invalid image type for image asset"):e.data?E.data[e.data.type]?n.push({key:E.data[e.data.type],value:e.data.value}):console.log("ERROR: Invalid data type for data asset"):e.title&&n.push({key:"title",value:e.title.text})}),e.link&&(e.link.clicktrackers&&(t=e.link.clicktrackers),n.push({key:"clickUrl",value:e.link.url})),{assets:n,clicktrackers:t,imptrackers:e.imptrackers,eventtrackers:e.eventtrackers}}(n),a=y(s.document.body.innerHTML,r);s.document.body.innerHTML=a,d&&d({clickTrackers:r.clicktrackers,impTrackers:r.imptrackers,eventtrackers:r.eventtrackers})}}})}function p(){return void 0!==s.pbNativeData}function h(e,t){return t&&!p()?"".concat(e,":").concat(t):p()?"##".concat(e,"##"):e}function c(s){for(var e=arguments.length,d=new Array(1<e?e-1:0),t=1;t<e;t++)d[t-1]=arguments[t];return Object.values(A).reduce(function(e,t){var n=h(t,s),r=!0,a=!1,i=void 0;try{for(var o,c=d.filter(Boolean)[Symbol.iterator]();!(r=(o=c.next()).done);r=!0){if(0<=o.value.indexOf(n)){e.push(t);break}}}catch(e){a=!0,i=e}finally{try{r||null==c.return||c.return()}finally{if(a)throw i}}return e},[])}function o(e){return c(e,s.document.body.innerHTML,s.document.head.innerHTML)}function b(c){return function(e){try{var t={};try{t=JSON.parse(e.data)}catch(e){if(10<f++)throw v(),e;return}if("assetResponse"===t.message&&t.adId===c){if(Object(O.a)(t))return void Object(O.b)(c,t,u,s);t.clickUrlUnesc=U;var n=s.document.body.innerHTML,r=s.document.head.innerHTML;o=d,d=function(){Object(g.b)(t.adId,u),Object(g.a)(t.adId,u),o&&o()},r&&(s.document.head.innerHTML=y(r,t)),t.assets=t.assets||[];var a=t.assets;if(t.ortb&&(a.ortb=t.ortb),t.hasOwnProperty("rendererUrl")&&t.rendererUrl||p()&&s.pbNativeData.hasOwnProperty("rendererUrl"))if(s.renderAd)m(s.renderAd&&s.renderAd(a)||"",t);else document.getElementById("pb-native-renderer")?document.getElementById("pb-native-renderer").addEventListener("load",function(){m(s.renderAd&&s.renderAd(a)||"",t)}):Object(_.a)(s,p()&&s.pbNativeData.hasOwnProperty("rendererUrl")&&s.pbNativeData.rendererUrl||t.rendererUrl,function(){m(s.renderAd&&s.renderAd(a)||"",t)});else if(t.hasOwnProperty("adTemplate")&&t.adTemplate||p()&&s.pbNativeData.hasOwnProperty("adTemplate")){m(y(p()&&s.pbNativeData.hasOwnProperty("adTemplate")&&s.pbNativeData.adTemplate||t.adTemplate,t),t)}else{var i=y(n,t);s.document.body.innerHTML=i,d&&d(),v()}}}catch(e){l&&l(e)}var o}}function m(e,t){if(!Object(k.a)(window)){var n=function(e){try{for(var t,n=e;n!==e.top;){if(!(t=n.parent).frames||!t.frames.length)return null;for(var r=0;r<t.frames.length;r++)if(t.frames[r]===n){if(!t.document)return null;var a=!0,i=!1,o=void 0;try{for(var c,s=t.document.getElementsByTagName("iframe")[Symbol.iterator]();!(a=(c=s.next()).done);a=!0){var d=c.value;if(!d.contentWindow)return null;if(d.contentWindow===n)return d.parentElement}}catch(e){i=!0,o=e}finally{try{a||null==s.return||s.return()}finally{if(i)throw o}}}}}catch(e){}}(s);if(n&&n.children&&n.children[0]){var r=n.children[0];if("1"===r.width&&"1"===r.height){var a=n.getBoundingClientRect().width;s.document.body.style.width="".concat(a,"px")}}}e=e.replaceAll(I,t.clickUrlUnesc||""),s.document.body.innerHTML+=e,d&&d(),v();function i(){return function(e,t,n){u({message:"Prebid Native",action:"resizeNativeHeight",adId:e,height:t,width:n})}(t.adId,document.body.clientHeight||document.body.offsetHeight,1<document.body.clientWidth?document.body.clientWidth:void 0)}"complete"===document.readyState?i():window.onload=i,"function"==typeof window.postRenderAd&&window.postRenderAd(t)}function y(a,e){var i=e.assets,t=e.ortb,o=e.adId;if(t)a=function(t,e){return e.assets.forEach(function(e){t=t.replaceAll("##hb_native_asset_id_".concat(e.id,"##"),function(e){return e.img?e.img.url:e.data?e.data.value:e.title?e.title.text:e.video?e.video.vasttag:""}(e)),e.link&&e.link.url&&(t=t.replaceAll("##hb_native_asset_link_id_".concat(e.id,"##"),e.link.url))}),t=t.replaceAll(/##hb_native_asset_id_\d+##/gm,""),e.privacy&&(t=t.replaceAll("##hb_native_privacy##",e.privacy)),e.link&&(t=t.replaceAll("##hb_native_linkurl##",e.link.url)),t}(a,t);else if(!Array.isArray(i))return a;return i=i||[],c(o,a).forEach(function(t){var e=h(t,o),n=new RegExp(e,"g"),r=i.find(function(e){return t===A[e.key]});a=a.replace(n,r?r.value:"")}),a}return{loadAssets:function(e,t,n){l=n;var r=o(e);p()&&s.pbNativeData.hasOwnProperty("assetsToReplace")&&s.pbNativeData.assetsToReplace.forEach(function(e){var t=e.match(/hb_native_/i)?e:A[e];t&&r.push(t)}),p()&&s.pbNativeData.hasOwnProperty("requestAllAssets")&&s.pbNativeData.requestAllAssets?(d=t,a=function(e){return u({message:"Prebid Native",action:"allAssetRequest",adId:e},b(e))}(e)):0<r.length?(d=t,a=function(e,t){return u({message:"Prebid Native",action:"assetRequest",adId:e,assets:t},b(e))}(e,r)):n&&n(new Error("No assets to load: no placeholders found in template"))},loadMobileAssets:function(e,t){0<o().length&&(d=t,r(e))}}};var g=n(6),_=n(0),w=n(1),k=n(7),O=n(8),A={title:"hb_native_title",body:"hb_native_body",body2:"hb_native_body2",privacyLink:"hb_native_privacy",privacyIcon:"hb_native_privicon",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"},E={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",T="/pbc/v1/cache",I="%%CLICK_URL_UNESC%%",U=""},function(e,t,n){"use strict";t.b=function(e,t){t({message:"Prebid Native",action:"fireNativeImpressionTrackers",adId:e})},t.a=function(e,r){for(var a={message:"Prebid Native",action:"click",adId:e},t=document.getElementsByClassName(i)||[],n=0;n<t.length;n++)t[n].addEventListener("pointerdown",function(e){var t=e.target,n=t&&t.getAttribute(o);a.assetId=n,r(a)},!0)};n(0);var i="pb-click",o="hb_native_asset_id"},function(e,t,n){"use strict";t.a=function(e){return!(!e.$sf||!e.$sf.ext)}},function(e,t,n){"use strict";t.a=function(e){return"string"==typeof e.renderer&&parseInt(e.rendererVersion,10)>=a},t.b=function(i,o,c){var s=3<arguments.length&&void 0!==arguments[3]?arguments[3]:window,d=4<arguments.length&&void 0!==arguments[4]?arguments[4]:r.b,l=d(s.document,{width:0,height:0,style:"display: none",srcdoc:"<script>".concat(o.renderer,"<\/script>"),name:"__pb_renderer__"});return new Promise(function(t,n){function r(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};c(Object(u.b)(i,{reason:e.reason||"exception",message:e.message})),e.stack&&console.error(e),n(e)}function a(e){return function(){try{return e.apply(this,arguments)}catch(e){r(e)}}}l.onload=a(function(){var e=l.contentWindow;e.Promise.resolve(e.render(o,{mkFrame:d,sendMessage:function(e,t,n){return c(f({adId:i,message:e},t),n?a(n):void 0)}},s)).then(function(){return c(Object(u.b)(i))},r).then(t)}),s.document.body.appendChild(l)})};var r=n(2),u=n(1);function f(){return(f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var a=3}]);
|
package/dist/uid.js
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
/* v1.
|
2
|
-
Updated :
|
1
|
+
/* v1.17.1
|
2
|
+
Updated : 2025-03-19 */
|
3
3
|
!function(n){var o={};function r(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}r.m=n,r.c=o,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getBuyerUids=c,e.loadData=i;var o=n(1);window.pbs=window.pbs||{},window.pbs.getBuyerUids=c;var r="https://prebid.adnxs.com/pbs/v1/getuids",s="ssp-buyeruids",u=14;function c(e){var t=o.b(s);if(a(t))i(e);else{try{t=JSON.parse(t)}catch(t){return void e(t,null)}delete t.lastUpdated,e(null,t)}}function i(e){a(o.b(s))&&o.a(r,function(t){try{(t=JSON.parse(t)).lastUpdated=o.d(),o.c(s,JSON.stringify(t)),delete t.lastUpdated,e(null,t)}catch(t){e(t,null)}},null,{withCredentials:!0})}function a(t){return!t||o.d()>t.lastUpdated+24*u*60*60*1e3}i(function(){})},function(t,e,n){"use strict";function i(){return(i=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t}).apply(this,arguments)}function a(t){return(a="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 o(){try{return!!window.localStorage}catch(t){console.log("Local storage api disabled")}}e.c=function(t,e){o()&&window.localStorage.setItem(t,e)},e.b=function(t){if(o())return window.localStorage.getItem(t)},e.d=function(){return(new Date).getTime()},e.a=function(t,e,n){var o=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{};try{var r,s=o.method||(n?"POST":"GET"),u="object"===a(e)?e:{success:function(){console.log("xhr success")},error:function(t){console.log("xhr error",null,t)}};if("function"==typeof e&&(u.success=e),(r=new window.XMLHttpRequest).onreadystatechange=function(){if(4===r.readyState){var t=r.status;200<=t&&t<300||304===t?u.success(r.responseText,r):u.error(r.statusText,r)}},r.ontimeout=function(){console.log("xhr timeout after ",r.timeout,"ms")},"GET"===s&&n){var c=parseURL(t,o);i(c.search,n),t=formatURL(c)}r.open(s,t),r.timeout=3e3,o.withCredentials&&(r.withCredentials=!0),o.preflight&&r.setRequestHeader("X-Requested-With","XMLHttpRequest"),r.setRequestHeader("Content-Type",o.contentType||"text/plain"),"POST"===s&&n?r.send(n):r.send()}catch(t){console.log("xhr construction",t)}}}]);
|
package/dist/video.js
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
/* prebid-universal-creative v1.
|
2
|
-
Updated :
|
3
|
-
!function(
|
1
|
+
/* prebid-universal-creative v1.17.1
|
2
|
+
Updated : 2025-03-19 */
|
3
|
+
!function(t){var r={};function o(e){if(r[e])return r[e].exports;var n=r[e]={i:e,l:!1,exports:{}};return t[e].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=t,o.c=r,o.d=function(e,n,t){o.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,"a",n),n},o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},o.p="",o(o.s=3)}([function(e,n,t){"use strict";function a(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var t=[],r=!0,o=!1,a=void 0;try{for(var i,c=e[Symbol.iterator]();!(r=(i=c.next()).done)&&(t.push(i.value),!n||t.length!==n);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==c.return||c.return()}finally{if(o)throw a}}return t}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function r(){return(r=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}function o(e){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},o=e.createElement("iframe");return Object.entries(r({frameborder:0,scrolling:"no",marginheight:0,marginwidth:0,TOPMARGIN:0,LEFTMARGIN:0,allowtransparency:"true"},n)).forEach(function(e){var n=a(e,2),t=n[0],r=n[1];o.setAttribute(t,r)}),o}n.c=o,n.a=function(e,n){return o(document,{height:e,width:n})},n.b=function(e,n,t){var r;n=n||document,r=t?n.getElementsByTagName(t):n.getElementsByTagName("head");try{(r=r.length?r:n.getElementsByTagName("body")).length&&(r=r[0]).insertBefore(e,r.firstChild)}catch(e){}}},function(e,n,t){"use strict";n.b=function(n){var t={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 e(e){return!(!n[e]||!(function(e){return a(e,"Object")}(n[e])&&0<Object.keys(n[e]).length||i(n[e])&&""!==n[e]))}var r={},o={};e("targetingMap")?o=function(n){var t={};return Object.keys(n).forEach(function(e){Array.isArray(n[e])&&0<n[e].length&&(t[e]=n[e][0])}),t}(n.targetingMap):e("targetingKeywords")&&(o=function(e){var o={},n=e.split(",");return 0<n.length&&n.forEach(function(e){var n=e.split(":");if(2===n.length){var t=n[0],r=n[1];o[t]=r}}),o}(n.targetingKeywords));return function(n){Object.keys(n).forEach(function(e){r[t[e]||e]=n[e]})}(o),Object.keys(n).forEach(function(e){"targetingMap"!==e&&"targetingKeywords"!==e&&i(n[e])&&""!==n[e]&&(r[e]=n[e])}),r},n.a=function(e){var n=document.createElement("a");return n.href=decodeURIComponent(e),{href:n.href,protocol:(n.protocol||"").replace(/:$/,""),hostname:n.hostname,port:+n.port,pathname:n.pathname.replace(/^(?!\/)/,"/"),hash:(n.hash||"").replace(/^#/,""),host:(n.host||window.location.host).replace(/:(443|80)$/,"")}};t(0);function a(e,n){return Object.prototype.toString.call(e)==="[object "+n+"]"}function i(e){return a(e,"String")}},function(e,n,t){"use strict";n.a=function(n){var a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:window,i=function(){if(null==n)return null;var e=Object(r.a)(n);return e.protocol+"://"+e.host}();function e(e){return e&&e.frames&&e.frames.__pb_locator__}var c=a.parent;try{for(;null!=c&&c!==a.top&&!e(c);)c=c.parent;e(c)||(c=a.parent)}catch(e){}return function(e,n){if(null==i)throw new Error("Missing pubUrl");var t;if(e=JSON.stringify(e),null==n)c.postMessage(e,i);else{var r=new MessageChannel;(t=r.port1).onmessage=n,a.addEventListener("message",o),c.postMessage(e,i,[r.port2])}return function(){null!=t&&(a.removeEventListener("message",o),t.onmessage=null,t=null)};function o(e){(e.origin||e.originalEvent&&e.originalEvent.origin)===i&&n(e)}}},n.b=function(e,n){return o({adId:e,message:a,event:n?c:i},n?{info:n}:null)};var r=t(1);function o(){return(o=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}var a="Prebid Event",i="adRenderSucceeded",c="adRenderFailed"},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=t(4);window.ucTag=window.ucTag||{},window.ucTag.renderAd=r.a},function(e,n,t){"use strict";n.a=function(e,n){var t=Object(r.b)(n);Object(o.a)(window)?function(e,n){for(var t=!1,r=window,o=0;o<10;o++)if((r=r.parent).pbjs)try{r.pbjs.renderAd(e,n),t=!0;break}catch(e){continue}t||console.error("Unable to locate pbjs.renderAd function!")}(e,t.adId):function(l,d){var e=2<arguments.length&&void 0!==arguments[2]?arguments[2]:"",n=3<arguments.length?arguments[3]:void 0,t=l.location,r=e||l.location.hostname,o=t.protocol+"//"+r,f=Object(i.a)(n,l),h=function(e){return f(Object(i.b)(d,e))};function a(e){var n=e.message?"message":"data",t={};try{t=JSON.parse(e[n])}catch(e){return}if(t.message&&"Prebid Response"===t.message&&t.adId===d){if(Object(g.a)(t))return void Object(g.b)(d,t,f,l);try{var r=l.document.body,o=t.ad,a=t.adUrl,i=t.width,c=t.height;if("video"===t.mediaType)h({reason:"preventWritingOnMainDocument",message:"Cannot render video ad ".concat(d)}),console.log("Error trying to write ad.");else if(o){var s=Object(p.a)(t.height,t.width);r.appendChild(s),s.contentDocument.open(),s.contentDocument.write(o),s.contentDocument.close(),h()}else if(a){var u=Object(p.a)(c,i);u.style.display="inline",u.style.overflow="hidden",u.src=a,Object(p.b)(u,document,"body"),h()}else h({reason:"noAd",message:"No ad for ".concat(d)}),console.log("Error trying to write ad. No ad markup or adUrl for ".concat(d))}catch(e){h({reason:"exception",message:e.message}),console.log("Error in rendering ad",e)}}}f({message:"Prebid Request",adId:d,adServerDomain:o},a)}(window,t.adId,t.adServerDomain,t.pubUrl)};var r=t(1),o=t(5),p=t(0),i=t(2),g=t(6)},function(e,n,t){"use strict";n.a=function(e){var n=!1,t=e;for(;!n;){try{if(t.pbjs){n=!0;break}}catch(e){}if(t===window.top)break;t=t.parent}return n}},function(e,n,t){"use strict";n.a=function(e){return"string"==typeof e.renderer&&parseInt(e.rendererVersion,10)>=o},n.b=function(a,i,c){var s=3<arguments.length&&void 0!==arguments[3]?arguments[3]:window,u=4<arguments.length&&void 0!==arguments[4]?arguments[4]:r.c,l=u(s.document,{width:0,height:0,style:"display: none",srcdoc:"<script>".concat(i.renderer,"<\/script>"),name:"__pb_renderer__"});return new Promise(function(n,t){function r(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};c(Object(d.b)(a,{reason:e.reason||"exception",message:e.message})),e.stack&&console.error(e),t(e)}function o(e){return function(){try{return e.apply(this,arguments)}catch(e){r(e)}}}l.onload=o(function(){var e=l.contentWindow;e.Promise.resolve(e.render(i,{mkFrame:u,sendMessage:function(e,n,t){return c(f({adId:a,message:e},n),t?o(t):void 0)}},s)).then(function(){return c(Object(d.b)(a))},r).then(n)}),s.document.body.appendChild(l)})};var r=t(0),d=t(2);function f(){return(f=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(this,arguments)}var o=3}]);
|
package/gulpfile.js
CHANGED
@@ -17,6 +17,7 @@ const KarmaServer = require('karma').Server;
|
|
17
17
|
const karmaConfMaker = require('./karma.conf.maker');
|
18
18
|
const execa = require('execa');
|
19
19
|
const path = require('path');
|
20
|
+
const {execSync} = require('child_process');
|
20
21
|
|
21
22
|
const dateString = 'Updated : ' + (new Date()).toISOString().substring(0, 10);
|
22
23
|
const banner = '/* <%= creative.name %> v<%= creative.version %>\n' + dateString + ' */\n';
|
@@ -141,16 +142,12 @@ function includeStaticVastXmlFile() {
|
|
141
142
|
function buildProd({ inputFile, outputFile }) {
|
142
143
|
let cloned = _.cloneDeep(webpackConfig);
|
143
144
|
delete cloned.devtool;
|
144
|
-
|
145
|
+
cloned.output.filename = outputFile;
|
145
146
|
return gulp.src([inputFile])
|
146
147
|
.pipe(webpackStream(cloned))
|
147
148
|
.pipe(gulp.dest('dist'))
|
148
149
|
.pipe(uglify())
|
149
150
|
.pipe(header(banner, { creative: creative }))
|
150
|
-
.pipe(rename({
|
151
|
-
basename: outputFile.split('.')[0],
|
152
|
-
extname: `.${outputFile.split('.')[1]}`
|
153
|
-
}))
|
154
151
|
.pipe(gulp.dest('dist'));
|
155
152
|
}
|
156
153
|
|
@@ -205,20 +202,10 @@ function includeStaticVastXmlFile() {
|
|
205
202
|
//
|
206
203
|
// If --watch is given, the task will open the karma debug window
|
207
204
|
// If --browserstack is given, it will run the full suite of currently supported browsers.
|
208
|
-
// If --e2e is given, it will run test defined in ./test/e2e/specs in browserstack
|
209
205
|
|
210
206
|
function test(done) {
|
211
|
-
|
212
|
-
|
213
|
-
let wdioConf = path.join(__dirname, 'wdio.conf.js');
|
214
|
-
let wdioOpts = [
|
215
|
-
wdioConf
|
216
|
-
];
|
217
|
-
return execa(wdioCmd, wdioOpts, { stdio: 'inherit' });
|
218
|
-
} else {
|
219
|
-
let karmaConf = karmaConfMaker(false, argv.browserstack, argv.watch);
|
220
|
-
new KarmaServer(karmaConf, newKarmaCallback(done)).start();
|
221
|
-
}
|
207
|
+
let karmaConf = karmaConfMaker(false, argv.browserstack, argv.watch);
|
208
|
+
new KarmaServer(karmaConf, newKarmaCallback(done)).start();
|
222
209
|
}
|
223
210
|
|
224
211
|
function newKarmaCallback(done) {
|
@@ -237,17 +224,10 @@ function newKarmaCallback(done) {
|
|
237
224
|
}
|
238
225
|
}
|
239
226
|
|
240
|
-
function setupE2E(done) {
|
241
|
-
argv.e2e = true;
|
242
|
-
done();
|
243
|
-
}
|
244
|
-
|
245
227
|
gulp.task('test', gulp.series(clean, test));
|
246
228
|
|
247
229
|
const buildDevFunctions = [buildLegacyDev, buildBannerDev, buildVideoDev, buildAmpDev, buildMobileDev, buildNativeRenderLegacyDev, buildNativeDev, buildNativeRenderDev, buildCookieSync, buildCookieSyncWithConsent, buildUidDev, includeStaticVastXmlFile];
|
248
230
|
|
249
|
-
gulp.task('e2e-test', gulp.series(clean, setupE2E, gulp.parallel(...buildDevFunctions, watch), test));
|
250
|
-
|
251
231
|
function watch(done) {
|
252
232
|
const mainWatcher = gulp.watch([
|
253
233
|
'src/**/*.js',
|
@@ -275,6 +255,14 @@ gulp.task('test-coverage', (done) => {
|
|
275
255
|
new KarmaServer(karmaConfMaker(true, false, false), newKarmaCallback(done)).start();
|
276
256
|
});
|
277
257
|
|
258
|
+
function integTests(done) {
|
259
|
+
execSync('npx playwright test', {stdio: 'inherit'});
|
260
|
+
done();
|
261
|
+
}
|
262
|
+
|
263
|
+
gulp.task('integ-tests', gulp.series(clean, 'build', integTests));
|
264
|
+
|
265
|
+
|
278
266
|
gulp.task('view-coverage', (done) => {
|
279
267
|
const coveragePort = 1999;
|
280
268
|
const localhost = (argv.host) ? argv.host : 'localhost';
|
@@ -0,0 +1,79 @@
|
|
1
|
+
import {test as baseTest} from '@playwright/test';
|
2
|
+
import path from 'path';
|
3
|
+
import {expect} from '@playwright/test';
|
4
|
+
export {expect} from '@playwright/test';
|
5
|
+
import process from 'process'
|
6
|
+
export const BASE_URL = 'https://www.prebid.org/puc-test/';
|
7
|
+
export const PUC_URL = 'https://cdn.jsdelivr.net/npm/prebid-universal-creative@latest/dist/';
|
8
|
+
export const PBJS_URL = 'https://cdn.jsdelivr.net/npm/prebid.js@latest/dist/not-for-prod/prebid.js'
|
9
|
+
|
10
|
+
const LOCAL_PBJS_URL = 'http://localhost:9999/build/dev/prebid.js';
|
11
|
+
|
12
|
+
const REDIRECTS = {
|
13
|
+
[BASE_URL]: '../pages',
|
14
|
+
[PUC_URL]: '../../dist'
|
15
|
+
};
|
16
|
+
|
17
|
+
export const test = baseTest.extend({
|
18
|
+
/**
|
19
|
+
* Replace requests for "https://www.prebid.org" with the contents of files under "pages",
|
20
|
+
* and requests for the PUC CDN with contents of files under "dist".
|
21
|
+
*/
|
22
|
+
async context({context}, use) {
|
23
|
+
await Promise.all(
|
24
|
+
Object.entries(REDIRECTS).map(([url, localDir]) => {
|
25
|
+
context.route((u) => u.href.startsWith(url), (route, request) => {
|
26
|
+
const fpath = request.url().substring(url.length).split('?')[0];
|
27
|
+
route.fulfill({
|
28
|
+
path: path.resolve(__dirname, localDir, fpath)
|
29
|
+
});
|
30
|
+
});
|
31
|
+
})
|
32
|
+
);
|
33
|
+
if (process.env.LOCAL_PBJS) {
|
34
|
+
const localUrl = process.env.LOCAL_PBJS.startsWith('http') ? process.env.LOCAL_PBJS : LOCAL_PBJS_URL;
|
35
|
+
await context.route((u) => u.href.startsWith(PBJS_URL), (route) => route.fulfill({status: 302, headers: {Location: localUrl}}))
|
36
|
+
}
|
37
|
+
await use(context);
|
38
|
+
},
|
39
|
+
/**
|
40
|
+
* await crossLocator(selector): returns a locator for the first element matching 'selector' that appears on the
|
41
|
+
* page, across all frames.
|
42
|
+
*/
|
43
|
+
async crossLocator({page}, use) {
|
44
|
+
await use(function (selector) {
|
45
|
+
let n = 0;
|
46
|
+
return new Promise((resolve, reject) => {
|
47
|
+
async function frameLocator(frame) {
|
48
|
+
if (!frame.isDetached()) {
|
49
|
+
n++;
|
50
|
+
try {
|
51
|
+
await frame.waitForSelector(selector);
|
52
|
+
resolve(frame.locator(selector));
|
53
|
+
} catch (e) {
|
54
|
+
n--;
|
55
|
+
if (n === 0) {
|
56
|
+
reject(e);
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
60
|
+
}
|
61
|
+
page.on('frameattached', frameLocator);
|
62
|
+
function walkFrames(frame) {
|
63
|
+
frameLocator(frame);
|
64
|
+
frame.childFrames().forEach(walkFrames)
|
65
|
+
}
|
66
|
+
walkFrames(page.mainFrame());
|
67
|
+
})
|
68
|
+
})
|
69
|
+
},
|
70
|
+
async expectEvent({page}, use) {
|
71
|
+
await use(async function (predicate, numMatches = 1) {
|
72
|
+
await expect.poll(async () =>
|
73
|
+
((await page.evaluate(() => window.pbjs?.getEvents && window.pbjs.getEvents())) || [])
|
74
|
+
.filter(predicate)
|
75
|
+
.length === numMatches
|
76
|
+
).toBeTruthy();
|
77
|
+
});
|
78
|
+
}
|
79
|
+
});
|
@@ -0,0 +1,80 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
|
6
|
+
<link rel="canonical" href="https://www.prebid-org/puc-test/amp.html">
|
7
|
+
<style amp-boilerplate>body {
|
8
|
+
-webkit-animation: -amp-start 8s steps(1, end) 0s 1 normal both;
|
9
|
+
-moz-animation: -amp-start 8s steps(1, end) 0s 1 normal both;
|
10
|
+
-ms-animation: -amp-start 8s steps(1, end) 0s 1 normal both;
|
11
|
+
animation: -amp-start 8s steps(1, end) 0s 1 normal both
|
12
|
+
}
|
13
|
+
|
14
|
+
@-webkit-keyframes -amp-start {
|
15
|
+
from {
|
16
|
+
visibility: hidden
|
17
|
+
}
|
18
|
+
to {
|
19
|
+
visibility: visible
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
23
|
+
@-moz-keyframes -amp-start {
|
24
|
+
from {
|
25
|
+
visibility: hidden
|
26
|
+
}
|
27
|
+
to {
|
28
|
+
visibility: visible
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
@-ms-keyframes -amp-start {
|
33
|
+
from {
|
34
|
+
visibility: hidden
|
35
|
+
}
|
36
|
+
to {
|
37
|
+
visibility: visible
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
@-o-keyframes -amp-start {
|
42
|
+
from {
|
43
|
+
visibility: hidden
|
44
|
+
}
|
45
|
+
to {
|
46
|
+
visibility: visible
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
@keyframes -amp-start {
|
51
|
+
from {
|
52
|
+
visibility: hidden
|
53
|
+
}
|
54
|
+
to {
|
55
|
+
visibility: visible
|
56
|
+
}
|
57
|
+
}</style>
|
58
|
+
<noscript>
|
59
|
+
<style amp-boilerplate>body {
|
60
|
+
-webkit-animation: none;
|
61
|
+
-moz-animation: none;
|
62
|
+
-ms-animation: none;
|
63
|
+
animation: none
|
64
|
+
}</style>
|
65
|
+
</noscript>
|
66
|
+
<script async src="https://cdn.ampproject.org/v0.js"></script>
|
67
|
+
<script async custom-element="amp-ad" src="https://cdn.ampproject.org/v0/amp-ad-0.1.js"></script>
|
68
|
+
<title>AMP-RTC RP Test</title>
|
69
|
+
</head>
|
70
|
+
<body>
|
71
|
+
<h2>AMP-RTC RP Test</h2>
|
72
|
+
|
73
|
+
<amp-ad width="300" height="250"
|
74
|
+
type="doubleclick"
|
75
|
+
data-slot="/41758329/integ-test"
|
76
|
+
data-multi-size-validation="false"
|
77
|
+
rtc-config='{"vendors": {"prebidrubicon": {"REQUEST_ID": "14062-amp-300x50"}}}'
|
78
|
+
</amp-ad>
|
79
|
+
</body>
|
80
|
+
</html>
|
@@ -0,0 +1,96 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
|
4
|
+
<head>
|
5
|
+
<meta charset="UTF-8">
|
6
|
+
<title>Prebid.js Banner Test</title>
|
7
|
+
|
8
|
+
<!-- Prebid.js -->
|
9
|
+
<script async src="https://cdn.jsdelivr.net/npm/prebid.js@latest/dist/not-for-prod/prebid.js"></script>
|
10
|
+
|
11
|
+
<!-- Google Publisher Tag -->
|
12
|
+
<script async src="https://www.googletagservices.com/tag/js/gpt.js"></script>
|
13
|
+
|
14
|
+
<script>
|
15
|
+
var pbjs = pbjs || {};
|
16
|
+
pbjs.que = pbjs.que || [];
|
17
|
+
window.params = new URLSearchParams(window.location.search);
|
18
|
+
</script>
|
19
|
+
|
20
|
+
<script>
|
21
|
+
var googletag = googletag || {};
|
22
|
+
googletag.cmd = googletag.cmd || [];
|
23
|
+
|
24
|
+
googletag.cmd.push(function () {
|
25
|
+
googletag.pubads().disableInitialLoad();
|
26
|
+
});
|
27
|
+
|
28
|
+
pbjs.que.push(function () {
|
29
|
+
pbjs.setConfig({
|
30
|
+
debug: true,
|
31
|
+
debugging: {
|
32
|
+
enabled: true,
|
33
|
+
intercept: [
|
34
|
+
{
|
35
|
+
when: {},
|
36
|
+
then: JSON.parse(params.get('bidResponse'))
|
37
|
+
}
|
38
|
+
]
|
39
|
+
}
|
40
|
+
});
|
41
|
+
|
42
|
+
pbjs.requestBids({
|
43
|
+
bidsBackHandler: sendAdServerRequest,
|
44
|
+
adUnits: [
|
45
|
+
{
|
46
|
+
code: 'slot',
|
47
|
+
mediaTypes: {
|
48
|
+
banner: {
|
49
|
+
sizes: [[300, 250]],
|
50
|
+
}
|
51
|
+
},
|
52
|
+
bids: [{
|
53
|
+
bidder: 'appnexus',
|
54
|
+
params: {
|
55
|
+
placementId: 123
|
56
|
+
}
|
57
|
+
}]
|
58
|
+
}
|
59
|
+
]
|
60
|
+
});
|
61
|
+
});
|
62
|
+
|
63
|
+
function sendAdServerRequest() {
|
64
|
+
googletag.cmd.push(function () {
|
65
|
+
pbjs.que.push(function () {
|
66
|
+
pbjs.setTargetingForGPTAsync('slot');
|
67
|
+
googletag.pubads().refresh();
|
68
|
+
});
|
69
|
+
});
|
70
|
+
}
|
71
|
+
</script>
|
72
|
+
|
73
|
+
<script>
|
74
|
+
googletag.cmd.push(function () {
|
75
|
+
googletag
|
76
|
+
.defineSlot('/41758329/integ-test', [[300, 250]], 'slot')
|
77
|
+
.setTargeting('creative', params.get('creative'))
|
78
|
+
.addService(googletag.pubads());
|
79
|
+
|
80
|
+
googletag.pubads().enableSingleRequest();
|
81
|
+
googletag.enableServices();
|
82
|
+
});
|
83
|
+
</script>
|
84
|
+
</head>
|
85
|
+
|
86
|
+
<body>
|
87
|
+
<h2>Prebid.js Banner Ad Unit Test</h2>
|
88
|
+
<div id='slot'>
|
89
|
+
<script>
|
90
|
+
googletag.cmd.push(function () {
|
91
|
+
googletag.display('slot');
|
92
|
+
});
|
93
|
+
</script>
|
94
|
+
</div>
|
95
|
+
</body>
|
96
|
+
</html>
|
@@ -0,0 +1,107 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
|
4
|
+
<head>
|
5
|
+
<meta charset="UTF-8">
|
6
|
+
<title>Prebid.js Legacy Native Test</title>
|
7
|
+
|
8
|
+
<!-- Prebid.js -->
|
9
|
+
<script async src="https://cdn.jsdelivr.net/npm/prebid.js@latest/dist/not-for-prod/prebid.js"></script>
|
10
|
+
|
11
|
+
<!-- Google Publisher Tag -->
|
12
|
+
<script async src="https://www.googletagservices.com/tag/js/gpt.js"></script>
|
13
|
+
|
14
|
+
<script>
|
15
|
+
var pbjs = pbjs || {};
|
16
|
+
pbjs.que = pbjs.que || [];
|
17
|
+
window.params = new URLSearchParams(window.location.search);
|
18
|
+
</script>
|
19
|
+
|
20
|
+
<script>
|
21
|
+
var googletag = googletag || {};
|
22
|
+
googletag.cmd = googletag.cmd || [];
|
23
|
+
|
24
|
+
googletag.cmd.push(function () {
|
25
|
+
googletag.pubads().disableInitialLoad();
|
26
|
+
});
|
27
|
+
|
28
|
+
pbjs.que.push(function () {
|
29
|
+
pbjs.setConfig({
|
30
|
+
debug: true,
|
31
|
+
debugging: {
|
32
|
+
enabled: true,
|
33
|
+
intercept: [
|
34
|
+
{
|
35
|
+
when: {},
|
36
|
+
then: JSON.parse(params.get('bidResponse'))
|
37
|
+
}
|
38
|
+
]
|
39
|
+
}
|
40
|
+
});
|
41
|
+
|
42
|
+
pbjs.requestBids({
|
43
|
+
bidsBackHandler: sendAdServerRequest,
|
44
|
+
adUnits: [
|
45
|
+
{
|
46
|
+
code: 'slot',
|
47
|
+
mediaTypes: {
|
48
|
+
native: {
|
49
|
+
image: {
|
50
|
+
required: false,
|
51
|
+
},
|
52
|
+
title: {
|
53
|
+
required: true
|
54
|
+
},
|
55
|
+
body: {
|
56
|
+
required: true
|
57
|
+
},
|
58
|
+
clickUrl: {
|
59
|
+
required: true
|
60
|
+
}
|
61
|
+
}
|
62
|
+
},
|
63
|
+
bids: [{
|
64
|
+
bidder: 'appnexus',
|
65
|
+
params: {
|
66
|
+
placementId: 123
|
67
|
+
}
|
68
|
+
}]
|
69
|
+
}
|
70
|
+
]
|
71
|
+
});
|
72
|
+
});
|
73
|
+
|
74
|
+
function sendAdServerRequest() {
|
75
|
+
googletag.cmd.push(function () {
|
76
|
+
pbjs.que.push(function () {
|
77
|
+
pbjs.setTargetingForGPTAsync('slot');
|
78
|
+
googletag.pubads().refresh();
|
79
|
+
});
|
80
|
+
});
|
81
|
+
}
|
82
|
+
</script>
|
83
|
+
|
84
|
+
<script>
|
85
|
+
googletag.cmd.push(function () {
|
86
|
+
googletag
|
87
|
+
.defineSlot('/41758329/integ-test', params.get('banner') === 'true' ? [[640, 480]] : 'fluid', 'slot')
|
88
|
+
.setTargeting('creative', params.get('creative'))
|
89
|
+
.addService(googletag.pubads());
|
90
|
+
|
91
|
+
googletag.pubads().enableSingleRequest();
|
92
|
+
googletag.enableServices();
|
93
|
+
});
|
94
|
+
</script>
|
95
|
+
</head>
|
96
|
+
|
97
|
+
<body>
|
98
|
+
<h2>Prebid.js Legacy Native Ad Unit Test</h2>
|
99
|
+
<div id='slot'>
|
100
|
+
<script>
|
101
|
+
googletag.cmd.push(function () {
|
102
|
+
googletag.display('slot');
|
103
|
+
});
|
104
|
+
</script>
|
105
|
+
</div>
|
106
|
+
</body>
|
107
|
+
</html>
|