1
0
mirror of https://github.com/sasjs/adapter.git synced 2026-01-05 03:30:05 +00:00

chore(*): add .prettierrc, fix formatting

This commit is contained in:
Krishna Acondy
2020-08-31 09:15:02 +01:00
parent 688221c042
commit 929d7b993b
20 changed files with 225 additions and 209 deletions

View File

@@ -10,7 +10,7 @@ export class FileUploader {
private serverUrl: string,
private jobsPath: string,
private setCsrfTokenWeb: any,
private csrfToken: CsrfToken | null = null,
private csrfToken: CsrfToken | null = null
) {}
private retryCount = 0;
@@ -33,7 +33,7 @@ export class FileUploader {
}${paramsString}`;
const headers = {
"cache-control": "no-cache",
"cache-control": "no-cache"
};
return new Promise((resolve, reject) => {
@@ -49,7 +49,7 @@ export class FileUploader {
method: "POST",
body: formData,
referrerPolicy: "same-origin",
headers,
headers
})
.then(async (response) => {
if (!response.ok) {
@@ -60,7 +60,7 @@ export class FileUploader {
const token = response.headers.get(tokenHeader);
this.csrfToken = {
headerName: tokenHeader,
value: token || "",
value: token || ""
};
this.setCsrfTokenWeb(this.csrfToken);

View File

@@ -10,7 +10,7 @@ export class SAS9ApiClient {
*/
public getConfig() {
return {
serverUrl: this.serverUrl,
serverUrl: this.serverUrl
};
}
@@ -37,9 +37,9 @@ export class SAS9ApiClient {
const executeScriptRequest = {
method: "PUT",
headers: {
Accept: "application/json",
Accept: "application/json"
},
body: `command=${requestPayload}`,
body: `command=${requestPayload}`
};
const executeScriptResponse = await fetch(
`${this.serverUrl}/sas/servers/${serverName}/cmd?repositoryName=${repositoryName}`,

View File

@@ -2,7 +2,7 @@ import {
isAuthorizeFormRequired,
parseAndSubmitAuthorizeForm,
convertToCSV,
makeRequest,
makeRequest
} from "./utils";
import * as NodeFormData from "form-data";
import * as path from "path";
@@ -53,7 +53,7 @@ export class SASViyaApiClient {
public getConfig() {
return {
serverUrl: this.serverUrl,
rootFolderName: this.rootFolderName,
rootFolderName: this.rootFolderName
};
}
@@ -73,7 +73,7 @@ export class SASViyaApiClient {
*/
public async getAllContexts(accessToken?: string) {
const headers: any = {
"Content-Type": "application/json",
"Content-Type": "application/json"
};
if (accessToken) {
headers.Authorization = `Bearer ${accessToken}`;
@@ -88,7 +88,7 @@ export class SASViyaApiClient {
id: context.id,
name: context.name,
version: context.version,
attributes: {},
attributes: {}
}));
}
@@ -98,7 +98,7 @@ export class SASViyaApiClient {
*/
public async getExecutableContexts(accessToken?: string) {
const headers: any = {
"Content-Type": "application/json",
"Content-Type": "application/json"
};
if (accessToken) {
headers.Authorization = `Bearer ${accessToken}`;
@@ -139,8 +139,8 @@ export class SASViyaApiClient {
name: contextsList[index].name,
version: contextsList[index].version,
attributes: {
sysUserId,
},
sysUserId
}
});
}
});
@@ -155,7 +155,7 @@ export class SASViyaApiClient {
*/
public async createSession(contextName: string, accessToken?: string) {
const headers: any = {
"Content-Type": "application/json",
"Content-Type": "application/json"
};
if (accessToken) {
@@ -178,8 +178,8 @@ export class SASViyaApiClient {
method: "POST",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
"Content-Type": "application/json"
}
};
const { result: createdSession } = await this.request<Session>(
`${this.serverUrl}/compute/contexts/${executionContext.id}/sessions`,
@@ -210,7 +210,7 @@ export class SASViyaApiClient {
silent = !debug;
try {
const headers: any = {
"Content-Type": "application/json",
"Content-Type": "application/json"
};
if (accessToken) {
@@ -227,7 +227,7 @@ export class SASViyaApiClient {
_OMITJSONLOG: true,
_OMITSESSIONRESULTS: true,
_OMITTEXTLISTING: true,
_OMITTEXTLOG: true,
_OMITTEXTLOG: true
};
if (debug) {
@@ -242,7 +242,7 @@ export class SASViyaApiClient {
let jobVariables: any = {
SYS_JES_JOB_URI: "",
_program: this.rootFolderName + "/" + jobName,
_program: this.rootFolderName + "/" + jobName
};
let files: any[] = [];
@@ -271,8 +271,8 @@ export class SASViyaApiClient {
description: "Powered by SASjs",
code: linesOfCode,
variables: jobVariables,
arguments: jobArguments,
}),
arguments: jobArguments
})
};
const { result: postedJob, etag } = await this.request<Job>(
@@ -309,7 +309,7 @@ export class SASViyaApiClient {
log = await this.request<any>(
`${this.serverUrl}${logLink.href}/content?limit=10000`,
{
headers,
headers
}
).then((res: any) =>
res.result.items.map((i: any) => i.line).join("\n")
@@ -327,7 +327,7 @@ export class SASViyaApiClient {
{ headers },
"text"
).catch((e) => ({
result: JSON.stringify(e),
result: JSON.stringify(e)
}));
}
@@ -401,8 +401,8 @@ export class SASViyaApiClient {
method: "POST",
body: JSON.stringify({
name: folderName,
type: "folder",
}),
type: "folder"
})
};
createFolderRequest.headers = { "Content-Type": "application/json" };
@@ -449,7 +449,7 @@ export class SASViyaApiClient {
method: "POST",
headers: {
"Content-Type": "application/vnd.sas.job.definition+json",
Accept: "application/vnd.sas.job.definition+json",
Accept: "application/vnd.sas.job.definition+json"
},
body: JSON.stringify({
name: jobName,
@@ -457,18 +457,18 @@ export class SASViyaApiClient {
{
name: "_addjesbeginendmacros",
type: "CHARACTER",
defaultValue: "false",
},
defaultValue: "false"
}
],
type: "Compute",
code,
}),
code
})
};
if (accessToken) {
createJobDefinitionRequest!.headers = {
...createJobDefinitionRequest.headers,
Authorization: `Bearer ${accessToken}`,
Authorization: `Bearer ${accessToken}`
};
}
@@ -487,7 +487,7 @@ export class SASViyaApiClient {
const authCode = await fetch(authUrl, {
referrerPolicy: "same-origin",
credentials: "include",
credentials: "include"
})
.then((response) => response.text())
.then(async (response) => {
@@ -543,7 +543,7 @@ export class SASViyaApiClient {
token = Buffer.from(clientId + ":" + clientSecret).toString("base64");
}
const headers = {
Authorization: "Basic " + token,
Authorization: "Basic " + token
};
let formData;
@@ -562,7 +562,7 @@ export class SASViyaApiClient {
credentials: "include",
headers,
body: formData as any,
referrerPolicy: "same-origin",
referrerPolicy: "same-origin"
}).then((res) => res.json());
return authResponse;
@@ -587,7 +587,7 @@ export class SASViyaApiClient {
token = Buffer.from(clientId + ":" + clientSecret).toString("base64");
}
const headers = {
Authorization: "Basic " + token,
Authorization: "Basic " + token
};
let formData;
@@ -606,7 +606,7 @@ export class SASViyaApiClient {
credentials: "include",
headers,
body: formData as any,
referrerPolicy: "same-origin",
referrerPolicy: "same-origin"
}).then((res) => res.json());
return authResponse;
@@ -626,7 +626,7 @@ export class SASViyaApiClient {
const deleteResponse = await this.request(url, {
method: "DELETE",
credentials: "include",
headers,
headers
});
return deleteResponse;
@@ -745,7 +745,7 @@ export class SASViyaApiClient {
(l) => l.rel === "getResource"
)?.href;
const requestInfo: any = {
method: "GET",
method: "GET"
};
const headers: any = { "Content-Type": "application/json" };
if (!!accessToken) {
@@ -765,7 +765,7 @@ export class SASViyaApiClient {
_OMITJSONLOG: true,
_OMITSESSIONRESULTS: true,
_OMITTEXTLISTING: true,
_OMITTEXTLOG: true,
_OMITTEXTLOG: true
};
if (debug) {
@@ -788,8 +788,8 @@ export class SASViyaApiClient {
name: `exec-${jobName}`,
description: "Powered by SASjs",
jobDefinition,
arguments: jobArguments,
}),
arguments: jobArguments
})
};
const { result: postedJob, etag } = await this.request<Job>(
`${this.serverUrl}/jobExecution/jobs?_action=wait`,
@@ -823,7 +823,7 @@ export class SASViyaApiClient {
log = await this.request<any>(
`${this.serverUrl}${logLink.href}/content`,
{
headers,
headers
}
).then((res: any) =>
res.result.items.map((i: any) => i.line).join("\n")
@@ -841,7 +841,7 @@ export class SASViyaApiClient {
const allItems = new Map<string, Job[]>();
const url = "/folders/folders/@item?path=" + this.rootFolderName;
const requestInfo: any = {
method: "GET",
method: "GET"
};
if (accessToken) {
requestInfo.headers = { Authorization: `Bearer ${accessToken}` };
@@ -893,7 +893,7 @@ export class SASViyaApiClient {
private async populateRootFolder(accessToken?: string) {
const url = "/folders/folders/@item?path=" + this.rootFolderName;
const requestInfo: RequestInit = {
method: "GET",
method: "GET"
};
if (accessToken) {
requestInfo.headers = { Authorization: `Bearer ${accessToken}` };
@@ -922,7 +922,7 @@ export class SASViyaApiClient {
let pollCount = 0;
const headers: any = {
"Content-Type": "application/json",
"If-None-Match": etag,
"If-None-Match": etag
};
if (accessToken) {
headers.Authorization = `Bearer ${accessToken}`;
@@ -942,7 +942,7 @@ export class SASViyaApiClient {
const { result: jobState } = await this.request<string>(
`${this.serverUrl}${stateLink.href}?_action=wait&wait=30`,
{
headers,
headers
},
"text"
);
@@ -974,7 +974,7 @@ export class SASViyaApiClient {
let pollCount = 0;
const headers: any = {
"Content-Type": "application/json",
"If-None-Match": etag,
"If-None-Match": etag
};
if (accessToken) {
headers.Authorization = `Bearer ${accessToken}`;
@@ -989,7 +989,7 @@ export class SASViyaApiClient {
const { result: state } = await this.request<string>(
`${this.serverUrl}${stateLink.href}?wait=30`,
{
headers,
headers
},
"text"
);
@@ -1010,7 +1010,7 @@ export class SASViyaApiClient {
private async uploadTables(data: any, accessToken?: string) {
const uploadedFiles = [];
const headers: any = {
"Content-Type": "application/json",
"Content-Type": "application/json"
};
if (accessToken) {
headers.Authorization = `Bearer ${accessToken}`;
@@ -1027,7 +1027,7 @@ export class SASViyaApiClient {
const createFileRequest = {
method: "POST",
body: csv,
headers,
headers
};
const uploadResponse = await this.request<any>(
@@ -1043,7 +1043,7 @@ export class SASViyaApiClient {
private async getFolderUri(folderPath: string, accessToken?: string) {
const url = "/folders/folders/@item?path=" + folderPath;
const requestInfo: any = {
method: "GET",
method: "GET"
};
if (accessToken) {
requestInfo.headers = { Authorization: `Bearer ${accessToken}` };
@@ -1072,7 +1072,7 @@ export class SASViyaApiClient {
if (this.csrfToken) {
options.headers = {
...options.headers,
[this.csrfToken.headerName]: this.csrfToken.value,
[this.csrfToken.headerName]: this.csrfToken.value
};
}
return await makeRequest<T>(

View File

@@ -2,7 +2,7 @@ import SASjs from "./index";
const adapter = new SASjs();
it("should parse SAS9 source code", async done => {
it("should parse SAS9 source code", async (done) => {
expect(sampleResponse).toBeTruthy();
const parsedSourceCode = (adapter as any).parseSAS9SourceCode(sampleResponse);
expect(parsedSourceCode).toBeTruthy();
@@ -16,7 +16,7 @@ it("should parse SAS9 source code", async done => {
done();
});
it("should parse generated code", async done => {
it("should parse generated code", async (done) => {
expect(sampleResponse).toBeTruthy();
const parsedGeneratedCode = (adapter as any).parseGeneratedCode(
sampleResponse

View File

@@ -21,7 +21,7 @@ import {
parseGeneratedCode,
parseWeboutResponse,
needsRetry,
asyncForEach,
asyncForEach
} from "./utils";
import {
SASjsConfig,
@@ -29,7 +29,7 @@ import {
SASjsWaitingRequest,
ServerType,
CsrfToken,
UploadFile,
UploadFile
} from "./types";
import { SASViyaApiClient } from "./SASViyaApiClient";
import { SAS9ApiClient } from "./SAS9ApiClient";
@@ -43,7 +43,7 @@ const defaultConfig: SASjsConfig = {
serverType: ServerType.SASViya,
debug: true,
contextName: "SAS Job Execution compute context",
useComputeApi: false,
useComputeApi: false
};
const requestRetryLimit = 5;
@@ -72,7 +72,7 @@ export default class SASjs {
constructor(config?: any) {
this.sasjsConfig = {
...defaultConfig,
...config,
...config
};
this.setupConfiguration();
@@ -270,7 +270,7 @@ export default class SASjs {
public async setSASjsConfig(config: SASjsConfig) {
this.sasjsConfig = {
...this.sasjsConfig,
...config,
...config
};
await this.setupConfiguration();
}
@@ -295,7 +295,7 @@ export default class SASjs {
return Promise.resolve({
isLoggedIn,
userName: this.userName,
userName: this.userName
});
}
@@ -308,7 +308,7 @@ export default class SASjs {
const loginParams: any = {
_service: "default",
username,
password,
password
};
this.userName = loginParams.username;
@@ -319,7 +319,7 @@ export default class SASjs {
return Promise.resolve({
isLoggedIn,
userName: this.userName,
userName: this.userName
});
}
@@ -336,8 +336,8 @@ export default class SASjs {
referrerPolicy: "same-origin",
body: loginParamsStr,
headers: new Headers({
"Content-Type": "application/x-www-form-urlencoded",
}),
"Content-Type": "application/x-www-form-urlencoded"
})
})
.then((response) => response.text())
.then(async (responseText) => {
@@ -364,7 +364,7 @@ export default class SASjs {
return {
isLoggedIn: loggedIn,
userName: this.userName,
userName: this.userName
};
})
.catch((e) => Promise.reject(e));
@@ -402,7 +402,7 @@ export default class SASjs {
this.setCsrfTokenWeb,
this.csrfTokenWeb
);
return fileUploader.uploadFile(sasJob, files, params);
}
@@ -435,7 +435,7 @@ export default class SASjs {
config = {
...this.sasjsConfig,
...config,
...config
};
sasJob = sasJob.startsWith("/") ? sasJob.replace("/", "") : sasJob;
@@ -526,13 +526,15 @@ export default class SASjs {
// members of type 'folder' should be processed first
if (serviceJson.members[0].members) {
serviceJson.members[0].members.sort((member: {type: string}) => member.type === 'folder' ? -1 : 1)
serviceJson.members[0].members.sort((member: { type: string }) =>
member.type === "folder" ? -1 : 1
);
}
const members =
serviceJson.members[0].name === "services"
? serviceJson.members[0].members
: serviceJson.members
: serviceJson.members;
await this.createFoldersAndServices(
appLoc,
@@ -553,10 +555,10 @@ export default class SASjs {
requestPromise: {
promise: null,
resolve: null,
reject: null,
reject: null
},
SASjob: sasJob,
data,
data
};
sasjsWaitingRequest.requestPromise.promise = new Promise(
@@ -588,7 +590,7 @@ export default class SASjs {
})
.catch(async (response) => {
let error = response.error || response;
if (needsRetry(JSON.stringify(error))) {
if (this.retryCountComputeApi < requestRetryLimit) {
let retryResponse = await this.executeJobViaComputeApi(
@@ -636,10 +638,10 @@ export default class SASjs {
requestPromise: {
promise: null,
resolve: null,
reject: null,
reject: null
},
SASjob: sasJob,
data,
data
};
sasjsWaitingRequest.requestPromise.promise = new Promise(
@@ -720,10 +722,10 @@ export default class SASjs {
requestPromise: {
promise: null,
resolve: null,
reject: null,
reject: null
},
SASjob: sasJob,
data,
data
};
const program = config.appLoc
? config.appLoc.replace(/\/?$/, "/") + sasJob.replace(/^\//, "")
@@ -737,7 +739,7 @@ export default class SASjs {
}`;
const requestParams = {
...this.getRequestParamsWeb(config),
...this.getRequestParamsWeb(config)
};
const formData = new FormData();
@@ -766,7 +768,7 @@ export default class SASjs {
}
const file = new Blob([csv], {
type: "application/csv",
type: "application/csv"
});
formData.append(name, file, `${name}.csv`);
@@ -823,7 +825,7 @@ export default class SASjs {
method: "POST",
body: formData,
referrerPolicy: "same-origin",
headers,
headers
})
.then(async (response) => {
if (!response.ok) {
@@ -834,7 +836,7 @@ export default class SASjs {
const token = response.headers.get(tokenHeader);
this.csrfTokenWeb = {
headerName: tokenHeader,
value: token || "",
value: token || ""
};
}
}
@@ -880,7 +882,7 @@ export default class SASjs {
resolve(JSON.parse(jsonResponseText));
} else {
reject({
MESSAGE: this.parseSAS9ErrorResponse(responseText),
MESSAGE: this.parseSAS9ErrorResponse(responseText)
});
}
} else if (
@@ -924,7 +926,7 @@ export default class SASjs {
return sasjsWaitingRequest.requestPromise.promise;
}
private setCsrfTokenWeb = (csrfToken: CsrfToken) => {
this.csrfTokenWeb = csrfToken;
};
@@ -1056,7 +1058,7 @@ export default class SASjs {
private fetchLogFileContent(logLink: string) {
return new Promise((resolve, reject) => {
fetch(logLink, {
method: "GET",
method: "GET"
})
.then((response: any) => response.text())
.then((response: any) => resolve(response))
@@ -1100,7 +1102,7 @@ export default class SASjs {
timestamp: new Date(),
sourceCode,
generatedCode,
SASWORK: sasWork,
SASWORK: sasWork
});
if (this.sasjsRequests.length > 20) {

View File

@@ -33,7 +33,7 @@ export class SessionManager {
async clearSession(id: string, accessToken?: string) {
const deleteSessionRequest = {
method: "DELETE",
headers: this.getHeaders(accessToken),
headers: this.getHeaders(accessToken)
};
return await this.request<Session>(
`${this.serverUrl}/compute/sessions/${id}`,
@@ -58,7 +58,7 @@ export class SessionManager {
private async createAndWaitForSession(accessToken?: string) {
const createSessionRequest = {
method: "POST",
headers: this.getHeaders(accessToken),
headers: this.getHeaders(accessToken)
};
const { result: createdSession, etag } = await this.request<Session>(
`${this.serverUrl}/compute/contexts/${this.currentContext!.id}/sessions`,
@@ -75,7 +75,7 @@ export class SessionManager {
const { result: contexts } = await this.request<{
items: Context[];
}>(`${this.serverUrl}/compute/contexts`, {
headers: this.getHeaders(accessToken),
headers: this.getHeaders(accessToken)
});
const contextsList =
@@ -99,7 +99,7 @@ export class SessionManager {
private getHeaders(accessToken?: string) {
const headers: any = {
"Content-Type": "application/json",
"Content-Type": "application/json"
};
if (accessToken) {
headers.Authorization = `Bearer ${accessToken}`;
@@ -117,7 +117,7 @@ export class SessionManager {
let sessionState = session.state;
const headers: any = {
...this.getHeaders(accessToken),
"If-None-Match": etag,
"If-None-Match": etag
};
const stateLink = session.links.find((l: any) => l.rel === "state");
return new Promise(async (resolve, _) => {
@@ -129,7 +129,7 @@ export class SessionManager {
const { result: state } = await this.request<string>(
`${this.serverUrl}${stateLink.href}?wait=30`,
{
headers,
headers
},
"text"
);
@@ -154,7 +154,7 @@ export class SessionManager {
if (this.csrfToken) {
options.headers = {
...options.headers,
[this.csrfToken.headerName]: this.csrfToken.value,
[this.csrfToken.headerName]: this.csrfToken.value
};
}
return await makeRequest<T>(

View File

@@ -29,12 +29,12 @@ export async function makeRequest<T>(
const token = response.headers.get(tokenHeader);
callback({
headerName: tokenHeader,
value: token || "",
value: token || ""
});
retryRequest = {
...request,
headers: { ...request.headers, [tokenHeader]: token },
headers: { ...request.headers, [tokenHeader]: token }
};
return fetch(url, retryRequest).then((res) => {
etag = res.headers.get("ETag");

View File

@@ -36,7 +36,7 @@ export const parseAndSubmitAuthorizeForm = async (
method: "POST",
credentials: "include",
body: formData,
referrerPolicy: "same-origin",
referrerPolicy: "same-origin"
})
.then((res) => res.text())
.then((res) => {

View File

@@ -1,16 +1,16 @@
export const parseWeboutResponse = (response: string) => {
let sasResponse = "";
let sasResponse = "";
if (response.includes(">>weboutBEGIN<<")) {
try {
sasResponse = response
.split(">>weboutBEGIN<<")[1]
.split(">>weboutEND<<")[0];
} catch (e) {
sasResponse = "";
console.error(e);
}
if (response.includes(">>weboutBEGIN<<")) {
try {
sasResponse = response
.split(">>weboutBEGIN<<")[1]
.split(">>weboutEND<<")[0];
} catch (e) {
sasResponse = "";
console.error(e);
}
}
return sasResponse;
}
return sasResponse;
};