UNPKG

iab-vast-parser

Version:

Parses IAB VAST tags into iab-vast-model objects.

61 lines (45 loc) 1.74 kB
'use strict'; 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); } };