diff --git a/src/SASjs.ts b/src/SASjs.ts index 45797b7..28f0fe8 100644 --- a/src/SASjs.ts +++ b/src/SASjs.ts @@ -1,6 +1,10 @@ -import "isomorphic-fetch"; import * as e6p from "es6-promise"; (e6p as any).polyfill(); +if (isIEorEDGE()) { + window.fetch = undefined as any; // ensure the polyfill runs +} +// tslint:disable-next-line +require("isomorphic-fetch"); import { convertToCSV, compareTimestamps, @@ -27,6 +31,7 @@ import { import { SASViyaApiClient } from "./SASViyaApiClient"; import { SAS9ApiClient } from "./SAS9ApiClient"; import { FileUploader } from "./FileUploader"; +import { isIEorEDGE } from "./utils/isIeOrEdge"; const defaultConfig: SASjsConfig = { serverUrl: "", @@ -654,9 +659,11 @@ export default class SASjs { try { responseJson = JSON.parse(response!.result); } catch { - responseJson = JSON.parse(parseWeboutResponse(response!.result)); + responseJson = JSON.parse( + parseWeboutResponse(response!.result) + ); } - + return responseJson; }) .catch(async (e) => { diff --git a/src/utils/isIeOrEdge.ts b/src/utils/isIeOrEdge.ts new file mode 100644 index 0000000..7dc4eea --- /dev/null +++ b/src/utils/isIeOrEdge.ts @@ -0,0 +1,23 @@ +export function isIEorEDGE() { + const ua = window.navigator.userAgent; + + const msie = ua.indexOf("MSIE "); + if (msie > 0) { + // IE 10 or older => return version number + return true; + } + + const trident = ua.indexOf("Trident/"); + if (trident > 0) { + return true; + } + + const edge = ua.indexOf("Edge/"); + if (edge > 0) { + // Edge (IE 12+) => return version number + return true; + } + + // other browser + return false; +}