@sasjs/cli 3.17.0 → 3.17.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.
Files changed (37) hide show
  1. package/build/commands/build/build.js +42 -40
  2. package/build/commands/build/spec/build.spec.js +51 -0
  3. package/build/commands/build/spec/{cb.spec.server.d.ts → cb.spec.server.viya.d.ts} +0 -0
  4. package/build/commands/build/spec/{cb.spec.server.js → cb.spec.server.viya.js} +1 -1
  5. package/build/commands/compile/internal/loadDependencies.js +29 -21
  6. package/build/commands/deploy/spec/cbd.spec.js +22 -18
  7. package/build/commands/deploy/spec/{cbd.spec.server.d.ts → cbd.spec.server.viya.d.ts} +0 -0
  8. package/build/commands/deploy/spec/cbd.spec.server.viya.js +334 -0
  9. package/build/commands/flow/spec/{flow.spec.server.d.ts → flow.spec.server.viya.d.ts} +0 -0
  10. package/build/commands/flow/spec/{flow.spec.server.js → flow.spec.server.viya.js} +39 -55
  11. package/build/commands/folder/spec/{folder.spec.server.d.ts → folder.spec.server.viya.d.ts} +0 -0
  12. package/build/commands/folder/spec/{folder.spec.server.js → folder.spec.server.viya.js} +17 -23
  13. package/build/commands/init/spec/{init.spec.server.d.ts → init.spec.d.ts} +0 -0
  14. package/build/commands/init/spec/{init.spec.server.js → init.spec.js} +0 -0
  15. package/build/commands/job/spec/{job.spec.server.d.ts → job.spec.server.viya.d.ts} +0 -0
  16. package/build/commands/job/spec/{job.spec.server.js → job.spec.server.viya.js} +45 -56
  17. package/build/commands/request/request.js +3 -2
  18. package/build/commands/request/spec/{request.spec.server.d.ts → request.spec.server.sas9.d.ts} +0 -0
  19. package/build/commands/request/spec/request.spec.server.sas9.js +283 -0
  20. package/build/commands/{run/spec/run.spec.server.d.ts → request/spec/request.spec.server.viya.d.ts} +0 -0
  21. package/build/commands/request/spec/request.spec.server.viya.js +460 -0
  22. package/build/commands/request/spec/utils.d.ts +23 -0
  23. package/build/commands/request/spec/utils.js +87 -0
  24. package/build/commands/{servicepack/spec/servicepack.spec.server.d.ts → run/spec/run.spec.server.sas9.d.ts} +0 -0
  25. package/build/commands/run/spec/run.spec.server.sas9.js +115 -0
  26. package/build/commands/run/spec/run.spec.server.viya.d.ts +1 -0
  27. package/build/commands/run/spec/{run.spec.server.js → run.spec.server.viya.js} +32 -101
  28. package/build/commands/servicepack/spec/servicepack.spec.server.viya.d.ts +1 -0
  29. package/build/commands/servicepack/spec/{servicepack.spec.server.js → servicepack.spec.server.viya.js} +1 -1
  30. package/build/utils/test.js +4 -2
  31. package/build/utils/utils.d.ts +0 -6
  32. package/build/utils/utils.js +2 -35
  33. package/package.json +3 -2
  34. package/build/commands/deploy/spec/cbd.spec.server.js +0 -331
  35. package/build/commands/request/spec/request.spec.server.js +0 -709
  36. package/build/utils/spec/removeComments.spec.d.ts +0 -1
  37. package/build/utils/spec/removeComments.spec.js +0 -47
