@sasjs/cli 3.8.2 → 3.8.5

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.
@@ -158,7 +158,7 @@ var AddCommand = /** @class */ (function (_super) {
158
158
  })
159
159
  .catch(function (err) {
160
160
  var _a;
161
- (_a = process.logger) === null || _a === void 0 ? void 0 : _a.error('Error adding credentials: ', err);
161
+ (_a = process.logger) === null || _a === void 0 ? void 0 : _a.error('Error adding credentials: ', err.toString());
162
162
  return command_1.ReturnCode.InternalError;
163
163
  })];
164
164
  case 2: return [2 /*return*/, _b.sent()];
@@ -174,7 +174,7 @@ var getTokens = function (target, client, secret, httpsAgentOptions) { return __
174
174
  });
175
175
  return [4 /*yield*/, (0, auth_1.getNewAccessToken)(adapter, client, secret, target).catch(function (e) {
176
176
  var _a;
177
- (_a = process.logger) === null || _a === void 0 ? void 0 : _a.error("An error has occurred while validating your credentials: ", e, "\nPlease check your Client ID ".concat(target.serverType === types_1.ServerType.Sasjs ? '' : 'and Client Secret ', "and try again.\n"));
177
+ (_a = process.logger) === null || _a === void 0 ? void 0 : _a.error("An error has occurred while validating your credentials: ".concat(e, "\nPlease check your Client ID ").concat(target.serverType === types_1.ServerType.Sasjs ? '' : 'and Client Secret ', "and try again.\n"));
178
178
  throw e;
179
179
  })];
180
180
  case 1:
@@ -160,7 +160,7 @@ function getAndValidateServerUrl(target) {
160
160
  case 0: return [4 /*yield*/, (0, input_1.getUrl)('Please enter a target server URL (including port, if relevant): ', 'Server URL is required.', target === null || target === void 0 ? void 0 : target.serverUrl)];
161
161
  case 1:
162
162
  serverUrl = _a.sent();
163
- return [2 /*return*/, serverUrl];
163
+ return [2 /*return*/, serverUrl.replace(/\/$/, '')];
164
164
  }
165
165
  });
166
166
  });
@@ -254,7 +254,7 @@ describe('AddCommand - cred', function () {
254
254
  case 1:
255
255
  returnCode = _a.sent();
256
256
  expect(returnCode).toEqual(command_1.ReturnCode.InternalError);
257
- expect(process.logger.error).toHaveBeenCalledWith('Error adding credentials: ', new Error('Test Error'));
257
+ expect(process.logger.error).toHaveBeenCalledWith('Error adding credentials: ', new Error('Test Error').toString());
258
258
  return [2 /*return*/];
259
259
  }
260
260
  });
@@ -0,0 +1,3 @@
1
+ export declare const testResponses: {
2
+ [key: string]: any;
3
+ };
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.testResponses = void 0;
4
+ exports.testResponses = {
5
+ 'dostuff.test.0': [
6
+ {
7
+ TEST_DESCRIPTION: 'dostuff 0 test description',
8
+ TEST_RESULT: 'FAIL'
9
+ }
10
+ ],
11
+ 'dostuff.test.1': [
12
+ {
13
+ TEST_DESCRIPTION: 'dostuff 1 test description',
14
+ TEST_RESULT: 'PASS'
15
+ }
16
+ ],
17
+ 'examplemacro.test': [
18
+ {
19
+ TEST_DESCRIPTION: 'examplemacro test.1 description',
20
+ TEST_RESULT: 'PASS'
21
+ }
22
+ ]
23
+ };
@@ -10,6 +10,25 @@ 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
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
13
32
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
33
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
34
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -54,9 +73,11 @@ var path_1 = __importDefault(require("path"));
54
73
  var test_1 = require("../test");
55
74
  var utils_1 = require("@sasjs/utils");
56
75
  var test_2 = require("../../../utils/test");
