@sasjs/cli 4.4.0 → 4.4.2

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.
@@ -86,18 +86,18 @@ function runSasCode(target, filePath, compile, logFile, source) {
86
86
  var _a;
87
87
  if (compile === void 0) { compile = false; }
88
88
  return __awaiter(this, void 0, void 0, function () {
89
- var isTempFile, sourcefilePathParts, sourceFolderPath, sasFilePath, sasFileContent, linesToExecute, macroVars, macroVarStatements;
90
- var _b;
91
- return __generator(this, function (_c) {
92
- switch (_c.label) {
89
+ var isTempFile, sourcefilePathParts, sourceFolderPath, sasFilePath, sasFileContent, linesToExecute, macroVars, macroVarStatements, _b;
90
+ var _c;
91
+ return __generator(this, function (_d) {
92
+ switch (_d.label) {
93
93
  case 0:
94
94
  isTempFile = false;
95
95
  if (!isUrl(filePath)) return [3 /*break*/, 2];
96
96
  ;
97
97
  return [4 /*yield*/, createFileFromUrl(filePath)];
98
98
  case 1:
99
- (_b = _c.sent(), isTempFile = _b.isTempFile, filePath = _b.tempFilePath);
100
- _c.label = 2;
99
+ (_c = _d.sent(), isTempFile = _c.isTempFile, filePath = _c.tempFilePath);
100
+ _d.label = 2;
101
101
  case 2:
102
102
  if (!compile) return [3 /*break*/, 5];
103
103
  if (!/\.sas$/i.test(filePath)) return [3 /*break*/, 4];
@@ -106,41 +106,46 @@ function runSasCode(target, filePath, compile, logFile, source) {
106
106
  sourceFolderPath = sourcefilePathParts.join(path_1.default.sep);
107
107
  return [4 /*yield*/, (0, __1.compileSingleFile)(target, 'identify', filePath, (0, internal_1.getDestinationServicePath)(sourceFolderPath), true)];
108
108
  case 3:
109
- (filePath = (_c.sent()).destinationPath);
109
+ (filePath = (_d.sent()).destinationPath);
110
110
  (_a = process.logger) === null || _a === void 0 ? void 0 : _a.success("File Compiled and placed at: ".concat(filePath, " ."));
111
111
  return [3 /*break*/, 5];
112
112
  case 4:
113
113
  process.logger.info('Compile flag has no effect on files with extension type other than sas');
114
- _c.label = 5;
114
+ _d.label = 5;
115
115
  case 5:
116
116
  sasFilePath = (0, utils_1.getAbsolutePath)(filePath, process.currentDir);
117
117
  return [4 /*yield*/, (0, utils_1.readFile)(sasFilePath)];
118
118
  case 6:
119
- sasFileContent = _c.sent();
119
+ sasFileContent = _d.sent();
120
120
  linesToExecute = sasFileContent.replace(/\r\n/g, '\n').split('\n');
121
121
  if (!source) return [3 /*break*/, 8];
122
122
  return [4 /*yield*/, (0, parseSourceFile_1.parseSourceFile)(source)];
123
123
  case 7:
124
- macroVars = _c.sent();
124
+ macroVars = _d.sent();
125
125
  macroVarStatements = (0, utils_2.convertToSASStatements)(macroVars).split('\n');
126
126
  linesToExecute = __spreadArray(__spreadArray([], __read(macroVarStatements), false), __read(linesToExecute), false);
127
- _c.label = 8;
127
+ _d.label = 8;
128
128
  case 8:
129
129
  if (!isTempFile) return [3 /*break*/, 10];
130
130
  return [4 /*yield*/, (0, utils_1.deleteFile)(filePath)];
131
131
  case 9:
132
- _c.sent();
133
- _c.label = 10;
132
+ _d.sent();
133
+ _d.label = 10;
134
134
  case 10:
135
- if (!(target.serverType === utils_1.ServerType.SasViya)) return [3 /*break*/, 12];
136
- return [4 /*yield*/, executeOnSasViya(filePath, target, linesToExecute, logFile)];
137
- case 11: return [2 /*return*/, _c.sent()];
138
- case 12:
139
- if (!(target.serverType === utils_1.ServerType.Sas9)) return [3 /*break*/, 14];
140
- return [4 /*yield*/, executeOnSas9(target, linesToExecute, logFile)];
141
- case 13: return [2 /*return*/, _c.sent()];
142
- case 14: return [4 /*yield*/, executeOnSasJS(filePath, target, linesToExecute, logFile)];
143
- case 15: return [2 /*return*/, _c.sent()];
135
+ _b = target.serverType;
136
+ switch (_b) {
137
+ case utils_1.ServerType.SasViya: return [3 /*break*/, 11];
138
+ case utils_1.ServerType.Sas9: return [3 /*break*/, 13];
139
+ case utils_1.ServerType.Sasjs: return [3 /*break*/, 15];
140
+ }
141
+ return [3 /*break*/, 17];
142
+ case 11: return [4 /*yield*/, executeOnSasViya(filePath, target, linesToExecute, logFile)];
143
+ case 12: return [2 /*return*/, _d.sent()];
144
+ case 13: return [4 /*yield*/, executeOnSas9(target, linesToExecute, logFile)];
145
+ case 14: return [2 /*return*/, _d.sent()];
146
+ case 15: return [4 /*yield*/, executeOnSasJS(filePath, target, linesToExecute, logFile)];
147
+ case 16: return [2 /*return*/, _d.sent()];
148
+ case 17: return [2 /*return*/];
144
149
  }
145
150
  });
146
151
  });
@@ -245,10 +250,12 @@ function executeOnSas9(target, linesToExecute, logFile) {
245
250
  function executeOnSasJS(filePath, target, linesToExecute, logFile) {
246
251
  var _a;
247
252
  return __awaiter(this, void 0, void 0, function () {
248
- var authConfig, _b, sasjs, fileExtension, executionResult;
253
+ var sasjs, authConfig, _b, fileExtension, log;
249
254
  return __generator(this, function (_c) {
250
255
  switch (_c.label) {
251
- case 0: return [4 /*yield*/, (0, utils_2.isSasJsServerInServerMode)(target)];
256
+ case 0:
257
+ sasjs = (0, config_1.getSASjs)(target);
258
+ return [4 /*yield*/, (0, utils_2.isSasJsServerInServerMode)(target)];
252
259
  case 1:
253
260
  if (!(_c.sent())) return [3 /*break*/, 3];
254
261
  return [4 /*yield*/, (0, config_1.getAuthConfig)(target)];
@@ -260,7 +267,6 @@ function executeOnSasJS(filePath, target, linesToExecute, logFile) {
260
267
  _c.label = 4;
261
268
  case 4:
262
269
  authConfig = _b;
263
- sasjs = (0, config_1.getSASjs)(target);
264
270
  fileExtension = path_1.default.extname(filePath).slice(1);
265
271
  return [4 /*yield*/, sasjs.executeScript({
266
272
  linesOfCode: linesToExecute,
@@ -268,12 +274,15 @@ function executeOnSasJS(filePath, target, linesToExecute, logFile) {
268
274
  authConfig: authConfig
269
275
  })];
270
276
  case 5:
271
- executionResult = _c.sent();
277
+ log = (_c.sent()).log;
278
+ if (!log) {
279
+ throw new node_1.ErrorResponse('We were not able to fetch the log this time.');
280
+ }
272
281
  (_a = process.logger) === null || _a === void 0 ? void 0 : _a.success('Job execution completed!');
273
- return [4 /*yield*/, createOutputFile(executionResult || '', logFile)];
282
+ return [4 /*yield*/, createOutputFile(log, logFile)];
274
283
  case 6:
275
284
  _c.sent();
276
- return [2 /*return*/, { log: executionResult }];
285
+ return [2 /*return*/, { log: log }];
277
286
  }
278
287
  });
279
288
  });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,149 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __generator = (this && this.__generator) || function (thisArg, body) {
35
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
36
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
+ function verb(n) { return function (v) { return step([n, v]); }; }
38
+ function step(op) {
39
+ if (f) throw new TypeError("Generator is already executing.");
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
+ 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;
42
+ if (y = 0, t) op = [op[0] & 2, t.value];
43
+ switch (op[0]) {
44
+ case 0: case 1: t = op; break;
45
+ case 4: _.label++; return { value: op[1], done: false };
46
+ case 5: _.label++; y = op[1]; op = [0]; continue;
47
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
48
+ default:
49
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
50
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
51
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
52
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
53
+ if (t[2]) _.ops.pop();
54
+ _.trys.pop(); continue;
55
+ }
56
+ op = body.call(thisArg, _);
57
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
58
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
59
+ }
60
+ };
61
+ Object.defineProperty(exports, "__esModule", { value: true });
62
+ var utils_1 = require("@sasjs/utils");
63
+ var run_1 = require("../run");
64
+ var utilsModule = __importStar(require("../../../utils/utils"));
65
+ var configModule = __importStar(require("../../../utils/config"));
66
+ var saveLogModule = __importStar(require("../../../utils/saveLog"));
67
+ var fileModule = __importStar(require("@sasjs/utils/file"));
68
+ var getAbsolutePathModule = __importStar(require("@sasjs/utils/file/getAbsolutePath"));
69
+ var node_1 = __importStar(require("@sasjs/adapter/node"));
70
+ var utils_2 = require("../../../utils");
71
+ var sasjs = new node_1.default();
72
+ describe('sasjs run', function () {
73
+ describe('SASJS', function () {
74
+ var target = new utils_1.Target({
75
+ name: 'test',
76
+ appLoc: '/Public/test/',
77
+ serverType: utils_1.ServerType.Sasjs,
78
+ contextName: 'test context'
79
+ });
80
+ var logData = 'SAS log';
81
+ var filePath = 'test.sas';
82
+ beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
83
+ return __generator(this, function (_a) {
84
+ switch (_a.label) {
85
+ case 0: return [4 /*yield*/, (0, utils_2.setConstants)(false)];
86
+ case 1:
87
+ _a.sent();
88
+ return [2 /*return*/];
89
+ }
90
+ });
91
+ }); });
92
+ beforeEach(function () {
93
+ setupMocks(filePath, logData);
94
+ });
95
+ it('should saveLog function with correct log data', function () { return __awaiter(void 0, void 0, void 0, function () {
96
+ return __generator(this, function (_a) {
97
+ switch (_a.label) {
98
+ case 0:
99
+ jest
100
+ .spyOn(sasjs, 'executeScript')
101
+ .mockImplementation(function () { return Promise.resolve({ log: logData }); });
102
+ jest.spyOn(saveLogModule, 'saveLog').mockImplementation();
103
+ process.sasjsConstants.buildDestinationResultsFolder = __dirname;
104
+ return [4 /*yield*/, (0, run_1.runSasCode)(target, filePath, false, '')];
105
+ case 1:
106
+ _a.sent();
107
+ expect(utils_2.saveLog).toHaveBeenCalledWith(logData, expect.stringMatching(/sasjs-run-\d{14}\.log$/), '', false, undefined);
108
+ return [2 /*return*/];
109
+ }
110
+ });
111
+ }); });
112
+ it('should throw an error if log is not returned by @sasjs/adapter', function () { return __awaiter(void 0, void 0, void 0, function () {
113
+ var expectedError;
114
+ return __generator(this, function (_a) {
115
+ switch (_a.label) {
116
+ case 0:
117
+ jest
118
+ .spyOn(sasjs, 'executeScript')
119
+ .mockImplementation(function () { return Promise.resolve({}); });
120
+ expectedError = new node_1.ErrorResponse('We were not able to fetch the log this time.');
121
+ return [4 /*yield*/, expect((0, run_1.runSasCode)(target, filePath, false, '')).rejects.toEqual(expectedError)];
122
+ case 1:
123
+ _a.sent();
124
+ return [2 /*return*/];
125
+ }
126
+ });
127
+ }); });
128
+ });
129
+ });
130
+ var setupMocks = function (filePath, logData) {
131
+ jest
132
+ .spyOn(getAbsolutePathModule, 'getAbsolutePath')
133
+ .mockImplementation(function () { return filePath; });
134
+ jest
135
+ .spyOn(fileModule, 'readFile')
136
+ .mockImplementation(function () { return Promise.resolve('test SAS code;'); });
137
+ jest
138
+ .spyOn(utilsModule, 'isSasJsServerInServerMode')
139
+ .mockImplementation(function () { return Promise.resolve(true); });
140
+ jest.spyOn(configModule, 'getAuthConfig').mockImplementation(function () {
141
+ return Promise.resolve({
142
+ access_token: 'test_access_token',
143
+ refresh_token: 'test_refresh_token',
144
+ client: 'test_client',
145
+ secret: ''
146
+ });
147
+ });
148
+ jest.spyOn(configModule, 'getSASjs').mockImplementation(function (target) { return sasjs; });
149
+ };
package/package.json CHANGED
@@ -22,7 +22,7 @@
22
22
  "preinstall": "npm run nodeVersionMessage",
23
23
  "prepare": "git rev-parse --git-dir && git config core.hooksPath ./.git-hooks || true"
24
24
  },
25
- "testServerTypes": "sasjs,sas9",
25
+ "testServerTypes": "sasjs",
26
26
  "release": {
27
27
  "branches": [
28
28
  "main"
@@ -50,13 +50,13 @@
50
50
  "access": "public"
51
51
  },
52
52
  "dependencies": {
53
- "@sasjs/adapter": "4.5.0",
54
- "@sasjs/core": "4.45.4",
55
- "@sasjs/lint": "2.3.0",
53
+ "@sasjs/adapter": "4.5.1",
54
+ "@sasjs/core": "4.46.3",
55
+ "@sasjs/lint": "2.3.1",
56
56
  "@sasjs/utils": "3.3.0",
57
57
  "adm-zip": "0.5.9",
58
58
  "chalk": "4.1.2",
59
- "dotenv": "10.0.0",
59
+ "dotenv": "16.0.3",
60
60
  "esm": "3.2.25",
61
61
  "find": "0.3.0",
62
62
  "js-base64": "3.7.2",
@@ -102,5 +102,5 @@
102
102
  "typescript": "4.9.5",
103
103
  "util": "0.12.4"
104
104
  },
105
- "version": "4.4.0"
105
+ "version": "4.4.2"
106
106
  }