prebid-universal-creative 1.17.2 → 1.18.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.
- package/.circleci/config.yml +1 -1
- package/README.md +74 -7
- package/browsers.json +12 -12
- 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/{2088600fa2b5f5e3c29c.max.js → main.max.js} +403 -371
- 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 +3 -3
- package/dist/video.js +3 -3
- package/gulpfile.js +35 -11
- package/karma.conf.maker.js +22 -10
- package/package.json +15 -16
- package/src/cookieSync.js +2 -0
- package/src/cookieSyncWithConsent.js +2 -0
- package/src/mobileAndAmpRender.js +2 -2
- package/src/nativeAssetManager.js +1 -1
- package/src/nativeORTBTrackerManager.js +0 -2
- package/src/nativeTrackerManager.js +1 -1
- package/src/postscribeRender.js +63 -2
- package/src/renderingManager.js +1 -1
- package/test/spec/mobileAndAmpRender_spec.js +86 -93
- package/test/spec/nativeAssetManager_spec.js +20 -8
- package/test/spec/nativeORTBTrackerManager_spec.js +2 -2
- package/test/spec/nativeTrackerManager_spec.js +3 -8
- package/test/spec/renderingManager_spec.js +4 -24
- package/test/spec/uid_spec.js +10 -29
- package/test/test_index.js +1 -1
- package/webpack.conf.js +12 -15
|
@@ -1,86 +1,28 @@
|
|
|
1
|
-
/******/ (function(
|
|
2
|
-
/******/
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
/******/ function __webpack_require__(moduleId) {
|
|
7
|
-
/******/
|
|
8
|
-
/******/ // Check if module is in cache
|
|
9
|
-
/******/ if(installedModules[moduleId]) {
|
|
10
|
-
/******/ return installedModules[moduleId].exports;
|
|
11
|
-
/******/ }
|
|
12
|
-
/******/ // Create a new module (and put it into the cache)
|
|
13
|
-
/******/ var module = installedModules[moduleId] = {
|
|
14
|
-
/******/ i: moduleId,
|
|
15
|
-
/******/ l: false,
|
|
16
|
-
/******/ exports: {}
|
|
17
|
-
/******/ };
|
|
18
|
-
/******/
|
|
19
|
-
/******/ // Execute the module function
|
|
20
|
-
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
21
|
-
/******/
|
|
22
|
-
/******/ // Flag the module as loaded
|
|
23
|
-
/******/ module.l = true;
|
|
24
|
-
/******/
|
|
25
|
-
/******/ // Return the exports of the module
|
|
26
|
-
/******/ return module.exports;
|
|
27
|
-
/******/ }
|
|
28
|
-
/******/
|
|
29
|
-
/******/
|
|
30
|
-
/******/ // expose the modules object (__webpack_modules__)
|
|
31
|
-
/******/ __webpack_require__.m = modules;
|
|
32
|
-
/******/
|
|
33
|
-
/******/ // expose the module cache
|
|
34
|
-
/******/ __webpack_require__.c = installedModules;
|
|
35
|
-
/******/
|
|
36
|
-
/******/ // define getter function for harmony exports
|
|
37
|
-
/******/ __webpack_require__.d = function(exports, name, getter) {
|
|
38
|
-
/******/ if(!__webpack_require__.o(exports, name)) {
|
|
39
|
-
/******/ Object.defineProperty(exports, name, {
|
|
40
|
-
/******/ configurable: false,
|
|
41
|
-
/******/ enumerable: true,
|
|
42
|
-
/******/ get: getter
|
|
43
|
-
/******/ });
|
|
44
|
-
/******/ }
|
|
45
|
-
/******/ };
|
|
46
|
-
/******/
|
|
47
|
-
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
48
|
-
/******/ __webpack_require__.n = function(module) {
|
|
49
|
-
/******/ var getter = module && module.__esModule ?
|
|
50
|
-
/******/ function getDefault() { return module['default']; } :
|
|
51
|
-
/******/ function getModuleExports() { return module; };
|
|
52
|
-
/******/ __webpack_require__.d(getter, 'a', getter);
|
|
53
|
-
/******/ return getter;
|
|
54
|
-
/******/ };
|
|
55
|
-
/******/
|
|
56
|
-
/******/ // Object.prototype.hasOwnProperty.call
|
|
57
|
-
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
|
58
|
-
/******/
|
|
59
|
-
/******/ // __webpack_public_path__
|
|
60
|
-
/******/ __webpack_require__.p = "";
|
|
61
|
-
/******/
|
|
62
|
-
/******/ // Load entry module and return exports
|
|
63
|
-
/******/ return __webpack_require__(__webpack_require__.s = 4);
|
|
64
|
-
/******/ })
|
|
65
|
-
/************************************************************************/
|
|
66
|
-
/******/ ([
|
|
67
|
-
/* 0 */
|
|
68
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
1
|
+
/******/ (function() { // webpackBootstrap
|
|
2
|
+
/******/ var __webpack_modules__ = ([
|
|
3
|
+
/* 0 */,
|
|
4
|
+
/* 1 */
|
|
5
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
69
6
|
|
|
70
7
|
"use strict";
|
|
71
|
-
/* harmony export (immutable) */ __webpack_exports__["i"] = triggerPixel;
|
|
72
|
-
/* harmony export (immutable) */ __webpack_exports__["a"] = createTrackPixelHtml;
|
|
73
|
-
/* harmony export (immutable) */ __webpack_exports__["j"] = writeAdUrl;
|
|
74
|
-
/* harmony export (immutable) */ __webpack_exports__["g"] = sendRequest;
|
|
75
|
-
/* harmony export (immutable) */ __webpack_exports__["d"] = getUUID;
|
|
76
|
-
/* harmony export (immutable) */ __webpack_exports__["e"] = loadScript;
|
|
77
|
-
/* harmony export (immutable) */ __webpack_exports__["b"] = getCreativeComment;
|
|
78
|
-
/* harmony export (immutable) */ __webpack_exports__["c"] = getCreativeCommentMarkup;
|
|
79
|
-
/* harmony export (immutable) */ __webpack_exports__["h"] = transformAuctionTargetingData;
|
|
80
|
-
/* harmony export (immutable) */ __webpack_exports__["f"] = parseUrl;
|
|
81
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__domHelper__ = __webpack_require__(1);
|
|
82
8
|
|
|
83
9
|
|
|
10
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
11
|
+
Object.defineProperty(exports, "__esModule", ({
|
|
12
|
+
value: true
|
|
13
|
+
}));
|
|
14
|
+
exports.createTrackPixelHtml = createTrackPixelHtml;
|
|
15
|
+
exports.getCreativeComment = getCreativeComment;
|
|
16
|
+
exports.getCreativeCommentMarkup = getCreativeCommentMarkup;
|
|
17
|
+
exports.getUUID = getUUID;
|
|
18
|
+
exports.loadScript = loadScript;
|
|
19
|
+
exports.parseUrl = parseUrl;
|
|
20
|
+
exports.sendRequest = sendRequest;
|
|
21
|
+
exports.transformAuctionTargetingData = transformAuctionTargetingData;
|
|
22
|
+
exports.triggerPixel = triggerPixel;
|
|
23
|
+
exports.writeAdUrl = writeAdUrl;
|
|
24
|
+
var domHelper = _interopRequireWildcard(__webpack_require__(2));
|
|
25
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) { "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); } return f; })(e, t); }
|
|
84
26
|
/**
|
|
85
27
|
* Inserts an image pixel with the specified `url` for cookie sync
|
|
86
28
|
* @param {string} url URL string of the image pixel to load
|
|
@@ -103,7 +45,7 @@ function createTrackPixelHtml(url) {
|
|
|
103
45
|
return img;
|
|
104
46
|
}
|
|
105
47
|
function writeAdUrl(adUrl, width, height) {
|
|
106
|
-
var iframe =
|
|
48
|
+
var iframe = domHelper.getEmptyIframe(height, width);
|
|
107
49
|
iframe.src = adUrl;
|
|
108
50
|
document.body.appendChild(iframe);
|
|
109
51
|
}
|
|
@@ -298,18 +240,25 @@ function isStr(object) {
|
|
|
298
240
|
;
|
|
299
241
|
|
|
300
242
|
/***/ }),
|
|
301
|
-
/*
|
|
302
|
-
/***/ (function(
|
|
243
|
+
/* 2 */
|
|
244
|
+
/***/ (function(__unused_webpack_module, exports) {
|
|
303
245
|
|
|
304
246
|
"use strict";
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
Object.defineProperty(exports, "__esModule", ({
|
|
250
|
+
value: true
|
|
251
|
+
}));
|
|
252
|
+
exports.getEmptyIframe = getEmptyIframe;
|
|
253
|
+
exports.insertElement = insertElement;
|
|
254
|
+
exports.makeIframe = makeIframe;
|
|
255
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
256
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
257
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
258
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) { n[e] = r[e]; } return n; }
|
|
259
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0) { ; } } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
260
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
261
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } } return n; }, _extends.apply(null, arguments); }
|
|
313
262
|
/**
|
|
314
263
|
* domHelper: a collection of helpful dom things
|
|
315
264
|
*/
|
|
@@ -374,16 +323,155 @@ function insertElement(elm, doc, target) {
|
|
|
374
323
|
}
|
|
375
324
|
|
|
376
325
|
/***/ }),
|
|
377
|
-
/*
|
|
378
|
-
/***/ (function(
|
|
326
|
+
/* 3 */
|
|
327
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
379
328
|
|
|
380
329
|
"use strict";
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
Object.defineProperty(exports, "__esModule", ({
|
|
333
|
+
value: true
|
|
334
|
+
}));
|
|
335
|
+
exports.renderBannerOrDisplayAd = renderBannerOrDisplayAd;
|
|
336
|
+
exports.renderCrossDomain = renderCrossDomain;
|
|
337
|
+
exports.renderLegacy = renderLegacy;
|
|
338
|
+
var _utils = __webpack_require__(1);
|
|
339
|
+
var _environment = __webpack_require__(4);
|
|
340
|
+
var _domHelper = __webpack_require__(2);
|
|
341
|
+
var _messaging = __webpack_require__(5);
|
|
342
|
+
var _dynamicRenderer = __webpack_require__(6);
|
|
343
|
+
function renderBannerOrDisplayAd(doc, dataObject) {
|
|
344
|
+
var targetingData = (0, _utils.transformAuctionTargetingData)(dataObject);
|
|
345
|
+
if (!(0, _environment.canLocatePrebid)(window)) {
|
|
346
|
+
renderCrossDomain(window, targetingData.adId, targetingData.adServerDomain, targetingData.pubUrl);
|
|
347
|
+
} else {
|
|
348
|
+
renderLegacy(doc, targetingData.adId);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Calls prebid.js renderAd function to render ad
|
|
354
|
+
* @param {Object} doc Document
|
|
355
|
+
* @param {string} adId Id of creative to render
|
|
356
|
+
*/
|
|
357
|
+
function renderLegacy(doc, adId) {
|
|
358
|
+
var found = false;
|
|
359
|
+
var w = window;
|
|
360
|
+
for (var i = 0; i < 10; i++) {
|
|
361
|
+
w = w.parent;
|
|
362
|
+
if (w.pbjs) {
|
|
363
|
+
try {
|
|
364
|
+
w.pbjs.renderAd(doc, adId);
|
|
365
|
+
found = true;
|
|
366
|
+
break;
|
|
367
|
+
} catch (e) {
|
|
368
|
+
continue;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
if (!found) {
|
|
373
|
+
console.error("Unable to locate pbjs.renderAd function!");
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* Render ad in safeframe using postmessage
|
|
379
|
+
* @param {string} adId Id of creative to render
|
|
380
|
+
* @param {string} pubAdServerDomain publisher adserver domain name
|
|
381
|
+
* @param {string} pubUrl Url of publisher page
|
|
382
|
+
*/
|
|
383
|
+
function renderCrossDomain(win, adId) {
|
|
384
|
+
var pubAdServerDomain = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
385
|
+
var pubUrl = arguments.length > 3 ? arguments[3] : undefined;
|
|
386
|
+
var windowLocation = win.location;
|
|
387
|
+
var adServerDomain = pubAdServerDomain || win.location.hostname;
|
|
388
|
+
var fullAdServerDomain = windowLocation.protocol + '//' + adServerDomain;
|
|
389
|
+
var sendMessage = (0, _messaging.prebidMessenger)(pubUrl, win);
|
|
390
|
+
var signalRenderResult = function signalRenderResult(errorInfo) {
|
|
391
|
+
return sendMessage((0, _messaging.renderEventMessage)(adId, errorInfo));
|
|
392
|
+
};
|
|
393
|
+
function renderAd(ev) {
|
|
394
|
+
var key = ev.message ? "message" : "data";
|
|
395
|
+
var adObject = {};
|
|
396
|
+
try {
|
|
397
|
+
adObject = JSON.parse(ev[key]);
|
|
398
|
+
} catch (e) {
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
if (adObject.message && adObject.message === "Prebid Response" && adObject.adId === adId) {
|
|
402
|
+
if ((0, _dynamicRenderer.hasDynamicRenderer)(adObject)) {
|
|
403
|
+
(0, _dynamicRenderer.runDynamicRenderer)(adId, adObject, sendMessage, win);
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
406
|
+
try {
|
|
407
|
+
var body = win.document.body;
|
|
408
|
+
var ad = adObject.ad;
|
|
409
|
+
var url = adObject.adUrl;
|
|
410
|
+
var width = adObject.width;
|
|
411
|
+
var height = adObject.height;
|
|
412
|
+
if (adObject.mediaType === "video") {
|
|
413
|
+
signalRenderResult({
|
|
414
|
+
reason: "preventWritingOnMainDocument",
|
|
415
|
+
message: "Cannot render video ad ".concat(adId)
|
|
416
|
+
});
|
|
417
|
+
console.log("Error trying to write ad.");
|
|
418
|
+
} else if (ad) {
|
|
419
|
+
var iframe = (0, _domHelper.getEmptyIframe)(adObject.height, adObject.width);
|
|
420
|
+
body.appendChild(iframe);
|
|
421
|
+
iframe.contentDocument.open();
|
|
422
|
+
iframe.contentDocument.write(ad);
|
|
423
|
+
iframe.contentDocument.close();
|
|
424
|
+
signalRenderResult();
|
|
425
|
+
} else if (url) {
|
|
426
|
+
var _iframe = (0, _domHelper.getEmptyIframe)(height, width);
|
|
427
|
+
_iframe.style.display = "inline";
|
|
428
|
+
_iframe.style.overflow = "hidden";
|
|
429
|
+
_iframe.src = url;
|
|
430
|
+
(0, _domHelper.insertElement)(_iframe, document, "body");
|
|
431
|
+
signalRenderResult();
|
|
432
|
+
} else {
|
|
433
|
+
signalRenderResult({
|
|
434
|
+
reason: "noAd",
|
|
435
|
+
message: "No ad for ".concat(adId)
|
|
436
|
+
});
|
|
437
|
+
console.log("Error trying to write ad. No ad markup or adUrl for ".concat(adId));
|
|
438
|
+
}
|
|
439
|
+
} catch (e) {
|
|
440
|
+
signalRenderResult({
|
|
441
|
+
reason: "exception",
|
|
442
|
+
message: e.message
|
|
443
|
+
});
|
|
444
|
+
console.log("Error in rendering ad", e);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
function requestAdFromPrebid() {
|
|
449
|
+
var message = {
|
|
450
|
+
message: 'Prebid Request',
|
|
451
|
+
adId: adId,
|
|
452
|
+
adServerDomain: fullAdServerDomain
|
|
453
|
+
};
|
|
454
|
+
sendMessage(message, renderAd);
|
|
455
|
+
}
|
|
456
|
+
requestAdFromPrebid();
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
/***/ }),
|
|
460
|
+
/* 4 */
|
|
461
|
+
/***/ (function(__unused_webpack_module, exports) {
|
|
462
|
+
|
|
463
|
+
"use strict";
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
Object.defineProperty(exports, "__esModule", ({
|
|
467
|
+
value: true
|
|
468
|
+
}));
|
|
469
|
+
exports.canInspectWindow = canInspectWindow;
|
|
470
|
+
exports.canLocatePrebid = canLocatePrebid;
|
|
471
|
+
exports.isAmp = isAmp;
|
|
472
|
+
exports.isCrossDomain = isCrossDomain;
|
|
473
|
+
exports.isMobileApp = isMobileApp;
|
|
474
|
+
exports.isSafeFrame = isSafeFrame;
|
|
387
475
|
/***************************************
|
|
388
476
|
* Detect Environment Helper Functions
|
|
389
477
|
***************************************/
|
|
@@ -468,28 +556,30 @@ function isMobileApp(env) {
|
|
|
468
556
|
}
|
|
469
557
|
|
|
470
558
|
/***/ }),
|
|
471
|
-
/*
|
|
472
|
-
/***/ (function(
|
|
559
|
+
/* 5 */
|
|
560
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
473
561
|
|
|
474
562
|
"use strict";
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
var
|
|
484
|
-
var
|
|
485
|
-
var
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
Object.defineProperty(exports, "__esModule", ({
|
|
566
|
+
value: true
|
|
567
|
+
}));
|
|
568
|
+
exports.PREBID_EVENT = exports.AD_RENDER_SUCCEEDED = exports.AD_RENDER_FAILED = void 0;
|
|
569
|
+
exports.prebidMessenger = prebidMessenger;
|
|
570
|
+
exports.renderEventMessage = renderEventMessage;
|
|
571
|
+
var _utils = __webpack_require__(1);
|
|
572
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } } return n; }, _extends.apply(null, arguments); }
|
|
573
|
+
var PREBID_EVENT = exports.PREBID_EVENT = 'Prebid Event';
|
|
574
|
+
var AD_RENDER_SUCCEEDED = exports.AD_RENDER_SUCCEEDED = 'adRenderSucceeded';
|
|
575
|
+
var AD_RENDER_FAILED = exports.AD_RENDER_FAILED = 'adRenderFailed';
|
|
486
576
|
function prebidMessenger(publisherURL) {
|
|
487
577
|
var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;
|
|
488
578
|
var prebidDomain = function () {
|
|
489
579
|
if (publisherURL == null) {
|
|
490
580
|
return null;
|
|
491
581
|
}
|
|
492
|
-
var parsedUrl =
|
|
582
|
+
var parsedUrl = (0, _utils.parseUrl)(publisherURL);
|
|
493
583
|
return parsedUrl.protocol + '://' + parsedUrl.host;
|
|
494
584
|
}();
|
|
495
585
|
function isPrebidWindow(win) {
|
|
@@ -541,197 +631,29 @@ function renderEventMessage(adId, errorInfo) {
|
|
|
541
631
|
} : null);
|
|
542
632
|
}
|
|
543
633
|
|
|
544
|
-
/***/ }),
|
|
545
|
-
/* 4 */
|
|
546
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
547
|
-
|
|
548
|
-
"use strict";
|
|
549
|
-
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
550
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);
|
|
551
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__renderingManager__ = __webpack_require__(5);
|
|
552
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mobileAndAmpRender__ = __webpack_require__(7);
|
|
553
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__environment__ = __webpack_require__(2);
|
|
554
|
-
/**
|
|
555
|
-
* legacy.js
|
|
556
|
-
* This is deprecated code, publishers should not use one .js creative to handle all different types of creative.
|
|
557
|
-
* To reduce bytes transfered for each ad, publishers should use specific .js based on hb_format targeting key-value.
|
|
558
|
-
*
|
|
559
|
-
* This file is inserted into the prebid creative as a placeholder for the winning prebid creative. It should support the following formats:
|
|
560
|
-
* - Banner
|
|
561
|
-
* - AMP
|
|
562
|
-
* - Mobile
|
|
563
|
-
* - Outstream Video
|
|
564
|
-
* - All safeFrame creatives
|
|
565
|
-
*/
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
window.ucTag = window.ucTag || {};
|
|
572
|
-
window.ucTag.renderAd = function (doc, dataObject) {
|
|
573
|
-
var targetingData = Object(__WEBPACK_IMPORTED_MODULE_0__utils__["h" /* transformAuctionTargetingData */])(dataObject);
|
|
574
|
-
if (Object(__WEBPACK_IMPORTED_MODULE_3__environment__["c" /* isMobileApp */])(targetingData.env) || Object(__WEBPACK_IMPORTED_MODULE_3__environment__["b" /* isAmp */])(targetingData.uuid, window)) {
|
|
575
|
-
Object(__WEBPACK_IMPORTED_MODULE_2__mobileAndAmpRender__["a" /* renderAmpOrMobileAd */])(dataObject);
|
|
576
|
-
} else {
|
|
577
|
-
Object(__WEBPACK_IMPORTED_MODULE_1__renderingManager__["a" /* renderBannerOrDisplayAd */])(doc, dataObject);
|
|
578
|
-
}
|
|
579
|
-
};
|
|
580
|
-
|
|
581
|
-
/***/ }),
|
|
582
|
-
/* 5 */
|
|
583
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
584
|
-
|
|
585
|
-
"use strict";
|
|
586
|
-
/* harmony export (immutable) */ __webpack_exports__["a"] = renderBannerOrDisplayAd;
|
|
587
|
-
/* unused harmony export renderLegacy */
|
|
588
|
-
/* unused harmony export renderCrossDomain */
|
|
589
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);
|
|
590
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__environment__ = __webpack_require__(2);
|
|
591
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__domHelper__ = __webpack_require__(1);
|
|
592
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__messaging_js__ = __webpack_require__(3);
|
|
593
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__dynamicRenderer_js__ = __webpack_require__(6);
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
function renderBannerOrDisplayAd(doc, dataObject) {
|
|
600
|
-
var targetingData = Object(__WEBPACK_IMPORTED_MODULE_0__utils__["h" /* transformAuctionTargetingData */])(dataObject);
|
|
601
|
-
if (!Object(__WEBPACK_IMPORTED_MODULE_1__environment__["a" /* canLocatePrebid */])(window)) {
|
|
602
|
-
renderCrossDomain(window, targetingData.adId, targetingData.adServerDomain, targetingData.pubUrl);
|
|
603
|
-
} else {
|
|
604
|
-
renderLegacy(doc, targetingData.adId);
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
/**
|
|
609
|
-
* Calls prebid.js renderAd function to render ad
|
|
610
|
-
* @param {Object} doc Document
|
|
611
|
-
* @param {string} adId Id of creative to render
|
|
612
|
-
*/
|
|
613
|
-
function renderLegacy(doc, adId) {
|
|
614
|
-
var found = false;
|
|
615
|
-
var w = window;
|
|
616
|
-
for (var i = 0; i < 10; i++) {
|
|
617
|
-
w = w.parent;
|
|
618
|
-
if (w.pbjs) {
|
|
619
|
-
try {
|
|
620
|
-
w.pbjs.renderAd(doc, adId);
|
|
621
|
-
found = true;
|
|
622
|
-
break;
|
|
623
|
-
} catch (e) {
|
|
624
|
-
continue;
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
}
|
|
628
|
-
if (!found) {
|
|
629
|
-
console.error("Unable to locate pbjs.renderAd function!");
|
|
630
|
-
}
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
/**
|
|
634
|
-
* Render ad in safeframe using postmessage
|
|
635
|
-
* @param {string} adId Id of creative to render
|
|
636
|
-
* @param {string} pubAdServerDomain publisher adserver domain name
|
|
637
|
-
* @param {string} pubUrl Url of publisher page
|
|
638
|
-
*/
|
|
639
|
-
function renderCrossDomain(win, adId) {
|
|
640
|
-
var pubAdServerDomain = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
641
|
-
var pubUrl = arguments.length > 3 ? arguments[3] : undefined;
|
|
642
|
-
var windowLocation = win.location;
|
|
643
|
-
var adServerDomain = pubAdServerDomain || win.location.hostname;
|
|
644
|
-
var fullAdServerDomain = windowLocation.protocol + '//' + adServerDomain;
|
|
645
|
-
var sendMessage = Object(__WEBPACK_IMPORTED_MODULE_3__messaging_js__["a" /* prebidMessenger */])(pubUrl, win);
|
|
646
|
-
var signalRenderResult = function signalRenderResult(errorInfo) {
|
|
647
|
-
return sendMessage(Object(__WEBPACK_IMPORTED_MODULE_3__messaging_js__["b" /* renderEventMessage */])(adId, errorInfo));
|
|
648
|
-
};
|
|
649
|
-
function renderAd(ev) {
|
|
650
|
-
var key = ev.message ? "message" : "data";
|
|
651
|
-
var adObject = {};
|
|
652
|
-
try {
|
|
653
|
-
adObject = JSON.parse(ev[key]);
|
|
654
|
-
} catch (e) {
|
|
655
|
-
return;
|
|
656
|
-
}
|
|
657
|
-
if (adObject.message && adObject.message === "Prebid Response" && adObject.adId === adId) {
|
|
658
|
-
if (Object(__WEBPACK_IMPORTED_MODULE_4__dynamicRenderer_js__["a" /* hasDynamicRenderer */])(adObject)) {
|
|
659
|
-
Object(__WEBPACK_IMPORTED_MODULE_4__dynamicRenderer_js__["b" /* runDynamicRenderer */])(adId, adObject, sendMessage, win);
|
|
660
|
-
return;
|
|
661
|
-
}
|
|
662
|
-
try {
|
|
663
|
-
var body = win.document.body;
|
|
664
|
-
var ad = adObject.ad;
|
|
665
|
-
var url = adObject.adUrl;
|
|
666
|
-
var width = adObject.width;
|
|
667
|
-
var height = adObject.height;
|
|
668
|
-
if (adObject.mediaType === "video") {
|
|
669
|
-
signalRenderResult({
|
|
670
|
-
reason: "preventWritingOnMainDocument",
|
|
671
|
-
message: "Cannot render video ad ".concat(adId)
|
|
672
|
-
});
|
|
673
|
-
console.log("Error trying to write ad.");
|
|
674
|
-
} else if (ad) {
|
|
675
|
-
var iframe = Object(__WEBPACK_IMPORTED_MODULE_2__domHelper__["a" /* getEmptyIframe */])(adObject.height, adObject.width);
|
|
676
|
-
body.appendChild(iframe);
|
|
677
|
-
iframe.contentDocument.open();
|
|
678
|
-
iframe.contentDocument.write(ad);
|
|
679
|
-
iframe.contentDocument.close();
|
|
680
|
-
signalRenderResult();
|
|
681
|
-
} else if (url) {
|
|
682
|
-
var _iframe = Object(__WEBPACK_IMPORTED_MODULE_2__domHelper__["a" /* getEmptyIframe */])(height, width);
|
|
683
|
-
_iframe.style.display = "inline";
|
|
684
|
-
_iframe.style.overflow = "hidden";
|
|
685
|
-
_iframe.src = url;
|
|
686
|
-
Object(__WEBPACK_IMPORTED_MODULE_2__domHelper__["b" /* insertElement */])(_iframe, document, "body");
|
|
687
|
-
signalRenderResult();
|
|
688
|
-
} else {
|
|
689
|
-
signalRenderResult({
|
|
690
|
-
reason: "noAd",
|
|
691
|
-
message: "No ad for ".concat(adId)
|
|
692
|
-
});
|
|
693
|
-
console.log("Error trying to write ad. No ad markup or adUrl for ".concat(adId));
|
|
694
|
-
}
|
|
695
|
-
} catch (e) {
|
|
696
|
-
signalRenderResult({
|
|
697
|
-
reason: "exception",
|
|
698
|
-
message: e.message
|
|
699
|
-
});
|
|
700
|
-
console.log("Error in rendering ad", e);
|
|
701
|
-
}
|
|
702
|
-
}
|
|
703
|
-
}
|
|
704
|
-
function requestAdFromPrebid() {
|
|
705
|
-
var message = {
|
|
706
|
-
message: 'Prebid Request',
|
|
707
|
-
adId: adId,
|
|
708
|
-
adServerDomain: fullAdServerDomain
|
|
709
|
-
};
|
|
710
|
-
sendMessage(message, renderAd);
|
|
711
|
-
}
|
|
712
|
-
requestAdFromPrebid();
|
|
713
|
-
}
|
|
714
|
-
|
|
715
634
|
/***/ }),
|
|
716
635
|
/* 6 */
|
|
717
|
-
/***/ (function(
|
|
636
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
718
637
|
|
|
719
638
|
"use strict";
|
|
720
|
-
/* unused harmony export MIN_RENDERER_VERSION */
|
|
721
|
-
/* harmony export (immutable) */ __webpack_exports__["a"] = hasDynamicRenderer;
|
|
722
|
-
/* harmony export (immutable) */ __webpack_exports__["b"] = runDynamicRenderer;
|
|
723
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__domHelper_js__ = __webpack_require__(1);
|
|
724
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__messaging_js__ = __webpack_require__(3);
|
|
725
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
726
639
|
|
|
727
640
|
|
|
728
|
-
|
|
641
|
+
Object.defineProperty(exports, "__esModule", ({
|
|
642
|
+
value: true
|
|
643
|
+
}));
|
|
644
|
+
exports.MIN_RENDERER_VERSION = void 0;
|
|
645
|
+
exports.hasDynamicRenderer = hasDynamicRenderer;
|
|
646
|
+
exports.runDynamicRenderer = runDynamicRenderer;
|
|
647
|
+
var _domHelper = __webpack_require__(2);
|
|
648
|
+
var _messaging = __webpack_require__(5);
|
|
649
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } } return n; }, _extends.apply(null, arguments); }
|
|
650
|
+
var MIN_RENDERER_VERSION = exports.MIN_RENDERER_VERSION = 3;
|
|
729
651
|
function hasDynamicRenderer(message) {
|
|
730
652
|
return typeof message.renderer === 'string' && parseInt(message.rendererVersion, 10) >= MIN_RENDERER_VERSION;
|
|
731
653
|
}
|
|
732
654
|
function runDynamicRenderer(adId, data, _sendMessage) {
|
|
733
655
|
var win = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : window;
|
|
734
|
-
var mkFrame = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] :
|
|
656
|
+
var mkFrame = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _domHelper.makeIframe;
|
|
735
657
|
var renderer = mkFrame(win.document, {
|
|
736
658
|
width: 0,
|
|
737
659
|
height: 0,
|
|
@@ -742,7 +664,7 @@ function runDynamicRenderer(adId, data, _sendMessage) {
|
|
|
742
664
|
return new Promise(function (resolve, reject) {
|
|
743
665
|
function onError() {
|
|
744
666
|
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
745
|
-
_sendMessage(
|
|
667
|
+
_sendMessage((0, _messaging.renderEventMessage)(adId, {
|
|
746
668
|
reason: e.reason || 'exception',
|
|
747
669
|
message: e.message
|
|
748
670
|
}));
|
|
@@ -771,7 +693,7 @@ function runDynamicRenderer(adId, data, _sendMessage) {
|
|
|
771
693
|
}, payload), onResponse ? guard(onResponse) : undefined);
|
|
772
694
|
}
|
|
773
695
|
}, win)).then(function () {
|
|
774
|
-
return _sendMessage(
|
|
696
|
+
return _sendMessage((0, _messaging.renderEventMessage)(adId));
|
|
775
697
|
}, onError).then(resolve);
|
|
776
698
|
});
|
|
777
699
|
win.document.body.appendChild(renderer);
|
|
@@ -780,18 +702,19 @@ function runDynamicRenderer(adId, data, _sendMessage) {
|
|
|
780
702
|
|
|
781
703
|
/***/ }),
|
|
782
704
|
/* 7 */
|
|
783
|
-
/***/ (function(
|
|
705
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
784
706
|
|
|
785
707
|
"use strict";
|
|
786
|
-
/* harmony export (immutable) */ __webpack_exports__["a"] = renderAmpOrMobileAd;
|
|
787
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);
|
|
788
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__environment__ = __webpack_require__(2);
|
|
789
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__domHelper__ = __webpack_require__(1);
|
|
790
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__postscribeRender__ = __webpack_require__(8);
|
|
791
|
-
|
|
792
|
-
|
|
793
708
|
|
|
794
709
|
|
|
710
|
+
Object.defineProperty(exports, "__esModule", ({
|
|
711
|
+
value: true
|
|
712
|
+
}));
|
|
713
|
+
exports.renderAmpOrMobileAd = renderAmpOrMobileAd;
|
|
714
|
+
var _utils = __webpack_require__(1);
|
|
715
|
+
var _environment = __webpack_require__(4);
|
|
716
|
+
var _domHelper = __webpack_require__(2);
|
|
717
|
+
var _postscribeRender = __webpack_require__(8);
|
|
795
718
|
var DEFAULT_CACHE_HOST = 'prebid.adnxs.com';
|
|
796
719
|
var DEFAULT_CACHE_PATH = '/pbc/v1/cache';
|
|
797
720
|
|
|
@@ -805,7 +728,7 @@ var DEFAULT_CACHE_PATH = '/pbc/v1/cache';
|
|
|
805
728
|
* @param {Bool} isMobileApp flag to detect mobile app
|
|
806
729
|
*/
|
|
807
730
|
function renderAmpOrMobileAd(dataObject) {
|
|
808
|
-
var targetingData =
|
|
731
|
+
var targetingData = (0, _utils.transformAuctionTargetingData)(dataObject);
|
|
809
732
|
var cacheHost = targetingData.cacheHost,
|
|
810
733
|
cachePath = targetingData.cachePath,
|
|
811
734
|
uuid = targetingData.uuid,
|
|
@@ -822,7 +745,7 @@ function renderAmpOrMobileAd(dataObject) {
|
|
|
822
745
|
var adUrl = "".concat(getCacheEndpoint(cacheHost, cachePath), "?uuid=").concat(uuid);
|
|
823
746
|
//register creative right away to not miss initial geom-update
|
|
824
747
|
updateIframe(size);
|
|
825
|
-
|
|
748
|
+
(0, _utils.sendRequest)(adUrl, responseCallback((0, _environment.isMobileApp)(targetingData.env), hbPb));
|
|
826
749
|
}
|
|
827
750
|
}
|
|
828
751
|
|
|
@@ -858,8 +781,8 @@ function resizeIframe(width, height) {
|
|
|
858
781
|
var iframeWidth = window.innerWidth;
|
|
859
782
|
var iframeHeight = window.innerHeight;
|
|
860
783
|
if (iframeWidth !== width || iframeHeight !== height) {
|
|
861
|
-
if (
|
|
862
|
-
var resize = function resize(
|
|
784
|
+
if ((0, _environment.isSafeFrame)(window)) {
|
|
785
|
+
var resize = function resize() {
|
|
863
786
|
var newWidth = width - iframeWidth;
|
|
864
787
|
var newHeight = height - iframeHeight;
|
|
865
788
|
window.$sf.ext.expand({
|
|
@@ -901,13 +824,13 @@ function responseCallback(isMobileApp, hbPb) {
|
|
|
901
824
|
return function (response) {
|
|
902
825
|
var bidObject = parseResponse(response);
|
|
903
826
|
var auctionPrice = bidObject.price || hbPb;
|
|
904
|
-
var ad =
|
|
827
|
+
var ad = (0, _utils.getCreativeCommentMarkup)(bidObject);
|
|
905
828
|
var width = bidObject.width ? bidObject.width : bidObject.w;
|
|
906
829
|
var height = bidObject.height ? bidObject.height : bidObject.h;
|
|
907
830
|
|
|
908
831
|
// When Prebid Universal Creative reads from Prebid Cache, we need to have it check for the existence of the wurl parameter. If it exists, hit it.
|
|
909
832
|
if (bidObject.wurl) {
|
|
910
|
-
|
|
833
|
+
(0, _utils.triggerPixel)(decodeURIComponent(bidObject.wurl));
|
|
911
834
|
}
|
|
912
835
|
if (bidObject.adm) {
|
|
913
836
|
if (auctionPrice) {
|
|
@@ -921,14 +844,14 @@ function responseCallback(isMobileApp, hbPb) {
|
|
|
921
844
|
}
|
|
922
845
|
ad += isMobileApp ? constructMarkup(bidObject.adm, width, height) : bidObject.adm;
|
|
923
846
|
if (bidObject.nurl) {
|
|
924
|
-
ad +=
|
|
847
|
+
ad += (0, _utils.createTrackPixelHtml)(decodeURIComponent(bidObject.nurl));
|
|
925
848
|
}
|
|
926
849
|
if (bidObject.burl) {
|
|
927
850
|
var triggerBurl = function triggerBurl() {
|
|
928
|
-
|
|
851
|
+
(0, _utils.triggerPixel)(bidObject.burl);
|
|
929
852
|
};
|
|
930
853
|
if (isMobileApp) {
|
|
931
|
-
|
|
854
|
+
(0, _utils.loadScript)(window, 'mraid.js', function () {
|
|
932
855
|
// Success loading MRAID
|
|
933
856
|
var result = registerMRAIDViewableEvent(triggerBurl);
|
|
934
857
|
if (!result) {
|
|
@@ -940,18 +863,17 @@ function responseCallback(isMobileApp, hbPb) {
|
|
|
940
863
|
triggerBurl(); // Not a mobile app
|
|
941
864
|
}
|
|
942
865
|
}
|
|
943
|
-
|
|
944
|
-
Object(__WEBPACK_IMPORTED_MODULE_3__postscribeRender__["a" /* writeAdHtml */])(ad);
|
|
866
|
+
(0, _postscribeRender.writeAdHtml)(ad);
|
|
945
867
|
} else if (bidObject.nurl) {
|
|
946
868
|
if (isMobileApp) {
|
|
947
|
-
var adhtml =
|
|
869
|
+
var adhtml = (0, _utils.loadScript)(window, bidObject.nurl);
|
|
948
870
|
ad += constructMarkup(adhtml.outerHTML, width, height);
|
|
949
|
-
|
|
871
|
+
(0, _postscribeRender.writeAdHtml)(ad);
|
|
950
872
|
} else {
|
|
951
873
|
var nurl = bidObject.nurl;
|
|
952
|
-
var commentElm =
|
|
953
|
-
|
|
954
|
-
|
|
874
|
+
var commentElm = (0, _utils.getCreativeComment)(bidObject);
|
|
875
|
+
(0, _domHelper.insertElement)(commentElm, document, 'body');
|
|
876
|
+
(0, _utils.writeAdUrl)(nurl, width, height);
|
|
955
877
|
}
|
|
956
878
|
}
|
|
957
879
|
};
|
|
@@ -981,7 +903,7 @@ function parseResponse(response) {
|
|
|
981
903
|
* @returns {string} creative markup
|
|
982
904
|
*/
|
|
983
905
|
function constructMarkup(ad, width, height) {
|
|
984
|
-
var id =
|
|
906
|
+
var id = (0, _utils.getUUID)();
|
|
985
907
|
return "<div id=\"".concat(id, "\" style=\"border-style: none; position: absolute; width:100%; height:100%;\">\n <div id=\"").concat(id, "_inner\" style=\"margin: 0 auto; width:").concat(width, "px; height:").concat(height, "px; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);\">").concat(ad, "</div>\n </div>");
|
|
986
908
|
}
|
|
987
909
|
function registerMRAIDViewableEvent(callback) {
|
|
@@ -1026,26 +948,83 @@ function registerMRAIDViewableEvent(callback) {
|
|
|
1026
948
|
|
|
1027
949
|
/***/ }),
|
|
1028
950
|
/* 8 */
|
|
1029
|
-
/***/ (function(
|
|
951
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
1030
952
|
|
|
1031
953
|
"use strict";
|
|
1032
|
-
/* harmony export (immutable) */ __webpack_exports__["a"] = writeAdHtml;
|
|
1033
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_postscribe__ = __webpack_require__(9);
|
|
1034
|
-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_postscribe___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_postscribe__);
|
|
1035
954
|
|
|
955
|
+
|
|
956
|
+
Object.defineProperty(exports, "__esModule", ({
|
|
957
|
+
value: true
|
|
958
|
+
}));
|
|
959
|
+
exports.writeAdHtml = writeAdHtml;
|
|
960
|
+
var _postscribe = _interopRequireDefault(__webpack_require__(9));
|
|
961
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
962
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
963
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
964
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
965
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
966
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
967
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) { n[e] = r[e]; } return n; }
|
|
1036
968
|
function writeAdHtml(markup) {
|
|
1037
|
-
var ps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] :
|
|
969
|
+
var ps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _postscribe["default"];
|
|
1038
970
|
// remove <?xml> and <!doctype> tags
|
|
1039
971
|
// https://github.com/prebid/prebid-universal-creative/issues/134
|
|
1040
|
-
markup = markup.replace(
|
|
1041
|
-
|
|
972
|
+
markup = markup.replace(/<\?xml\b[^>]*(?:\?>|>)/gi, '').replace(/<!doctype\b[^>\[]*(?:\[[^\]]*\][^>]*)?>/gi, '');
|
|
973
|
+
var finalMarkup;
|
|
974
|
+
try {
|
|
975
|
+
finalMarkup = normalizeMarkup(markup);
|
|
976
|
+
} catch (error) {
|
|
977
|
+
console.error("Error normalizing markup:", error.message);
|
|
978
|
+
finalMarkup = markup;
|
|
979
|
+
}
|
|
980
|
+
ps(document.body, finalMarkup, {
|
|
1042
981
|
error: console.error
|
|
1043
982
|
});
|
|
1044
983
|
}
|
|
1045
984
|
|
|
985
|
+
/**
|
|
986
|
+
* Normalizes an HTML string by parsing and re-serializing it,
|
|
987
|
+
* returning the content between custom PUC_START and PUC_END markers.
|
|
988
|
+
*
|
|
989
|
+
* This function is specifically aimed at addressing an issue with `postscribe` where double quotes inside single-quoted
|
|
990
|
+
* HTML attributes are not correctly escaped.
|
|
991
|
+
*/
|
|
992
|
+
function normalizeMarkup(markup) {
|
|
993
|
+
var timestamp = Date.now();
|
|
994
|
+
var startMarkerId = "PUC_START_".concat(timestamp);
|
|
995
|
+
var endMarkerId = "PUC_END_".concat(timestamp);
|
|
996
|
+
var startMarker = "<div id=\"".concat(startMarkerId, "\"></div>");
|
|
997
|
+
var endMarker = "<div id=\"".concat(endMarkerId, "\"></div>");
|
|
998
|
+
var doc = new DOMParser().parseFromString("".concat(startMarker).concat(markup).concat(endMarker), "text/html");
|
|
999
|
+
var textMap = new Map();
|
|
1000
|
+
var textId = 0;
|
|
1001
|
+
var replaceTextNodes = function replaceTextNodes(node) {
|
|
1002
|
+
if (node.nodeType === Node.TEXT_NODE && node.textContent.trim()) {
|
|
1003
|
+
var id = "PUC_NODE_TEXT_".concat(textId++, "_").concat(timestamp);
|
|
1004
|
+
textMap.set(id, node.textContent);
|
|
1005
|
+
var span = doc.createElement("span");
|
|
1006
|
+
span.dataset.textId = id;
|
|
1007
|
+
node.parentNode.replaceChild(span, node);
|
|
1008
|
+
} else {
|
|
1009
|
+
_toConsumableArray(node.childNodes).forEach(replaceTextNodes);
|
|
1010
|
+
}
|
|
1011
|
+
};
|
|
1012
|
+
var current = doc.querySelector("#".concat(startMarkerId)).nextSibling;
|
|
1013
|
+
var end = doc.querySelector("#".concat(endMarkerId));
|
|
1014
|
+
while (current && current !== end) {
|
|
1015
|
+
replaceTextNodes(current);
|
|
1016
|
+
current = current.nextSibling;
|
|
1017
|
+
}
|
|
1018
|
+
var serialized = new XMLSerializer().serializeToString(doc);
|
|
1019
|
+
var snippet = serialized.split(startMarker)[1].split(endMarker)[0].replace(/<span data-text-id="(PUC_NODE_TEXT_\d+_\d+)"[^>]*><\/span>/g, function (_, id) {
|
|
1020
|
+
return textMap.get(id) || "";
|
|
1021
|
+
});
|
|
1022
|
+
return snippet.trim();
|
|
1023
|
+
}
|
|
1024
|
+
|
|
1046
1025
|
/***/ }),
|
|
1047
1026
|
/* 9 */
|
|
1048
|
-
/***/ (function(module
|
|
1027
|
+
/***/ (function(module) {
|
|
1049
1028
|
|
|
1050
1029
|
/**
|
|
1051
1030
|
* @file postscribe
|
|
@@ -1059,19 +1038,15 @@ function writeAdHtml(markup) {
|
|
|
1059
1038
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
1060
1039
|
if(true)
|
|
1061
1040
|
module.exports = factory();
|
|
1062
|
-
else
|
|
1063
|
-
|
|
1064
|
-
else if(typeof exports === 'object')
|
|
1065
|
-
exports["postscribe"] = factory();
|
|
1066
|
-
else
|
|
1067
|
-
root["postscribe"] = factory();
|
|
1041
|
+
else // removed by dead control flow
|
|
1042
|
+
{}
|
|
1068
1043
|
})(this, function() {
|
|
1069
1044
|
return /******/ (function(modules) { // webpackBootstrap
|
|
1070
1045
|
/******/ // The module cache
|
|
1071
1046
|
/******/ var installedModules = {};
|
|
1072
1047
|
/******/
|
|
1073
1048
|
/******/ // The require function
|
|
1074
|
-
/******/ function
|
|
1049
|
+
/******/ function __nested_webpack_require_791__(moduleId) {
|
|
1075
1050
|
/******/
|
|
1076
1051
|
/******/ // Check if module is in cache
|
|
1077
1052
|
/******/ if(installedModules[moduleId])
|
|
@@ -1085,7 +1060,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
1085
1060
|
/******/ };
|
|
1086
1061
|
/******/
|
|
1087
1062
|
/******/ // Execute the module function
|
|
1088
|
-
/******/ modules[moduleId].call(module.exports, module, module.exports,
|
|
1063
|
+
/******/ modules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_791__);
|
|
1089
1064
|
/******/
|
|
1090
1065
|
/******/ // Flag the module as loaded
|
|
1091
1066
|
/******/ module.loaded = true;
|
|
@@ -1096,25 +1071,25 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
1096
1071
|
/******/
|
|
1097
1072
|
/******/
|
|
1098
1073
|
/******/ // expose the modules object (__webpack_modules__)
|
|
1099
|
-
/******/
|
|
1074
|
+
/******/ __nested_webpack_require_791__.m = modules;
|
|
1100
1075
|
/******/
|
|
1101
1076
|
/******/ // expose the module cache
|
|
1102
|
-
/******/
|
|
1077
|
+
/******/ __nested_webpack_require_791__.c = installedModules;
|
|
1103
1078
|
/******/
|
|
1104
1079
|
/******/ // __webpack_public_path__
|
|
1105
|
-
/******/
|
|
1080
|
+
/******/ __nested_webpack_require_791__.p = "";
|
|
1106
1081
|
/******/
|
|
1107
1082
|
/******/ // Load entry module and return exports
|
|
1108
|
-
/******/ return
|
|
1083
|
+
/******/ return __nested_webpack_require_791__(0);
|
|
1109
1084
|
/******/ })
|
|
1110
1085
|
/************************************************************************/
|
|
1111
1086
|
/******/ ([
|
|
1112
1087
|
/* 0 */
|
|
1113
|
-
/***/ function(module, exports,
|
|
1088
|
+
/***/ function(module, exports, __nested_webpack_require_2071__) {
|
|
1114
1089
|
|
|
1115
1090
|
'use strict';
|
|
1116
1091
|
|
|
1117
|
-
var _postscribe =
|
|
1092
|
+
var _postscribe = __nested_webpack_require_2071__(1);
|
|
1118
1093
|
|
|
1119
1094
|
var _postscribe2 = _interopRequireDefault(_postscribe);
|
|
1120
1095
|
|
|
@@ -1124,7 +1099,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
1124
1099
|
|
|
1125
1100
|
/***/ },
|
|
1126
1101
|
/* 1 */
|
|
1127
|
-
/***/ function(module, exports,
|
|
1102
|
+
/***/ function(module, exports, __nested_webpack_require_2410__) {
|
|
1128
1103
|
|
|
1129
1104
|
'use strict';
|
|
1130
1105
|
|
|
@@ -1134,11 +1109,11 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
1134
1109
|
|
|
1135
1110
|
exports['default'] = postscribe;
|
|
1136
1111
|
|
|
1137
|
-
var _writeStream =
|
|
1112
|
+
var _writeStream = __nested_webpack_require_2410__(2);
|
|
1138
1113
|
|
|
1139
1114
|
var _writeStream2 = _interopRequireDefault(_writeStream);
|
|
1140
1115
|
|
|
1141
|
-
var _utils =
|
|
1116
|
+
var _utils = __nested_webpack_require_2410__(4);
|
|
1142
1117
|
|
|
1143
1118
|
var utils = _interopRequireWildcard(_utils);
|
|
1144
1119
|
|
|
@@ -1362,7 +1337,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
1362
1337
|
|
|
1363
1338
|
/***/ },
|
|
1364
1339
|
/* 2 */
|
|
1365
|
-
/***/ function(module, exports,
|
|
1340
|
+
/***/ function(module, exports, __nested_webpack_require_7899__) {
|
|
1366
1341
|
|
|
1367
1342
|
'use strict';
|
|
1368
1343
|
|
|
@@ -1370,11 +1345,11 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
1370
1345
|
|
|
1371
1346
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
1372
1347
|
|
|
1373
|
-
var _prescribe =
|
|
1348
|
+
var _prescribe = __nested_webpack_require_7899__(3);
|
|
1374
1349
|
|
|
1375
1350
|
var _prescribe2 = _interopRequireDefault(_prescribe);
|
|
1376
1351
|
|
|
1377
|
-
var _utils =
|
|
1352
|
+
var _utils = __nested_webpack_require_7899__(4);
|
|
1378
1353
|
|
|
1379
1354
|
var utils = _interopRequireWildcard(_utils);
|
|
1380
1355
|
|
|
@@ -2056,19 +2031,15 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
2056
2031
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
2057
2032
|
if(true)
|
|
2058
2033
|
module.exports = factory();
|
|
2059
|
-
else
|
|
2060
|
-
|
|
2061
|
-
else if(typeof exports === 'object')
|
|
2062
|
-
exports["Prescribe"] = factory();
|
|
2063
|
-
else
|
|
2064
|
-
root["Prescribe"] = factory();
|
|
2034
|
+
else // removed by dead control flow
|
|
2035
|
+
{}
|
|
2065
2036
|
})(this, function() {
|
|
2066
2037
|
return /******/ (function(modules) { // webpackBootstrap
|
|
2067
2038
|
/******/ // The module cache
|
|
2068
2039
|
/******/ var installedModules = {};
|
|
2069
2040
|
|
|
2070
2041
|
/******/ // The require function
|
|
2071
|
-
/******/ function
|
|
2042
|
+
/******/ function __nested_webpack_require_26473__(moduleId) {
|
|
2072
2043
|
|
|
2073
2044
|
/******/ // Check if module is in cache
|
|
2074
2045
|
/******/ if(installedModules[moduleId])
|
|
@@ -2082,7 +2053,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
2082
2053
|
/******/ };
|
|
2083
2054
|
|
|
2084
2055
|
/******/ // Execute the module function
|
|
2085
|
-
/******/ modules[moduleId].call(module.exports, module, module.exports,
|
|
2056
|
+
/******/ modules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_26473__);
|
|
2086
2057
|
|
|
2087
2058
|
/******/ // Flag the module as loaded
|
|
2088
2059
|
/******/ module.loaded = true;
|
|
@@ -2093,25 +2064,25 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
2093
2064
|
|
|
2094
2065
|
|
|
2095
2066
|
/******/ // expose the modules object (__webpack_modules__)
|
|
2096
|
-
/******/
|
|
2067
|
+
/******/ __nested_webpack_require_26473__.m = modules;
|
|
2097
2068
|
|
|
2098
2069
|
/******/ // expose the module cache
|
|
2099
|
-
/******/
|
|
2070
|
+
/******/ __nested_webpack_require_26473__.c = installedModules;
|
|
2100
2071
|
|
|
2101
2072
|
/******/ // __webpack_public_path__
|
|
2102
|
-
/******/
|
|
2073
|
+
/******/ __nested_webpack_require_26473__.p = "";
|
|
2103
2074
|
|
|
2104
2075
|
/******/ // Load entry module and return exports
|
|
2105
|
-
/******/ return
|
|
2076
|
+
/******/ return __nested_webpack_require_26473__(0);
|
|
2106
2077
|
/******/ })
|
|
2107
2078
|
/************************************************************************/
|
|
2108
2079
|
/******/ ([
|
|
2109
2080
|
/* 0 */
|
|
2110
|
-
/***/ function(module, exports,
|
|
2081
|
+
/***/ function(module, exports, __nested_webpack_require_27712__) {
|
|
2111
2082
|
|
|
2112
2083
|
'use strict';
|
|
2113
2084
|
|
|
2114
|
-
var _HtmlParser =
|
|
2085
|
+
var _HtmlParser = __nested_webpack_require_27712__(1);
|
|
2115
2086
|
|
|
2116
2087
|
var _HtmlParser2 = _interopRequireDefault(_HtmlParser);
|
|
2117
2088
|
|
|
@@ -2121,25 +2092,25 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
2121
2092
|
|
|
2122
2093
|
/***/ },
|
|
2123
2094
|
/* 1 */
|
|
2124
|
-
/***/ function(module, exports,
|
|
2095
|
+
/***/ function(module, exports, __nested_webpack_require_28061__) {
|
|
2125
2096
|
|
|
2126
2097
|
'use strict';
|
|
2127
2098
|
|
|
2128
2099
|
exports.__esModule = true;
|
|
2129
2100
|
|
|
2130
|
-
var _supports =
|
|
2101
|
+
var _supports = __nested_webpack_require_28061__(2);
|
|
2131
2102
|
|
|
2132
2103
|
var supports = _interopRequireWildcard(_supports);
|
|
2133
2104
|
|
|
2134
|
-
var _streamReaders =
|
|
2105
|
+
var _streamReaders = __nested_webpack_require_28061__(3);
|
|
2135
2106
|
|
|
2136
2107
|
var streamReaders = _interopRequireWildcard(_streamReaders);
|
|
2137
2108
|
|
|
2138
|
-
var _fixedReadTokenFactory =
|
|
2109
|
+
var _fixedReadTokenFactory = __nested_webpack_require_28061__(6);
|
|
2139
2110
|
|
|
2140
2111
|
var _fixedReadTokenFactory2 = _interopRequireDefault(_fixedReadTokenFactory);
|
|
2141
2112
|
|
|
2142
|
-
var _utils =
|
|
2113
|
+
var _utils = __nested_webpack_require_28061__(5);
|
|
2143
2114
|
|
|
2144
2115
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
2145
2116
|
|
|
@@ -2406,7 +2377,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
2406
2377
|
|
|
2407
2378
|
/***/ },
|
|
2408
2379
|
/* 3 */
|
|
2409
|
-
/***/ function(module, exports,
|
|
2380
|
+
/***/ function(module, exports, __nested_webpack_require_35326__) {
|
|
2410
2381
|
|
|
2411
2382
|
'use strict';
|
|
2412
2383
|
|
|
@@ -2420,7 +2391,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
2420
2391
|
exports.atomicTag = atomicTag;
|
|
2421
2392
|
exports.endTag = endTag;
|
|
2422
2393
|
|
|
2423
|
-
var _tokens =
|
|
2394
|
+
var _tokens = __nested_webpack_require_35326__(4);
|
|
2424
2395
|
|
|
2425
2396
|
/**
|
|
2426
2397
|
* Regular Expressions for parsing tags and attributes
|
|
@@ -2533,14 +2504,14 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
2533
2504
|
|
|
2534
2505
|
/***/ },
|
|
2535
2506
|
/* 4 */
|
|
2536
|
-
/***/ function(module, exports,
|
|
2507
|
+
/***/ function(module, exports, __nested_webpack_require_39304__) {
|
|
2537
2508
|
|
|
2538
2509
|
'use strict';
|
|
2539
2510
|
|
|
2540
2511
|
exports.__esModule = true;
|
|
2541
2512
|
exports.EndTagToken = exports.AtomicTagToken = exports.StartTagToken = exports.TagToken = exports.CharsToken = exports.CommentToken = exports.Token = undefined;
|
|
2542
2513
|
|
|
2543
|
-
var _utils =
|
|
2514
|
+
var _utils = __nested_webpack_require_39304__(5);
|
|
2544
2515
|
|
|
2545
2516
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
2546
2517
|
|
|
@@ -3137,4 +3108,65 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
3137
3108
|
//# sourceMappingURL=postscribe.js.map
|
|
3138
3109
|
|
|
3139
3110
|
/***/ })
|
|
3140
|
-
/******/
|
|
3111
|
+
/******/ ]);
|
|
3112
|
+
/************************************************************************/
|
|
3113
|
+
/******/ // The module cache
|
|
3114
|
+
/******/ var __webpack_module_cache__ = {};
|
|
3115
|
+
/******/
|
|
3116
|
+
/******/ // The require function
|
|
3117
|
+
/******/ function __webpack_require__(moduleId) {
|
|
3118
|
+
/******/ // Check if module is in cache
|
|
3119
|
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
3120
|
+
/******/ if (cachedModule !== undefined) {
|
|
3121
|
+
/******/ return cachedModule.exports;
|
|
3122
|
+
/******/ }
|
|
3123
|
+
/******/ // Create a new module (and put it into the cache)
|
|
3124
|
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
3125
|
+
/******/ // no module.id needed
|
|
3126
|
+
/******/ // no module.loaded needed
|
|
3127
|
+
/******/ exports: {}
|
|
3128
|
+
/******/ };
|
|
3129
|
+
/******/
|
|
3130
|
+
/******/ // Execute the module function
|
|
3131
|
+
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
3132
|
+
/******/
|
|
3133
|
+
/******/ // Return the exports of the module
|
|
3134
|
+
/******/ return module.exports;
|
|
3135
|
+
/******/ }
|
|
3136
|
+
/******/
|
|
3137
|
+
/************************************************************************/
|
|
3138
|
+
var __webpack_exports__ = {};
|
|
3139
|
+
// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
|
|
3140
|
+
!function() {
|
|
3141
|
+
"use strict";
|
|
3142
|
+
|
|
3143
|
+
|
|
3144
|
+
var _utils = __webpack_require__(1);
|
|
3145
|
+
var _renderingManager = __webpack_require__(3);
|
|
3146
|
+
var _mobileAndAmpRender = __webpack_require__(7);
|
|
3147
|
+
var _environment = __webpack_require__(4);
|
|
3148
|
+
/**
|
|
3149
|
+
* legacy.js
|
|
3150
|
+
* This is deprecated code, publishers should not use one .js creative to handle all different types of creative.
|
|
3151
|
+
* To reduce bytes transfered for each ad, publishers should use specific .js based on hb_format targeting key-value.
|
|
3152
|
+
*
|
|
3153
|
+
* This file is inserted into the prebid creative as a placeholder for the winning prebid creative. It should support the following formats:
|
|
3154
|
+
* - Banner
|
|
3155
|
+
* - AMP
|
|
3156
|
+
* - Mobile
|
|
3157
|
+
* - Outstream Video
|
|
3158
|
+
* - All safeFrame creatives
|
|
3159
|
+
*/
|
|
3160
|
+
|
|
3161
|
+
window.ucTag = window.ucTag || {};
|
|
3162
|
+
window.ucTag.renderAd = function (doc, dataObject) {
|
|
3163
|
+
var targetingData = (0, _utils.transformAuctionTargetingData)(dataObject);
|
|
3164
|
+
if ((0, _environment.isMobileApp)(targetingData.env) || (0, _environment.isAmp)(targetingData.uuid, window)) {
|
|
3165
|
+
(0, _mobileAndAmpRender.renderAmpOrMobileAd)(dataObject);
|
|
3166
|
+
} else {
|
|
3167
|
+
(0, _renderingManager.renderBannerOrDisplayAd)(doc, dataObject);
|
|
3168
|
+
}
|
|
3169
|
+
};
|
|
3170
|
+
}();
|
|
3171
|
+
/******/ })()
|
|
3172
|
+
;
|