57
- var utils_2 = require("../../../utils");
76
+ var setConstants_1 = require("../../../utils/setConstants");
58
77
  var dotenv_1 = __importDefault(require("dotenv"));
59
78
  var __1 = require("../..");
79
+ var sasJsModules = __importStar(require("../../../utils/createSASjsInstance"));
80
+ var testResponses_1 = require("./mockedAdapter/testResponses");
60
81
  describe('sasjs test', function () {
61
82
  var expectedCoverageLcov = "TN:testsetup.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:exampleprogram.test.sas\nSF:jobs/jobs/exampleprogram.sas\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:standalone.test.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:examplemacro.test.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:shouldFail.test.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:dostuff.test.0.sas\nSF:services/admin/dostuff.sas\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:dostuff.test.1.sas\nSF:services/admin/dostuff.sas\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:testteardown.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record";
62
83
  describe('SASVIYA', function () {
@@ -76,23 +97,20 @@ describe('sasjs test', function () {
76
97
  _a.sent();
77
98
  return [4 /*yield*/, (0, __1.build)(target)];
78
99
  case 3:
79
- _a.sent();
80
- return [4 /*yield*/, (0, __1.deploy)(target, false)];
81
- case 4:
82
100
  _a.sent();
83
101
  process.logger = new utils_1.Logger(utils_1.LogLevel.Off);
84
102
  return [2 /*return*/];
85
103
  }
86
104
  });
87
105
  }); });
