@sasjs/cli 4.3.0 → 4.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/commands/add/addCommand.js +2 -2
- package/build/commands/add/addCredential.js +6 -34
- package/build/commands/add/spec/addCommand.spec.js +5 -3
- package/build/commands/create/spec/angularAppFiles.js +1 -2
- package/build/commands/deploy/internal/executeDeployScriptSasViya.js +1 -3
- package/build/commands/request/request.js +11 -6
- package/build/commands/run/spec/run.spec.server.viya.js +1 -1
- package/build/commands/shared/fetchLogFileContent.d.ts +1 -6
- package/build/types/index.d.ts +1 -0
- package/build/types/index.js +15 -0
- package/build/types/log.d.ts +7 -0
- package/build/types/log.js +2 -0
- package/build/utils/auth.js +11 -1
- package/build/utils/saveLog.d.ts +2 -1
- package/build/utils/saveLog.js +7 -6
- package/build/utils/spec/saveLog.spec.d.ts +1 -0
- package/build/utils/spec/saveLog.spec.js +88 -0
- package/build/utils/utils.d.ts +2 -5
- package/package.json +4 -4
|
@@ -156,7 +156,7 @@ var AddCommand = /** @class */ (function (_super) {
|
|
|
156
156
|
})
|
|
157
157
|
.catch(function (err) {
|
|
158
158
|
var _a;
|
|
159
|
-
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.error('Error adding credentials
|
|
159
|
+
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.error('Error adding credentials.', err.toString());
|
|
160
160
|
return command_1.ReturnCode.InternalError;
|
|
161
161
|
})];
|
|
162
162
|
case 2: return [2 /*return*/, _b.sent()];
|
|
@@ -176,7 +176,7 @@ var AddCommand = /** @class */ (function (_super) {
|
|
|
176
176
|
})
|
|
177
177
|
.catch(function (err) {
|
|
178
178
|
var _a;
|
|
179
|
-
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.error('Error adding target
|
|
179
|
+
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.error('Error adding target.', err);
|
|
180
180
|
return command_1.ReturnCode.InternalError;
|
|
181
181
|
})];
|
|
182
182
|
case 1: return [2 /*return*/, _a.sent()];
|
|
@@ -10,29 +10,6 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
-
}
|
|
19
|
-
Object.defineProperty(o, k2, desc);
|
|
20
|
-
}) : (function(o, m, k, k2) {
|
|
21
|
-
if (k2 === undefined) k2 = k;
|
|
22
|
-
o[k2] = m[k];
|
|
23
|
-
}));
|
|
24
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
-
}) : function(o, v) {
|
|
27
|
-
o["default"] = v;
|
|
28
|
-
});
|
|
29
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
-
if (mod && mod.__esModule) return mod;
|
|
31
|
-
var result = {};
|
|
32
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
-
__setModuleDefault(result, mod);
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
13
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37
14
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
15
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -77,7 +54,7 @@ exports.createEnvFileForSasjs = exports.createEnvFileForSas9 = exports.createEnv
|
|
|
77
54
|
var path_1 = __importDefault(require("path"));
|
|
78
55
|
var logger_1 = require("@sasjs/utils/logger");
|
|
79
56
|
var types_1 = require("@sasjs/utils/types");
|
|
80
|
-
var node_1 =
|
|
57
|
+
var node_1 = __importDefault(require("@sasjs/adapter/node"));
|
|
81
58
|
var auth_1 = require("../../utils/auth");
|
|
82
59
|
var utils_1 = require("../../utils");
|
|
83
60
|
var utils_2 = require("@sasjs/utils");
|
|
@@ -123,7 +100,9 @@ var addCredential = function (target, insecure, targetScope) { return __awaiter(
|
|
|
123
100
|
case 4: return [4 /*yield*/, (0, input_1.getCredentialsInputForViya)(target.name)];
|
|
124
101
|
case 5:
|
|
125
102
|
_b = _j.sent(), client = _b.client, secret = _b.secret;
|
|
126
|
-
return [4 /*yield*/, (0, exports.getTokens)(target, client, secret, httpsAgentOptions)
|
|
103
|
+
return [4 /*yield*/, (0, exports.getTokens)(target, client, secret, httpsAgentOptions).catch(function (err) {
|
|
104
|
+
throw err;
|
|
105
|
+
})];
|
|
127
106
|
case 6:
|
|
128
107
|
_c = _j.sent(), access_token = _c.access_token, refresh_token = _c.refresh_token;
|
|
129
108
|
if (!(targetScope === targetScope_1.TargetScope.Local)) return [3 /*break*/, 8];
|
|
@@ -202,15 +181,8 @@ var getTokens = function (target, client, secret, httpsAgentOptions) { return __
|
|
|
202
181
|
httpsAgentOptions: httpsAgentOptions,
|
|
203
182
|
debug: ((_b = process.logger) === null || _b === void 0 ? void 0 : _b.logLevel) === logger_1.LogLevel.Debug
|
|
204
183
|
});
|
|
205
|
-
return [4 /*yield*/, (0, auth_1.getNewAccessToken)(adapter, client, secret, target).catch(function (
|
|
206
|
-
|
|
207
|
-
var errorMessage = "An error has occurred while validating your credentials: ".concat(e);
|
|
208
|
-
var checkCredentialsMessage = "Please check your Client ID ".concat(target.serverType === types_1.ServerType.Sasjs ? '' : 'and Client Secret ', "and try again.\n");
|
|
209
|
-
var errorMessageToDisplay = e instanceof node_1.CertificateError
|
|
210
|
-
? errorMessage
|
|
211
|
-
: "".concat(errorMessage, "\n").concat(checkCredentialsMessage);
|
|
212
|
-
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.error(errorMessageToDisplay);
|
|
213
|
-
throw e;
|
|
184
|
+
return [4 /*yield*/, (0, auth_1.getNewAccessToken)(adapter, client, secret, target).catch(function (err) {
|
|
185
|
+
throw err;
|
|
214
186
|
})];
|
|
215
187
|
case 1:
|
|
216
188
|
_a = _c.sent(), access_token = _a.access_token, refresh_token = _a.refresh_token;
|
|
@@ -92,6 +92,7 @@ var setConstantsUtils = __importStar(require("../../../utils/setConstants"));
|
|
|
92
92
|
var utils_1 = require("@sasjs/utils");
|
|
93
93
|
var types_1 = require("../../../types");
|
|
94
94
|
var command_1 = require("../../../types/command");
|
|
95
|
+
var node_1 = require("@sasjs/adapter/node");
|
|
95
96
|
describe('AddCommand', function () {
|
|
96
97
|
var defaultArgs = ['node', 'sasjs'];
|
|
97
98
|
beforeEach(function () {
|
|
@@ -252,20 +253,21 @@ describe('AddCommand - cred', function () {
|
|
|
252
253
|
});
|
|
253
254
|
}); });
|
|
254
255
|
it('should return the error code when execution was unsuccessful', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
255
|
-
var args, command, returnCode;
|
|
256
|
+
var args, loginError, command, returnCode;
|
|
256
257
|
return __generator(this, function (_a) {
|
|
257
258
|
switch (_a.label) {
|
|
258
259
|
case 0:
|
|
259
260
|
args = __spreadArray(__spreadArray([], __read(defaultArgs), false), ['add', 'cred', '-t', 'test'], false);
|
|
261
|
+
loginError = new node_1.LoginRequiredError("Error while fetching access token from /SASLogon/oauth/token\nThrown by the @sasjs/adapter getAccessTokenForViya function.\nPayload:\n{\n \"grant_type\": \"authorization_code\",\n \"code\": \"hD8O7b7t6i\"\n}\nHeaders:\n{\n \"Authorization\": \"Basic NEdMQXBwOjRHTEFwcDE=\",\n \"Accept\": \"application/json\"\n}\nClientId: 4GLApp\nClientSecret: 4GLApp1\n\nResponse from Viya is below.\nAuth error: {\n \"error\": \"invalid_token\",\n \"error_description\": \"No scopes were granted\"\n}\nPlease check your Client ID and Client Secret and try again.");
|
|
260
262
|
jest
|
|
261
263
|
.spyOn(addCredentialModule, 'addCredential')
|
|
262
|
-
.mockImplementation(function () { return Promise.reject(
|
|
264
|
+
.mockImplementation(function () { return Promise.reject(loginError); });
|
|
263
265
|
command = new addCommand_1.AddCommand(args);
|
|
264
266
|
return [4 /*yield*/, command.execute()];
|
|
265
267
|
case 1:
|
|
266
268
|
returnCode = _a.sent();
|
|
267
269
|
expect(returnCode).toEqual(command_1.ReturnCode.InternalError);
|
|
268
|
-
expect(process.logger.error).toHaveBeenCalledWith('Error adding credentials
|
|
270
|
+
expect(process.logger.error).toHaveBeenCalledWith('Error adding credentials.', loginError.toString());
|
|
269
271
|
return [2 /*return*/];
|
|
270
272
|
}
|
|
271
273
|
});
|
|
@@ -88,9 +88,7 @@ function executeDeployScriptSasViya(deployScriptName, target, linesToExecute, lo
|
|
|
88
88
|
log = executionResult.log;
|
|
89
89
|
}
|
|
90
90
|
else if (executionResult.log.items) {
|
|
91
|
-
log = executionResult.log.items
|
|
92
|
-
.map(function (i) { return i.line; })
|
|
93
|
-
.join(os_1.default.EOL);
|
|
91
|
+
log = executionResult.log.items.map(function (i) { return i.line; }).join(os_1.default.EOL);
|
|
94
92
|
}
|
|
95
93
|
else {
|
|
96
94
|
log = JSON.stringify(executionResult.log).replace(/\\n/g, os_1.default.EOL);
|
|
@@ -118,13 +118,18 @@ function runSasJob(target, isLocal, sasJobLocation, dataFilePath, configFilePath
|
|
|
118
118
|
return __generator(this, function (_a) {
|
|
119
119
|
switch (_a.label) {
|
|
120
120
|
case 0:
|
|
121
|
-
if (!((res && res.errorCode) || res.error)) return [3 /*break*/, 2];
|
|
121
|
+
if (!((res && res.errorCode) || (res && res.error))) return [3 /*break*/, 2];
|
|
122
122
|
(0, displayResult_1.displayError)('Request finished with errors.');
|
|
123
123
|
return [4 /*yield*/, saveLogFile(sasjs, sasJobLocation, logFile, jobPath)];
|
|
124
124
|
case 1:
|
|
125
125
|
_a.sent();
|
|
126
126
|
return [2 /*return*/];
|
|
127
127
|
case 2:
|
|
128
|
+
if (res === undefined) {
|
|
129
|
+
process.logger.warn('WEBOUT is not present in response payload.');
|
|
130
|
+
}
|
|
131
|
+
_a.label = 3;
|
|
132
|
+
case 3:
|
|
128
133
|
output = '';
|
|
129
134
|
if (res === null || res === void 0 ? void 0 : res.result)
|
|
130
135
|
res = res.result;
|
|
@@ -146,13 +151,13 @@ function runSasJob(target, isLocal, sasJobLocation, dataFilePath, configFilePath
|
|
|
146
151
|
else {
|
|
147
152
|
output = res;
|
|
148
153
|
}
|
|
149
|
-
if (!!!output) return [3 /*break*/,
|
|
154
|
+
if (!!!output) return [3 /*break*/, 5];
|
|
150
155
|
return [4 /*yield*/, writeOutput(outputPathParam, output, sasJobLocation)];
|
|
151
|
-
case
|
|
156
|
+
case 4:
|
|
152
157
|
_a.sent();
|
|
153
|
-
_a.label =
|
|
154
|
-
case
|
|
155
|
-
case
|
|
158
|
+
_a.label = 5;
|
|
159
|
+
case 5: return [4 /*yield*/, saveLogFile(sasjs, sasJobLocation, logFile, jobPath)];
|
|
160
|
+
case 6:
|
|
156
161
|
_a.sent();
|
|
157
162
|
result = true;
|
|
158
163
|
return [2 /*return*/];
|
|
@@ -382,7 +382,7 @@ describe('sasjs run with Viya', function () {
|
|
|
382
382
|
return __generator(this, function (_a) {
|
|
383
383
|
switch (_a.label) {
|
|
384
384
|
case 0:
|
|
385
|
-
logPart = "SASjs Streaming App Created! Check it out here:\n \n \n \n \n sas.
|
|
385
|
+
logPart = "SASjs Streaming App Created! Check it out here:\n \n \n \n \n your-sas-server.com/SASJobExecution?_FILE=".concat(target.appLoc, "/services/clickme.html&_debug=2\n");
|
|
386
386
|
return [4 /*yield*/, (0, build_1.build)(target)];
|
|
387
387
|
case 1:
|
|
388
388
|
_a.sent();
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import SASjs from '@sasjs/adapter/node';
|
|
2
|
-
|
|
3
|
-
items: {
|
|
4
|
-
line: string;
|
|
5
|
-
}[];
|
|
6
|
-
}
|
|
2
|
+
import { LogJson } from '../../types';
|
|
7
3
|
/**
|
|
8
4
|
* Fetches content of the log file
|
|
9
5
|
* @param {object} sasjs - configuration object of SAS adapter.
|
|
@@ -13,4 +9,3 @@ interface LogJson {
|
|
|
13
9
|
* @returns an object containing log lines in 'items' array.
|
|
14
10
|
*/
|
|
15
11
|
export declare const fetchLogFileContent: (sasjs: SASjs, accessToken: string, logUrl: string, logCount: number) => Promise<LogJson>;
|
|
16
|
-
export {};
|
package/build/types/index.d.ts
CHANGED
|
@@ -4,3 +4,4 @@ export { Folder } from './folder';
|
|
|
4
4
|
export { TargetScope } from './targetScope';
|
|
5
5
|
export { TestFlow, Coverage, CoverageType, CoverageState, TestResults, TestResultStatus, TestDescription, TestResult, TestResultDescription, TestResultCsv } from './testing';
|
|
6
6
|
export { Flow, FlowWave, FlowWaveJob } from './flow';
|
|
7
|
+
export * from './log';
|
package/build/types/index.js
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
17
|
exports.TestResultStatus = exports.CoverageState = exports.CoverageType = exports.TargetScope = exports.CommandBase = void 0;
|
|
4
18
|
var commandBase_1 = require("./command/commandBase");
|
|
@@ -9,3 +23,4 @@ var testing_1 = require("./testing");
|
|
|
9
23
|
Object.defineProperty(exports, "CoverageType", { enumerable: true, get: function () { return testing_1.CoverageType; } });
|
|
10
24
|
Object.defineProperty(exports, "CoverageState", { enumerable: true, get: function () { return testing_1.CoverageState; } });
|
|
11
25
|
Object.defineProperty(exports, "TestResultStatus", { enumerable: true, get: function () { return testing_1.TestResultStatus; } });
|
|
26
|
+
__exportStar(require("./log"), exports);
|
package/build/utils/auth.js
CHANGED
|
@@ -42,6 +42,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
42
42
|
exports.getNewAccessToken = exports.refreshTokens = exports.isRefreshTokenExpiring = exports.isAccessTokenExpiring = exports.getAuthCode = exports.getAuthUrl = void 0;
|
|
43
43
|
var utils_1 = require("@sasjs/utils");
|
|
44
44
|
var jwt_decode_1 = __importDefault(require("jwt-decode"));
|
|
45
|
+
var node_1 = require("@sasjs/adapter/node");
|
|
45
46
|
var getAuthUrl = function (serverType, serverUrl, clientId) {
|
|
46
47
|
return serverType === utils_1.ServerType.Sasjs
|
|
47
48
|
? "".concat(serverUrl, "/#/SASjsLogon?client_id=").concat(clientId, "&response_type=code")
|
|
@@ -124,7 +125,16 @@ function getNewAccessToken(sasjsInstance, clientId, clientSecret, target) {
|
|
|
124
125
|
return [4 /*yield*/, getAuthCode(authUrl)];
|
|
125
126
|
case 1:
|
|
126
127
|
authCode = _b.sent();
|
|
127
|
-
return [4 /*yield*/, sasjsInstance
|
|
128
|
+
return [4 /*yield*/, sasjsInstance
|
|
129
|
+
.getAccessToken(clientId, clientSecret, authCode)
|
|
130
|
+
.catch(function (err) {
|
|
131
|
+
var errorMessage = "An error has occurred while validating your credentials.\n".concat(err);
|
|
132
|
+
var checkCredentialsMessage = "Please check your Client ID ".concat(target.serverType === utils_1.ServerType.Sasjs ? '' : 'and Client Secret ', "and try again.\n");
|
|
133
|
+
var errorMessageToDisplay = err instanceof node_1.CertificateError
|
|
134
|
+
? errorMessage
|
|
135
|
+
: "".concat(errorMessage, "\n").concat(checkCredentialsMessage);
|
|
136
|
+
throw errorMessageToDisplay;
|
|
137
|
+
})];
|
|
128
138
|
case 2:
|
|
129
139
|
_a = _b.sent(), access_token = _a.access_token, refresh_token = _a.refresh_token;
|
|
130
140
|
return [2 /*return*/, { access_token: access_token, refresh_token: refresh_token }];
|
package/build/utils/saveLog.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { LogJson } from '../types';
|
|
2
|
+
export declare const saveLog: (logData: LogJson | string, logFile: string | undefined, jobPath: string, returnStatusOnly: boolean, silent?: boolean) => Promise<void>;
|
package/build/utils/saveLog.js
CHANGED
|
@@ -46,17 +46,18 @@ var _1 = require(".");
|
|
|
46
46
|
var saveLog = function (logData, logFile, jobPath, returnStatusOnly, silent) {
|
|
47
47
|
if (silent === void 0) { silent = false; }
|
|
48
48
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
49
|
-
var logPath, folderPath, parentFolderPath, logLines;
|
|
49
|
+
var error, logPath, folderPath, parentFolderPath, logLines;
|
|
50
50
|
var _a;
|
|
51
51
|
return __generator(this, function (_b) {
|
|
52
52
|
switch (_b.label) {
|
|
53
53
|
case 0:
|
|
54
|
-
if (
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
logPath = path_1.default.join(process.projectDir, "".concat(jobPath.split(path_1.default.sep).slice(-1).pop(), ".log"));
|
|
54
|
+
if (typeof logData !== 'string') {
|
|
55
|
+
error = logData.error;
|
|
56
|
+
if (error)
|
|
57
|
+
throw JSON.stringify(error, null, 2);
|
|
59
58
|
}
|
|
59
|
+
logPath = logFile ||
|
|
60
|
+
path_1.default.join(process.projectDir, "".concat(jobPath.split(path_1.default.sep).slice(-1).pop(), ".log"));
|
|
60
61
|
folderPath = logPath.split(path_1.default.sep);
|
|
61
62
|
folderPath.pop();
|
|
62
63
|
parentFolderPath = folderPath.join(path_1.default.sep);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
var saveLog_1 = require("../saveLog");
|
|
40
|
+
describe('saveLog', function () {
|
|
41
|
+
it('should throw an error if there is an error in logData', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
42
|
+
var errorObject, expectedError, logData;
|
|
43
|
+
return __generator(this, function (_a) {
|
|
44
|
+
switch (_a.label) {
|
|
45
|
+
case 0:
|
|
46
|
+
errorObject = {
|
|
47
|
+
errorCode: 5737,
|
|
48
|
+
message: 'This is the root node of a diagnostic error.',
|
|
49
|
+
details: ['Details are available from the nested error objects.'],
|
|
50
|
+
errors: [
|
|
51
|
+
{
|
|
52
|
+
errorCode: 5738,
|
|
53
|
+
message: 'The Compute provider for the Job Execution service failed to create job log file "4A3C0C80-87F3-4B44-A94A-68AF37E32521.log".',
|
|
54
|
+
details: [
|
|
55
|
+
'Log or listing output could not be streamed to the Files service.'
|
|
56
|
+
],
|
|
57
|
+
errors: [
|
|
58
|
+
{
|
|
59
|
+
errorCode: 5208,
|
|
60
|
+
message: 'Log or listing output could not be streamed to the Files service.',
|
|
61
|
+
details: [
|
|
62
|
+
'The file "FileResource1684161631532" cannot be uploaded because it is larger than 100 megabytes.',
|
|
63
|
+
'Files service errorCode=124009 httpStatusCode=400.'
|
|
64
|
+
],
|
|
65
|
+
links: [],
|
|
66
|
+
version: 2,
|
|
67
|
+
httpStatusCode: 500
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
links: [],
|
|
71
|
+
version: 2,
|
|
72
|
+
httpStatusCode: 500
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
links: [],
|
|
76
|
+
version: 2,
|
|
77
|
+
httpStatusCode: 207
|
|
78
|
+
};
|
|
79
|
+
expectedError = JSON.stringify(errorObject, null, 2);
|
|
80
|
+
logData = { items: [], error: errorObject };
|
|
81
|
+
return [4 /*yield*/, expect(function () { return (0, saveLog_1.saveLog)(logData, undefined, '', true); }).rejects.toEqual(expectedError)];
|
|
82
|
+
case 1:
|
|
83
|
+
_a.sent();
|
|
84
|
+
return [2 /*return*/];
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}); });
|
|
88
|
+
});
|
package/build/utils/utils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Target, MacroVars } from '@sasjs/utils';
|
|
2
2
|
import SASjs from '@sasjs/adapter/node';
|
|
3
|
+
import { LogJson } from '../types';
|
|
3
4
|
export declare function inExistingProject(folderPath: string): Promise<boolean>;
|
|
4
5
|
export declare function diff(a: any[], b: any[]): any[];
|
|
5
6
|
export declare function createReactApp(folderPath: string): Promise<void>;
|
|
@@ -16,11 +17,7 @@ export declare function executePowerShellScript(filePath: string, logFilePath: s
|
|
|
16
17
|
* Extracts plain text job log from fetched json log
|
|
17
18
|
* @param {object} logJson
|
|
18
19
|
*/
|
|
19
|
-
export declare function parseLogLines(logJson:
|
|
20
|
-
items: {
|
|
21
|
-
line: string;
|
|
22
|
-
}[];
|
|
23
|
-
}): string;
|
|
20
|
+
export declare function parseLogLines(logJson: LogJson): string;
|
|
24
21
|
/**
|
|
25
22
|
* Converts MacroVars JSON from command source param to sas statements
|
|
26
23
|
* The JSON must have the following structure:
|
package/package.json
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"access": "public"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@sasjs/adapter": "4.
|
|
53
|
+
"@sasjs/adapter": "4.5.1",
|
|
54
54
|
"@sasjs/core": "4.45.4",
|
|
55
55
|
"@sasjs/lint": "2.3.0",
|
|
56
56
|
"@sasjs/utils": "3.3.0",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"esm": "3.2.25",
|
|
61
61
|
"find": "0.3.0",
|
|
62
62
|
"js-base64": "3.7.2",
|
|
63
|
-
"jsdom": "
|
|
63
|
+
"jsdom": "22.1.0",
|
|
64
64
|
"jwt-decode": "3.1.2",
|
|
65
65
|
"lodash.groupby": "4.6.0",
|
|
66
66
|
"lodash.uniqby": "4.7.0",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"@types/debug": "4.1.7",
|
|
82
82
|
"@types/find": "0.2.1",
|
|
83
83
|
"@types/jest": "29.4.0",
|
|
84
|
-
"@types/jsdom": "21.1.
|
|
84
|
+
"@types/jsdom": "21.1.1",
|
|
85
85
|
"@types/lodash.groupby": "4.6.6",
|
|
86
86
|
"@types/lodash.uniqby": "4.7.6",
|
|
87
87
|
"@types/node": "18.14.1",
|
|
@@ -102,5 +102,5 @@
|
|
|
102
102
|
"typescript": "4.9.5",
|
|
103
103
|
"util": "0.12.4"
|
|
104
104
|
},
|
|
105
|
-
"version": "4.
|
|
105
|
+
"version": "4.4.1"
|
|
106
106
|
}
|