@@ -206,7 +206,8 @@ var saveLogFile = function (sasjs, sasJobLocation, logFile, jobPath) { return __
206
206
  ? path_1.default.join(process.sasjsConstants.buildDestinationResultsFolder, 'requests')
207
207
  : process.projectDir;
208
208
  timestamp = (0, utils_1.generateTimestamp)();
209
- filename = sasJobLocation.split(path_1.default.sep).pop();
209
+ filename = sasJobLocation.split('/').pop() // always use forward slash in SAS Drive
210
+ ;
210
211
  logFile = path_1.default.join(logPath, "".concat(filename, "-").concat(timestamp, ".log"));
211
212
  _a.label = 2;
212
213
  case 2: return [4 /*yield*/, (0, saveLog_1.saveLog)(currentRequestLog.logFile, logFile, jobPath || '', false)];
@@ -252,7 +253,7 @@ var writeOutput = function (outputPathParam, output, sasJobLocation) { return __
252
253
  }
253
254
  else {
254
255
  timestamp = (0, utils_1.generateTimestamp)();
255
- filename = sasJobLocation.split(path_1.default.sep).pop();
256
+ filename = sasJobLocation.split('/').pop();
256
257
  outputPath += "".concat(path_1.default.sep).concat(filename, "-").concat(timestamp, ".json");
257
258
  }
258
259
  outputString = '';
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
+ return new (P || (P = Promise))(function (resolve, reject) {
24
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __generator = (this && this.__generator) || function (thisArg, body) {
31
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
32
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
33
+ function verb(n) { return function (v) { return step([n, v]); }; }
34
+ function step(op) {
35
+ if (f) throw new TypeError("Generator is already executing.");
36
+ while (_) try {
37
+ 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;
38
+ if (y = 0, t) op = [op[0] & 2, t.value];
39
+ switch (op[0]) {
40
+ case 0: case 1: t = op; break;
41
+ case 4: _.label++; return { value: op[1], done: false };
42
+ case 5: _.label++; y = op[1]; op = [0]; continue;
43
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
44
+ default:
45
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
46
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
47
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
48
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
49
+ if (t[2]) _.ops.pop();
50
+ _.trys.pop(); continue;
51
+ }
52
+ op = body.call(thisArg, _);
53
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
54
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
55
+ }
56
+ };
57
+ var __importDefault = (this && this.__importDefault) || function (mod) {
58
+ return (mod && mod.__esModule) ? mod : { "default": mod };
59
+ };
60
+ Object.defineProperty(exports, "__esModule", { value: true });
61
+ var path_1 = __importDefault(require("path"));
62
+ var utils_1 = require("@sasjs/utils");
63
+ var utils_2 = require("@sasjs/utils");
64
+ var test_1 = require("../../../utils/test");
65
+ var timeStampUtils = __importStar(require("@sasjs/utils/time"));
66
+ var request_1 = require("../request");
67
+ var build_1 = require("../../build/build");
68
+ var deploy_1 = require("../../deploy/deploy");
69
+ var utils_3 = require("../../../utils");
70
+ var getLogFilePath_1 = require("../../../utils/getLogFilePath");
71
+ var fs_1 = require("fs");
72
+ var utils_4 = require("./utils");
73
+ describe('sasjs request with SAS9', function () {
74
+ var appName = 'cli-tests-request-sas9-' + (0, utils_2.generateTimestamp)();
75
+ var locationPrefix = "/User Folders/cli-tests/".concat(process.env.SAS_USERNAME, "/");
76
+ var target = (0, test_1.generateTestTarget)(appName, "".concat(locationPrefix).concat(appName), {
77
+ serviceFolders: ['sasjs/runRequest'],
78
+ initProgram: '',
79
+ termProgram: '',
80
+ macroVars: {}
81
+ }, utils_1.ServerType.Sas9);
82
+ var dataPathRel = 'data.json';
83
+ var configPathRel = 'sasjsconfig-temp.json';
84
+ beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
85
+ var sasjsBuildDirPath;
86
+ return __generator(this, function (_a) {
87
+ switch (_a.label) {
88
+ case 0: return [4 /*yield*/, (0, test_1.createTestApp)(__dirname, appName)];
89
+ case 1:
90
+ _a.sent();
91
+ return [4 /*yield*/, (0, utils_1.copy)(path_1.default.join(__dirname, 'runRequest'), path_1.default.join(process.projectDir, 'sasjs', 'runRequest'))];
92
+ case 2:
93
+ _a.sent();
94
+ return [4 /*yield*/, (0, build_1.build)(target)];
95
+ case 3:
96
+ _a.sent();
97
+ return [4 /*yield*/, (0, deploy_1.deploy)(target, false)];
98
+ case 4:
99
+ _a.sent();
100
+ sasjsBuildDirPath = path_1.default.join(process.projectDir, 'sasjsbuild');
101
+ return [4 /*yield*/, (0, utils_1.deleteFolder)(sasjsBuildDirPath)];
102
+ case 5:
103
+ _a.sent();
104
+ return [2 /*return*/];
105
+ }
106
+ });
107
+ }); });
108
+ afterAll(function () { return __awaiter(void 0, void 0, void 0, function () {
109
+ return __generator(this, function (_a) {
110
+ switch (_a.label) {
111
+ case 0: return [4 /*yield*/, (0, test_1.removeTestServerFolder)(target.appLoc, target)];
112
+ case 1:
113
+ _a.sent();
114
+ return [4 /*yield*/, (0, test_1.removeTestApp)(__dirname, target.name)];
115
+ case 2:
116
+ _a.sent();
117
+ return [2 /*return*/];
118
+ }
119
+ });
120
+ }); });
121
+ beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () {
122
+ return __generator(this, function (_a) {
123
+ switch (_a.label) {
124
+ case 0: return [4 /*yield*/, (0, utils_1.createFile)(path_1.default.join(process.projectDir, configPathRel), JSON.stringify(target.toJson(), null, 2))];
125
+ case 1:
126
+ _a.sent();
127
+ return [4 /*yield*/, (0, utils_1.createFile)(path_1.default.join(process.projectDir, dataPathRel), JSON.stringify(utils_4.sampleDataJson, null, 2))];
128
+ case 2:
129
+ _a.sent();
130
+ return [2 /*return*/];
131
+ }
132
+ });
133
+ }); });
134
+ it("should execute service 'sendArr' with absolute path", function () { return __awaiter(void 0, void 0, void 0, function () {
135
+ var timestamp, outputFilename, _a, _b;
136
+ return __generator(this, function (_c) {
137
+ switch (_c.label) {
138
+ case 0:
139
+ timestamp = (0, utils_2.generateTimestamp)();
140
+ jest
141
+ .spyOn(timeStampUtils, 'generateTimestamp')
142
+ .mockImplementationOnce(function () { return timestamp; });
143
+ outputFilename = "sendArr-".concat(timestamp, ".json");
144
+ return [4 /*yield*/, expect((0, request_1.runSasJob)(target, false, "".concat(locationPrefix).concat(target.name, "/services/runRequest/sendArr"), dataPathRel)).toResolve()];
145
+ case 1:
146
+ _c.sent();
147
+ _a = expect;
148
+ return [4 /*yield*/, (0, utils_4.getOutputJson)(outputFilename)];
149
+ case 2:
150
+ _a.apply(void 0, [(_c.sent()).table1]).toEqual(utils_4.expectedDataArr.table1);
151
+ _b = expect;
152
+ return [4 /*yield*/, (0, utils_4.getOutputJson)(outputFilename)];
153
+ case 3:
154
+ _b.apply(void 0, [(_c.sent()).table2]).toEqual(utils_4.expectedDataArr.table2);
155
+ return [2 /*return*/];
156
+ }
157
+ });
158
+ }); });
159
+ it("should execute service 'sendObj' with absolute path", function () { return __awaiter(void 0, void 0, void 0, function () {
160
+ var timestamp, outputFilename, _a, _b;
161
+ return __generator(this, function (_c) {
162
+ switch (_c.label) {
163
+ case 0:
164
+ timestamp = (0, utils_2.generateTimestamp)();
165
+ jest
166
+ .spyOn(timeStampUtils, 'generateTimestamp')
167
+ .mockImplementationOnce(function () { return timestamp; });
168
+ outputFilename = "sendObj-".concat(timestamp, ".json");
169
+ return [4 /*yield*/, expect((0, request_1.runSasJob)(target, false, "".concat(locationPrefix).concat(target.name, "/services/runRequest/sendObj"), dataPathRel)).toResolve()];
170
+ case 1:
171
+ _c.sent();
172
+ _a = expect;
173
+ return [4 /*yield*/, (0, utils_4.getOutputJson)(outputFilename)];
174
+ case 2:
175
+ _a.apply(void 0, [(_c.sent()).table1]).toEqual(utils_4.expectedDataObj.table1);
176
+ _b = expect;
177
+ return [4 /*yield*/, (0, utils_4.getOutputJson)(outputFilename)];
178
+ case 3:
179
+ _b.apply(void 0, [(_c.sent()).table2]).toEqual(utils_4.expectedDataObj.table2);
180
+ return [2 /*return*/];
181
+ }
182
+ });
183
+ }); });
184
+ it("should execute service 'sendArr' with relative path", function () { return __awaiter(void 0, void 0, void 0, function () {
185
+ var timestamp, outputFilename, _a, _b;
186
+ return __generator(this, function (_c) {
187
+ switch (_c.label) {
188
+ case 0:
189
+ timestamp = (0, utils_2.generateTimestamp)();
190
+ jest
191
+ .spyOn(timeStampUtils, 'generateTimestamp')
192
+ .mockImplementationOnce(function () { return timestamp; });
193
+ outputFilename = "sendArr-".concat(timestamp, ".json");
194
+ return [4 /*yield*/, expect((0, request_1.runSasJob)(target, false, 'services/runRequest/sendArr', dataPathRel)).toResolve()];
195
+ case 1:
196
+ _c.sent();
197
+ _a = expect;
198
+ return [4 /*yield*/, (0, utils_4.getOutputJson)(outputFilename)];
199
+ case 2:
200
+ _a.apply(void 0, [(_c.sent()).table1]).toEqual(utils_4.expectedDataArr.table1);
201
+ _b = expect;
202
+ return [4 /*yield*/, (0, utils_4.getOutputJson)(outputFilename)];
203
+ case 3:
204
+ _b.apply(void 0, [(_c.sent()).table2]).toEqual(utils_4.expectedDataArr.table2);
205
+ return [2 /*return*/];
206
+ }
207
+ });
208
+ }); });
209
+ it("should execute service 'sendObj' with relative path", function () { return __awaiter(void 0, void 0, void 0, function () {
210
+ var timestamp, outputFilename, _a, _b;
211
+ return __generator(this, function (_c) {
212
+ switch (_c.label) {
213
+ case 0:
214
+ timestamp = (0, utils_2.generateTimestamp)();
215
+ jest
216
+ .spyOn(timeStampUtils, 'generateTimestamp')
217
+ .mockImplementationOnce(function () { return timestamp; });
218
+ outputFilename = "sendObj-".concat(timestamp, ".json");
219
+ return [4 /*yield*/, expect((0, request_1.runSasJob)(target, false, 'services/runRequest/sendObj', dataPathRel)).toResolve()];
220
+ case 1:
221
+ _c.sent();
222
+ _a = expect;
223
+ return [4 /*yield*/, (0, utils_4.getOutputJson)(outputFilename)];
224
+ case 2:
225
+ _a.apply(void 0, [(_c.sent()).table1]).toEqual(utils_4.expectedDataObj.table1);
226
+ _b = expect;
227
+ return [4 /*yield*/, (0, utils_4.getOutputJson)(outputFilename)];
228
+ case 3:
229
+ _b.apply(void 0, [(_c.sent()).table2]).toEqual(utils_4.expectedDataObj.table2);
230
+ return [2 /*return*/];
231
+ }
232
+ });
233
+ }); });
234
+ it("should execute service 'sendArr' with absolute path with output path", function () { return __awaiter(void 0, void 0, void 0, function () {
235
+ var rawData, output;
236
+ return __generator(this, function (_a) {
237
+ switch (_a.label) {
238
+ case 0: return [4 /*yield*/, expect((0, request_1.runSasJob)(target, false, "".concat(locationPrefix).concat(target.name, "/services/runRequest/sendArr"), dataPathRel, undefined, undefined, undefined, undefined, './myoutput.json')).toResolve()];
239
+ case 1:
240
+ _a.sent();
241
+ return [4 /*yield*/, (0, utils_1.readFile)(path_1.default.join(process.projectDir, 'myoutput.json'))];
242
+ case 2:
243
+ rawData = _a.sent();
244
+ output = JSON.parse(rawData);
245
+ expect(output.table1).toEqual(utils_4.expectedDataArr.table1);
246
+ expect(output.table2).toEqual(utils_4.expectedDataArr.table2);
247
+ return [2 /*return*/];
248
+ }
249
+ });
250
+ }); });
251
+ it("should execute service 'err' with absolute path with log path", function () { return __awaiter(void 0, void 0, void 0, function () {
252
+ var jobPath, log, rawLogDataStats;
253
+ return __generator(this, function (_a) {
254
+ switch (_a.label) {
255
+ case 0:
256
+ jobPath = (0, utils_3.prefixAppLoc)(target.appLoc, 'services/runRequest/err');
257
+ log = (0, getLogFilePath_1.getLogFilePath)('./mylog.txt', jobPath || '');
258
+ return [4 /*yield*/, expect((0, request_1.runSasJob)(target, false, jobPath, dataPathRel, undefined, undefined, log, jobPath)).toResolve()];
259
+ case 1:
260
+ _a.sent();
261
+ rawLogDataStats = (0, fs_1.statSync)(log);
262
+ expect(rawLogDataStats.size).toBeGreaterThan(10);
263
+ return [2 /*return*/];
264
+ }
265
+ });
266
+ }); });
267
+ it("should execute service 'err' with absolute path with default log path", function () { return __awaiter(void 0, void 0, void 0, function () {
268
+ var jobPath, log, rawLogDataStats;
269
+ return __generator(this, function (_a) {
270
+ switch (_a.label) {
271
+ case 0:
272
+ jobPath = (0, utils_3.prefixAppLoc)(target.appLoc, 'services/runRequest/err');
273
+ log = (0, getLogFilePath_1.getLogFilePath)('', jobPath || '');
274
+ return [4 /*yield*/, expect((0, request_1.runSasJob)(target, false, jobPath, dataPathRel, undefined, undefined, log, jobPath)).toResolve()];
275
+ case 1:
276
+ _a.sent();
277
+ rawLogDataStats = (0, fs_1.statSync)(log);
278
+ expect(rawLogDataStats.size).toBeGreaterThan(10);
279
+ return [2 /*return*/];
280
+ }
281
+ });
282
+ }); });
283
+ });