106
+ beforeEach(function () {
107
+ setupMocksForSASVIYA();
108
+ });
88
109
  afterAll(function () { return __awaiter(void 0, void 0, void 0, function () {
89
110
  return __generator(this, function (_a) {
90
111
  switch (_a.label) {
91
- case 0: return [4 /*yield*/, (0, test_2.removeTestServerFolder)("/Public/app/cli-tests/".concat(target.name), target)];
112
+ case 0: return [4 /*yield*/, (0, test_2.removeTestApp)(__dirname, target.name)];
92
113
  case 1:
93
- _a.sent();
94
- return [4 /*yield*/, (0, test_2.removeTestApp)(__dirname, target.name)];
95
- case 2:
96
114
  _a.sent();
97
115
  return [2 /*return*/];
98
116
  }
@@ -382,15 +400,15 @@ describe('sasjs test', function () {
382
400
  _a.sent();
383
401
  return [4 /*yield*/, (0, __1.build)(target)];
384
402
  case 3:
385
- _a.sent();
386
- return [4 /*yield*/, (0, __1.deploy)(target, false)];
387
- case 4:
388
403
  _a.sent();
389
404
  process.logger = new utils_1.Logger(utils_1.LogLevel.Off);
390
405
  return [2 /*return*/];
391
406
  }
392
407
  });
393
408
  }); });
409
+ beforeEach(function () {
410
+ setupMocksForSASJS();
411
+ });
394
412
  afterAll(function () { return __awaiter(void 0, void 0, void 0, function () {
395
413
  return __generator(this, function (_a) {
396
414
  switch (_a.label) {
@@ -574,7 +592,7 @@ function generateTarget(serverType) {
574
592
  ? process.env.SAS9_SERVER_URL
575
593
  : process.env.SASJS_SERVER_URL),
576
594
  appLoc: "/Public/app/cli-tests/".concat(targetName),
577
- contextName: utils_2.contextName,
595
+ contextName: setConstants_1.contextName,
578
596
  macroFolders: ['sasjs/macros'],
579
597
  serviceConfig: {
580
598
  serviceFolders: [],
@@ -631,3 +649,43 @@ var copyTestFiles = function (appName) { return __awaiter(void 0, void 0, void 0
631
649
  }
632
650
  });
633
651
  }); };
652
+ var setupMocksForSASVIYA = function () {
653
+ jest
654
+ .spyOn(sasJsModules, 'createSASjsInstance')
655
+ .mockImplementation(function (config) {
656
+ return {
657
+ request: function (sasJob) { return __awaiter(void 0, void 0, void 0, function () {
658
+ var testName;
659
+ return __generator(this, function (_a) {
660
+ testName = sasJob.split('/').pop() || '';
661
+ if (testName === 'shouldFail.test') {
662
+ throw {
663
+ errorCode: 404,
664
+ error: { details: { result: 'some log from server' } }
665
+ };
666
+ }
667
+ return [2 /*return*/, {
668
+ result: { test_results: testResponses_1.testResponses[testName] },
669
+ log: 'some log from server'
670
+ }];
671
+ });
672
+ }); }
673
+ };
674
+ });
675
+ };
676
+ var setupMocksForSASJS = function () {
677
+ jest
678
+ .spyOn(sasJsModules, 'createSASjsInstance')
679
+ .mockImplementation(function (config) {
680
+ return {
681
+ request: function (sasJob) { return __awaiter(void 0, void 0, void 0, function () {
682
+ var testName, test_results;
683
+ return __generator(this, function (_a) {
684
+ testName = sasJob.split('/').pop() || '';
685
+ test_results = testResponses_1.testResponses[testName];
686
+ return [2 /*return*/, { result: { test_results: test_results } }];
687
+ });
688
+ }); }
689
+ };
690
+ });
691
+ };
@@ -82,10 +82,10 @@ var file_1 = require("../../utils/file");
82
82
  var config_1 = require("../../utils/config");
83
83
  var displayResult_1 = require("../../utils/displayResult");
84
84
  var utils_1 = require("@sasjs/utils");
85
- var node_1 = __importDefault(require("@sasjs/adapter/node"));
86
85
  var path_1 = __importDefault(require("path"));
87
86
  var chalk_1 = __importDefault(require("chalk"));
88
87
  var utils_2 = require("../../utils/utils");
88
+ var createSASjsInstance_1 = require("../../utils/createSASjsInstance");
89
89
  function runTest(target, testRegExps, outDirectory, flowSourcePath) {
90
90
  var _a, _b;
91
91
  if (testRegExps === void 0) { testRegExps = []; }
@@ -146,7 +146,7 @@ function runTest(target, testRegExps, outDirectory, flowSourcePath) {
146
146
  })), false);
147
147
  if (testFlow.testTearDown)
148
148
  flow.push(testFlow.testTearDown);
149
- sasjs = new node_1.default({
149
+ sasjs = (0, createSASjsInstance_1.createSASjsInstance)({
150
150
  serverUrl: target.serverUrl,
151
151
  httpsAgentOptions: target.httpsAgentOptions,
152
152
  appLoc: target.appLoc,
@@ -204,14 +204,15 @@ function runTest(target, testRegExps, outDirectory, flowSourcePath) {
204
204
  }
205
205
  };
206
206
  return [4 /*yield*/, (0, utils_1.asyncForEach)(flow, function (test) { return __awaiter(_this, void 0, void 0, function () {
207
- var sasJobLocation, testTarget, testId, testUrl, printTestUrl, handleRes;
207
+ var pathSepRegExp, sasJobLocation, testTarget, testId, testUrl, printTestUrl;
208
208
  var _this = this;
209
209
  return __generator(this, function (_a) {
210
210
  switch (_a.label) {
211
211
  case 0:
212
+ pathSepRegExp = new RegExp(path_1.default.sep.replace(/\\/g, '\\\\'), 'g');
212
213
  sasJobLocation = [
213
214
  target.appLoc,
214
- test.replace(file_1.sasFileRegExp, '')
215
+ test.replace(pathSepRegExp, '/').replace(file_1.sasFileRegExp, '')
215
216
  ].join('/');
216
217
  testTarget = test
217
218
  .split('/')
@@ -224,108 +225,105 @@ function runTest(target, testRegExps, outDirectory, flowSourcePath) {
224
225
  }
225
226
  printTestUrl = function () { return process.logger.info("Test URL: ".concat(testUrl)); };
226
227
  printTestUrl();
227
- handleRes = function (res) { return __awaiter(_this, void 0, void 0, function () {
228
- var lineBreak, test_results, existingTestTarget, existingTestTarget;
229
- var _a, _b;
230
- return __generator(this, function (_c) {
231
- switch (_c.label) {
232
- case 0:
233
- lineBreak = true;
234
- test_results = (_a = res.result) === null || _a === void 0 ? void 0 : _a.test_results;
235
- if (!test_results) {
236
- (0, displayResult_1.displayError)({}, "Job did not return a response, to debug click ".concat(testUrl));
237
- printCodeExample();
238
- lineBreak = false;
239
- existingTestTarget = result.sasjs_test_meta.find(function (testResult) { return testResult.test_target === testTarget; });
240
- if (existingTestTarget) {
241
- existingTestTarget.results.push({
242
- test_loc: test,
243
- sasjs_test_id: testId,
244
- result: types_1.TestResultStatus.notProvided,
245
- test_url: testUrl
246
- });
247
- }
248
- else {
249
- result.sasjs_test_meta.push({
250
- test_target: testTarget,
251
- results: [
252
- {
253
- test_loc: test,
254
- sasjs_test_id: testId,
255
- result: types_1.TestResultStatus.notProvided,
256
- test_url: testUrl
257
- }
258
- ]
259
- });
260
- }
261
- }
262
- if (!res.log) return [3 /*break*/, 2];
263
- return [4 /*yield*/, (0, saveOutput_1.saveLog)(outDirectory, test, res.log, lineBreak)];
264
- case 1:
265
- _c.sent();
266
- _c.label = 2;
267
- case 2:
268
- if ((_b = res.result) === null || _b === void 0 ? void 0 : _b.test_results) {
269
- existingTestTarget = result.sasjs_test_meta.find(function (testResult) { return testResult.test_target === testTarget; });
270
- if (existingTestTarget) {
271
- existingTestTarget.results.push({
272
- test_loc: test,
273
- sasjs_test_id: testId,
274
- result: res.result.test_results,
275
- test_url: testUrl
276
- });
277
- }
278
- else {
279
- result.sasjs_test_meta.push({
280
- test_target: testTarget,
281
- results: [
282
- {
283
- test_loc: test,
284
- sasjs_test_id: testId,
285
- result: res.result.test_results,
286
- test_url: testUrl
287
- }
288
- ]
289
- });
290
- }
291
- }
292
- else if (target.serverType !== utils_1.ServerType.Sasjs) {
293
- (0, displayResult_1.displayError)({}, "'test_results' not found in server response, to debug click ".concat(testUrl));
294
- printCodeExample();
295
- }
296
- return [2 /*return*/];
297
- }
298
- });
299
- }); };
300
228
  return [4 /*yield*/, sasjs
301
229
  .request(sasJobLocation, {}, { username: username, password: password }, function () {
302
230
  (0, displayResult_1.displayError)(null, 'Login callback called. Request failed.');
303
231
  }, authConfig, ['log'])
304
- .then(handleRes)
305
- .catch(function (err) { return __awaiter(_this, void 0, void 0, function () {
306
- var _a, _b, _c;
307
- return __generator(this, function (_d) {
308
- switch (_d.label) {
232
+ .then(function (res) { return __awaiter(_this, void 0, void 0, function () {
233
+ var lineBreak, test_results, existingTestTarget, existingTestTarget;
234
+ var _a;
235
+ return __generator(this, function (_b) {
236
+ switch (_b.label) {
309
237
  case 0:
310
- if (!(((_a = err.error) === null || _a === void 0 ? void 0 : _a.message) === 'Error: invalid Json string')) return [3 /*break*/, 2];
311
- return [4 /*yield*/, handleRes({})];
238
+ lineBreak = true;
239
+ test_results = (_a = res.result) === null || _a === void 0 ? void 0 : _a.test_results;
240
+ if (!test_results) {
241
+ (0, displayResult_1.displayError)({}, "Job did not return a response, to debug click ".concat(testUrl));
242
+ printCodeExample();
243
+ lineBreak = false;
244
+ existingTestTarget = result.sasjs_test_meta.find(function (testResult) {
245
+ return testResult.test_target === testTarget;
246
+ });
247
+ if (existingTestTarget) {
248
+ existingTestTarget.results.push({
249
+ test_loc: test,
250
+ sasjs_test_id: testId,
251
+ result: types_1.TestResultStatus.notProvided,
252
+ test_url: testUrl
253
+ });
254
+ }
255
+ else {
256
+ result.sasjs_test_meta.push({
257
+ test_target: testTarget,
258
+ results: [
259
+ {
260
+ test_loc: test,
261
+ sasjs_test_id: testId,
262
+ result: types_1.TestResultStatus.notProvided,
263
+ test_url: testUrl
264
+ }
265
+ ]
266
+ });
267
+ }
268
+ }
269
+ if (!res.log) return [3 /*break*/, 2];
270
+ return [4 /*yield*/, (0, saveOutput_1.saveLog)(outDirectory, test, res.log, lineBreak)];
312
271
  case 1:
313
- _d.sent();
314
- return [2 /*return*/];
272
+ _b.sent();
273
+ _b.label = 2;
315
274
  case 2:
275
+ if (test_results) {
276
+ existingTestTarget = result.sasjs_test_meta.find(function (testResult) {
277
+ return testResult.test_target === testTarget;
278
+ });
279
+ if (existingTestTarget) {
280
+ existingTestTarget.results.push({
281
+ test_loc: test,
282
+ sasjs_test_id: testId,
283
+ result: test_results,
284
+ test_url: testUrl
285
+ });
286
+ }
287
+ else {
288
+ result.sasjs_test_meta.push({
289
+ test_target: testTarget,
290
+ results: [
291
+ {
292
+ test_loc: test,
293
+ sasjs_test_id: testId,
294
+ result: test_results,
295
+ test_url: testUrl
296
+ }
297
+ ]
298
+ });
299
+ }
300
+ }
301
+ else if (target.serverType !== utils_1.ServerType.Sasjs) {
302
+ (0, displayResult_1.displayError)({}, "'test_results' not found in server response, to debug click ".concat(testUrl));
303
+ printCodeExample();
304
+ }
305
+ return [2 /*return*/];
306
+ }
307
+ });
308
+ }); })
309
+ .catch(function (err) { return __awaiter(_this, void 0, void 0, function () {
310
+ var _a, _b;
311
+ return __generator(this, function (_c) {
312
+ switch (_c.label) {
313
+ case 0:
316
314
  printTestUrl();
317
- if (err && err.errorCode === 404) {
315
+ if ((err === null || err === void 0 ? void 0 : err.errorCode) === 404) {
318
316
  (0, utils_2.displaySasjsRunnerError)(username);
319
317
  }
320
318
  else {
321
319
  (0, displayResult_1.displayError)({}, "An error occurred while executing the request. Job location: ".concat(sasJobLocation));
322
320
  }
323
- if (!((_c = (_b = err === null || err === void 0 ? void 0 : err.error) === null || _b === void 0 ? void 0 : _b.details) === null || _c === void 0 ? void 0 : _c.result)) return [3 /*break*/, 4];
321
+ if (!((_b = (_a = err === null || err === void 0 ? void 0 : err.error) === null || _a === void 0 ? void 0 : _a.details) === null || _b === void 0 ? void 0 : _b.result)) return [3 /*break*/, 2];
324
322
  return [4 /*yield*/, (0, saveOutput_1.saveLog)(outDirectory, test, err.error.details.result)];
325
- case 3:
326
- _d.sent();
327
- _d.label = 4;
328
- case 4: return [2 /*return*/];
323
+ case 1:
324
+ _c.sent();
325
+ _c.label = 2;
326
+ case 2: return [2 /*return*/];
329
327
  }
330
328
  });
331
329
  }); })];
@@ -124,14 +124,7 @@ function getNewAccessToken(sasjsInstance, clientId, clientSecret, target) {
124
124
  return [4 /*yield*/, getAuthCode(authUrl)];
125
125
  case 1:
126
126
  authCode = _b.sent();
127
- return [4 /*yield*/, sasjsInstance
128
- .getAccessToken(clientId, clientSecret, authCode)
129
- .then(function (res) {
130
- var access_token = res.access_token, refresh_token = res.refresh_token;
131
- if (access_token && refresh_token)
132
- return res;
133
- throw res;
134
- })];
127
+ return [4 /*yield*/, sasjsInstance.getAccessToken(clientId, clientSecret, authCode)];
135
128
  case 2:
136
129
  _a = _b.sent(), access_token = _a.access_token, refresh_token = _a.refresh_token;
137
130
  return [2 /*return*/, { access_token: access_token, refresh_token: refresh_token }];
@@ -0,0 +1,2 @@
1
+ import SASjs, { SASjsConfig } from '@sasjs/adapter/node';
2
+ export declare const createSASjsInstance: (config: Partial<SASjsConfig>) => SASjs;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createSASjsInstance = void 0;
7
+ var node_1 = __importDefault(require("@sasjs/adapter/node"));
8
+ var createSASjsInstance = function (config) {
9
+ return new node_1.default(config);
10
+ };
11
+ exports.createSASjsInstance = createSASjsInstance;
@@ -511,8 +511,8 @@ function getAdapterInstance(target) {
511
511
  exports.getAdapterInstance = getAdapterInstance;
512
512
  function displaySasjsRunnerError(username) {
513
513
  var _a;
514
- var sasjsRunnerCode = "\nfilename mc url \"https://raw.githubusercontent.com/sasjs/core/main/all.sas\";\n%inc mc;\nfilename ft15f001 temp;\nparmcards4;\n%macro sasjs_runner();\n%if %symexist(_webin_fileref) %then %do;\n%inc &_webin_fileref;\n%end;\n%mend sasjs_runner;\n%sasjs_runner()\n;;;;\n%mm_createwebservice(path=/User Folders/&sysuserid/My Folder/sasjs,name=runner)\n";
515
- var message = "The SASjs runner was not found in your user folder at /User Folders/".concat(username, "/My Folder/sasjs/runner.");
514
+ var sasjsRunnerCode = "\nfilename mc url \"https://raw.githubusercontent.com/sasjs/core/main/all.sas\";\n%inc mc;\nfilename ft15f001 temp;\nparmcards4;\n%macro sasjs_runner();\n%if %symexist(_webin_fileref) %then %do;\n%inc &_webin_fileref;\n%end;\n%mend sasjs_runner;\n%sasjs_runner()\n;;;;\n%mm_createwebservice(path=/User Folders/&_metauser/My Folder/sasjs,name=runner)\n";
515
+ var message = "The SASjs runner was not found in your user folder at /User Folders/&_metauser/My Folder/sasjs/runner.";
516
516
  (0, displayResult_1.displayError)(message, 'An error occurred while executing the request.');
517
517
  (_a = process.logger) === null || _a === void 0 ? void 0 : _a.info("Please deploy the SASjs runner by running the code below and try again:\n".concat(sasjsRunnerCode));
518
518
  }
package/package.json CHANGED
@@ -47,8 +47,8 @@
47
47
  "access": "public"
48
48
  },
49
49
  "dependencies": {
50
- "@sasjs/adapter": "3.7.8",
51
- "@sasjs/core": "4.13.0",
50
+ "@sasjs/adapter": "3.7.12",
51
+ "@sasjs/core": "4.15.3",
52
52
  "@sasjs/lint": "1.11.2",
53
53
  "@sasjs/utils": "2.36.0",
54
54
  "chalk": "4.1.2",
@@ -94,5 +94,5 @@
94
94
  "typescript": "4.5.4",
95
95
  "util": "0.12.4"
96
96
  },
97
- "version": "3.8.2"
97
+ "version": "3.8.5"
98
98
  }