iab-vast-parser
Version:
Parses IAB VAST tags into iab-vast-model objects.
61 lines (45 loc) • 1.74 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _unmarshaler = require('./xml/unmarshaler');
var _unmarshaler2 = _interopRequireDefault(_unmarshaler);
var _schema = require('./vast/schema');
var _schema2 = _interopRequireDefault(_schema);
var _vast = require('./factory/vast');
var _vast2 = _interopRequireDefault(_vast);
var _errorCodes = require('./errors/error-codes');
var _errorCodes2 = _interopRequireDefault(_errorCodes);
var _errorHandler = require('./errors/error-handler');
var _errorHandler2 = _interopRequireDefault(_errorHandler);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var DEFAULT_OPTIONS = {
strict: false,
noSingleAdPods: false
};
var toElement = function toElement(xml, options) {
if (typeof xml === 'string') {
var domParser = options.domParser || new DOMParser();
xml = domParser.parseFromString(xml, 'text/xml');
}
if (xml.documentElement != null) {
xml = xml.documentElement;
}
if (xml.getElementsByTagName('parsererror').length > 0) {
options.errorHandler.failWithErrorCode('XML parsing error', _errorCodes2.default.XML_PARSING_ERROR);
}
return xml;
};
exports.default = function (xml) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
options = Object.assign({}, DEFAULT_OPTIONS, options);
options.errorHandler = new _errorHandler2.default(options.strict);
var element = toElement(xml, options);
var unmarshaler = new _unmarshaler2.default(_schema2.default);
try {
var root = unmarshaler.unmarshal(element);
return (0, _vast2.default)(root, options);
} catch (error) {
options.errorHandler.fail(error);
}
};
;