mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-03 10:40:06 +00:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c9b1273c31 | ||
|
|
59674744be | ||
|
|
870cc0055b | ||
|
|
0ffa62fab4 | ||
|
|
b4c7868fb6 | ||
|
|
2266578013 | ||
|
|
f2ebe1a5b0 |
59
src/SASjs.ts
59
src/SASjs.ts
@@ -1,6 +1,10 @@
|
||||
import "isomorphic-fetch";
|
||||
import * as e6p from "es6-promise";
|
||||
(e6p as any).polyfill();
|
||||
if (isIEorEdgeOrOldFirefox()) {
|
||||
window.fetch = undefined as any; // ensure the polyfill runs
|
||||
}
|
||||
// tslint:disable-next-line
|
||||
require("isomorphic-fetch");
|
||||
import {
|
||||
convertToCSV,
|
||||
compareTimestamps,
|
||||
@@ -12,6 +16,7 @@ import {
|
||||
isLogInSuccess,
|
||||
parseSourceCode,
|
||||
parseGeneratedCode,
|
||||
parseWeboutResponse,
|
||||
needsRetry,
|
||||
asyncForEach,
|
||||
} from "./utils";
|
||||
@@ -26,6 +31,7 @@ import {
|
||||
import { SASViyaApiClient } from "./SASViyaApiClient";
|
||||
import { SAS9ApiClient } from "./SAS9ApiClient";
|
||||
import { FileUploader } from "./FileUploader";
|
||||
import { isIEorEdgeOrOldFirefox } from "./utils/isIeOrEdge";
|
||||
|
||||
const defaultConfig: SASjsConfig = {
|
||||
serverUrl: "",
|
||||
@@ -559,7 +565,15 @@ export default class SASjs {
|
||||
this.appendSasjsRequest(response, sasJob, null);
|
||||
}
|
||||
|
||||
resolve(JSON.parse(response!.result));
|
||||
let responseJson;
|
||||
|
||||
try {
|
||||
responseJson = JSON.parse(response!.result);
|
||||
} catch {
|
||||
responseJson = JSON.parse(parseWeboutResponse(response!.result));
|
||||
}
|
||||
|
||||
resolve(responseJson);
|
||||
})
|
||||
.catch(async (e) => {
|
||||
if (needsRetry(JSON.stringify(e))) {
|
||||
@@ -639,7 +653,18 @@ export default class SASjs {
|
||||
} else {
|
||||
this.appendSasjsRequest(response, sasJob, null);
|
||||
}
|
||||
return JSON.parse(response!.result);
|
||||
|
||||
let responseJson;
|
||||
|
||||
try {
|
||||
responseJson = JSON.parse(response!.result);
|
||||
} catch {
|
||||
responseJson = JSON.parse(
|
||||
parseWeboutResponse(response!.result)
|
||||
);
|
||||
}
|
||||
|
||||
return responseJson;
|
||||
})
|
||||
.catch(async (e) => {
|
||||
if (needsRetry(JSON.stringify(e))) {
|
||||
@@ -834,7 +859,7 @@ export default class SASjs {
|
||||
} else {
|
||||
if (config.serverType === ServerType.SAS9 && config.debug) {
|
||||
this.updateUsername(responseText);
|
||||
const jsonResponseText = this.parseSAS9Response(responseText);
|
||||
const jsonResponseText = parseWeboutResponse(responseText);
|
||||
|
||||
if (jsonResponseText !== "") {
|
||||
resolve(JSON.parse(jsonResponseText));
|
||||
@@ -975,23 +1000,6 @@ export default class SASjs {
|
||||
return uri;
|
||||
}
|
||||
|
||||
private parseSAS9Response(response: string) {
|
||||
let sas9Response = "";
|
||||
|
||||
if (response.includes(">>weboutBEGIN<<")) {
|
||||
try {
|
||||
sas9Response = response
|
||||
.split(">>weboutBEGIN<<")[1]
|
||||
.split(">>weboutEND<<")[0];
|
||||
} catch (e) {
|
||||
sas9Response = "";
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
return sas9Response;
|
||||
}
|
||||
|
||||
private parseSAS9ErrorResponse(response: string) {
|
||||
const logLines = response.split("\n");
|
||||
const parsedLines: string[] = [];
|
||||
@@ -1049,7 +1057,12 @@ export default class SASjs {
|
||||
if (response && response.result && response.log) {
|
||||
sourceCode = parseSourceCode(response.log);
|
||||
generatedCode = parseGeneratedCode(response.log);
|
||||
sasWork = JSON.parse(response.result).WORK;
|
||||
|
||||
if (this.sasjsConfig.debug) {
|
||||
sasWork = JSON.parse(parseWeboutResponse(response.result)).WORK;
|
||||
} else {
|
||||
sasWork = JSON.parse(response.result).WORK;
|
||||
}
|
||||
} else {
|
||||
if (response) {
|
||||
sourceCode = parseSourceCode(response);
|
||||
@@ -1078,7 +1091,7 @@ export default class SASjs {
|
||||
|
||||
if (this.sasjsConfig.serverType === ServerType.SAS9) {
|
||||
try {
|
||||
jsonResponse = JSON.parse(this.parseSAS9Response(response));
|
||||
jsonResponse = JSON.parse(parseWeboutResponse(response));
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
|
||||
@@ -12,3 +12,4 @@ export * from "./parseSourceCode";
|
||||
export * from "./parseSasViyaLog";
|
||||
export * from "./serialize";
|
||||
export * from "./splitChunks";
|
||||
export * from "./parseWeboutResponse";
|
||||
|
||||
31
src/utils/isIeOrEdge.ts
Normal file
31
src/utils/isIeOrEdge.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
export function isIEorEdgeOrOldFirefox() {
|
||||
const ua = window.navigator.userAgent;
|
||||
|
||||
if (ua.indexOf("Firefox") > 0) {
|
||||
const version = parseInt(
|
||||
ua.substring(ua.lastIndexOf("Firefox/") + 8, ua.length),
|
||||
10
|
||||
);
|
||||
return version <= 60;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
16
src/utils/parseWeboutResponse.ts
Normal file
16
src/utils/parseWeboutResponse.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
export const parseWeboutResponse = (response: string) => {
|
||||
let sasResponse = "";
|
||||
|
||||
if (response.includes(">>weboutBEGIN<<")) {
|
||||
try {
|
||||
sasResponse = response
|
||||
.split(">>weboutBEGIN<<")[1]
|
||||
.split(">>weboutEND<<")[0];
|
||||
} catch (e) {
|
||||
sasResponse = "";
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
return sasResponse;
|
||||
}
|
||||
Reference in New Issue
Block a user