From 23040c1b52d38d077451563b1c107e86fc3e1bb9 Mon Sep 17 00:00:00 2001 From: Brandon Casey <2381475+brandonocasey@users.noreply.github.com> Date: Tue, 17 Nov 2020 15:25:12 -0500 Subject: [PATCH] fix: edge case error handling on ie 11 (#112) --- src/stringToMpdXml.js | 13 ++++++++++--- src/utils/object.js | 4 ++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/stringToMpdXml.js b/src/stringToMpdXml.js index d3f0a5cd..1b773634 100644 --- a/src/stringToMpdXml.js +++ b/src/stringToMpdXml.js @@ -7,9 +7,16 @@ export const stringToMpdXml = (manifestString) => { } const parser = new DOMParser(); - const xml = parser.parseFromString(manifestString, 'application/xml'); - const mpd = xml && xml.documentElement.tagName === 'MPD' ? - xml.documentElement : null; + let xml; + let mpd; + + try { + xml = parser.parseFromString(manifestString, 'application/xml'); + mpd = xml && xml.documentElement.tagName === 'MPD' ? + xml.documentElement : null; + } catch (e) { + // ie 11 throwsw on invalid xml + } if (!mpd || mpd && mpd.getElementsByTagName('parsererror').length > 0) { diff --git a/src/utils/object.js b/src/utils/object.js index a0725d1f..1374aa98 100644 --- a/src/utils/object.js +++ b/src/utils/object.js @@ -6,6 +6,10 @@ export const merge = (...objects) => { return objects.reduce((result, source) => { + if (typeof source !== 'object') { + return result; + } + Object.keys(source).forEach(key => { if (Array.isArray(result[key]) && Array.isArray(source[key])) {