iab-vast-parser
Version:
Parses IAB VAST tags into iab-vast-model objects.
71 lines (58 loc) • 2.75 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var _iabVastModel = require('iab-vast-model');
var _ad = require('./ad');
var _ad2 = _interopRequireDefault(_ad);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var triageAds = function triageAds($$ads) {
var $$adsWithSequence = [];
var $$adsWithoutSequence = [];
for (var i = 0; i < $$ads.length; ++i) {
var $ad = $$ads[i];
if (typeof $ad.sequence !== 'undefined') {
$$adsWithSequence.push($ad);
} else {
$$adsWithoutSequence.push($ad);
}
}
return [$$adsWithSequence, $$adsWithoutSequence];
};
var createVAST = function createVAST($vast, options) {
var _vast$errors;
var vast = new _iabVastModel.VAST();
vast.version = $vast.version;
(_vast$errors = vast.errors).push.apply(_vast$errors, _toConsumableArray($vast.error.map(function (err) {
return err._value;
}).filter(function (uri) {
return uri !== '';
})));
var _triageAds = triageAds($vast.ad),
_triageAds2 = _slicedToArray(_triageAds, 2),
$$adsWithSequence = _triageAds2[0],
$$adsWithoutSequence = _triageAds2[1];
if ($$adsWithSequence.length > 0) {
if (options.noSingleAdPods && $vast.ad.length === 1 && $$adsWithSequence.length === 1) {
$$adsWithoutSequence.push($$adsWithSequence[0]);
} else {
vast.adPod = new _iabVastModel.AdPod();
for (var i = 0; i < $$adsWithSequence.length; i++) {
vast.adPod.ads.add((0, _ad2.default)($$adsWithSequence[i], options));
}
}
}
for (var _i = 0; _i < $$adsWithoutSequence.length; _i++) {
vast.ads.add((0, _ad2.default)($$adsWithoutSequence[_i], options));
}
return vast;
};
exports.default = function ($vast, options) {
try {
return createVAST($vast, options);
} catch (err) {
options.errorHandler(err);
}
};