@sasjs/cli 3.17.0 → 3.18.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 (39) 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/compileFile.js +6 -3
  6. package/build/commands/compile/internal/loadDependencies.js +29 -21
  7. package/build/commands/compile/internal/spec/compileTestFile.spec.js +1 -1
  8. package/build/commands/deploy/spec/cbd.spec.js +24 -19
  9. package/build/commands/deploy/spec/{cbd.spec.server.d.ts → cbd.spec.server.viya.d.ts} +0 -0
  10. package/build/commands/deploy/spec/cbd.spec.server.viya.js +334 -0
  11. package/build/commands/flow/spec/{flow.spec.server.d.ts → flow.spec.server.viya.d.ts} +0 -0
  12. package/build/commands/flow/spec/{flow.spec.server.js → flow.spec.server.viya.js} +39 -55
  13. package/build/commands/folder/spec/{folder.spec.server.d.ts → folder.spec.server.viya.d.ts} +0 -0
  14. package/build/commands/folder/spec/{folder.spec.server.js → folder.spec.server.viya.js} +17 -23
  15. package/build/commands/init/spec/{init.spec.server.d.ts → init.spec.d.ts} +0 -0
  16. package/build/commands/init/spec/{init.spec.server.js → init.spec.js} +0 -0
  17. package/build/commands/job/spec/{job.spec.server.d.ts → job.spec.server.viya.d.ts} +0 -0
  18. package/build/commands/job/spec/{job.spec.server.js → job.spec.server.viya.js} +45 -56
  19. package/build/commands/request/request.js +3 -2
  20. package/build/commands/request/spec/{request.spec.server.d.ts → request.spec.server.sas9.d.ts} +0 -0
  21. package/build/commands/request/spec/request.spec.server.sas9.js +283 -0
  22. package/build/commands/{run/spec/run.spec.server.d.ts → request/spec/request.spec.server.viya.d.ts} +0 -0
  23. package/build/commands/request/spec/request.spec.server.viya.js +460 -0
  24. package/build/commands/request/spec/utils.d.ts +23 -0
  25. package/build/commands/request/spec/utils.js +87 -0
  26. package/build/commands/{servicepack/spec/servicepack.spec.server.d.ts → run/spec/run.spec.server.sas9.d.ts} +0 -0
  27. package/build/commands/run/spec/run.spec.server.sas9.js +115 -0
  28. package/build/commands/run/spec/run.spec.server.viya.d.ts +1 -0
  29. package/build/commands/run/spec/{run.spec.server.js → run.spec.server.viya.js} +32 -101
  30. package/build/commands/servicepack/spec/servicepack.spec.server.viya.d.ts +1 -0
  31. package/build/commands/servicepack/spec/{servicepack.spec.server.js → servicepack.spec.server.viya.js} +1 -1
  32. package/build/utils/test.js +4 -2
  33. package/build/utils/utils.d.ts +0 -6
  34. package/build/utils/utils.js +2 -35
  35. package/package.json +6 -5
  36. package/build/commands/deploy/spec/cbd.spec.server.js +0 -331
  37. package/build/commands/request/spec/request.spec.server.js +0 -709
  38. package/build/utils/spec/removeComments.spec.d.ts +0 -1
  39. package/build/utils/spec/removeComments.spec.js +0 -47
@@ -1,331 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
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
- };
32
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
33
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
34
- return new (P || (P = Promise))(function (resolve, reject) {
35
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
36
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
37
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
38
- step((generator = generator.apply(thisArg, _arguments || [])).next());
39
- });
40
- };
41
- var __generator = (this && this.__generator) || function (thisArg, body) {
42
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
43
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
44
- function verb(n) { return function (v) { return step([n, v]); }; }
45
- function step(op) {
46
- if (f) throw new TypeError("Generator is already executing.");
47
- while (_) try {
48
- 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;
49
- if (y = 0, t) op = [op[0] & 2, t.value];
50
- switch (op[0]) {
51
- case 0: case 1: t = op; break;
52
- case 4: _.label++; return { value: op[1], done: false };
53
- case 5: _.label++; y = op[1]; op = [0]; continue;
54
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
55
- default:
56
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
57
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
58
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
59
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
60
- if (t[2]) _.ops.pop();
61
- _.trys.pop(); continue;
62
- }
63
- op = body.call(thisArg, _);
64
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
65
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
66
- }
67
- };
68
- var __importDefault = (this && this.__importDefault) || function (mod) {
69
- return (mod && mod.__esModule) ? mod : { "default": mod };
70
- };
71
- Object.defineProperty(exports, "__esModule", { value: true });
72
- var utils_1 = require("@sasjs/utils");
73
- var path_1 = __importDefault(require("path"));
74
- var utils_2 = require("@sasjs/utils");
75
- var configUtils = __importStar(require("../../../utils/config"));
76
- var getDeployScriptsModule = __importStar(require("../internal/getDeployScripts"));
77
- var test_1 = require("../../../utils/test");
78
- var build_1 = require("../../build/build");
79
- var deploy_1 = require("../deploy");
80
- var utils_3 = require("./utils");
81
- describe('sasjs cbd with global config', function () {
82
- var target;
83
- beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () {
84
- return __generator(this, function (_a) {
85
- switch (_a.label) {
86
- case 0:
87
- target = (0, utils_3.generateTarget)(false);
88
- return [4 /*yield*/, (0, test_1.createTestMinimalApp)(__dirname, target.name)];
89
- case 1:
90
- _a.sent();
91
- return [4 /*yield*/, (0, utils_3.copyJobsAndServices)(target.name)];
92
- case 2:
93
- _a.sent();
94
- return [2 /*return*/];
95
- }
96
- });
97
- }); });
98
- afterEach(function () { return __awaiter(void 0, void 0, void 0, function () {
99
- return __generator(this, function (_a) {
100
- switch (_a.label) {
101
- case 0: return [4 /*yield*/, (0, test_1.removeTestServerFolder)(target.appLoc, target)];
102
- case 1:
103
- _a.sent();
104
- return [4 /*yield*/, (0, test_1.removeTestApp)(__dirname, target.name)];
105
- case 2:
106
- _a.sent();
107
- return [2 /*return*/];
108
- }
109
- });
110
- }); });
111
- it('should compile, build and deploy', function () { return __awaiter(void 0, void 0, void 0, function () {
112
- var servicePath, jobPath, buildJsonPath, jobContent, jsonContent, _a, _b, serviceContent;
113
- return __generator(this, function (_c) {
114
- switch (_c.label) {
115
- case 0:
116
- servicePath = path_1.default.join(__dirname, target.name, 'sasjsbuild/services/testJob/job.sas');
117
- jobPath = path_1.default.join(__dirname, target.name, 'sasjsbuild/jobs/testJob/job.sas');
118
- buildJsonPath = path_1.default.join(__dirname, target.name, "sasjsbuild/".concat(target.name, ".json"));
119
- return [4 /*yield*/, expect((0, build_1.build)(target)).toResolve()];
120
- case 1:
121
- _c.sent();
122
- return [4 /*yield*/, expect((0, deploy_1.deploy)(target, false)).toResolve()];
123
- case 2:
124
- _c.sent();
125
- return [4 /*yield*/, expect((0, utils_1.fileExists)(servicePath)).resolves.toEqual(true)];
126
- case 3:
127
- _c.sent();
128
- return [4 /*yield*/, expect((0, utils_1.fileExists)(jobPath)).resolves.toEqual(true)
129
- /**
130
- * test to ensure that jobs do not have web service pre code
131
- */
132
- ];
133
- case 4:
134
- _c.sent();
135
- return [4 /*yield*/, (0, utils_1.readFile)(jobPath)];
136
- case 5:
137
- jobContent = _c.sent();
138
- expect(jobContent).not.toEqual('');
139
- expect(/^\* Job Variables start;*/.test(jobContent)).toEqual(true);
140
- expect(jobContent.includes("* JobInit start;")).toEqual(true);
141
- expect(jobContent.includes("* JobTerm start;")).toEqual(true);
142
- _b = (_a = JSON).parse;
143
- return [4 /*yield*/, (0, utils_1.readFile)(buildJsonPath)];
144
- case 6:
145
- jsonContent = _b.apply(_a, [_c.sent()]);
146
- expect(!!jsonContent.members.find(function (x) { return x.name === 'services'; })).toEqual(true);
147
- return [4 /*yield*/, (0, utils_1.readFile)(servicePath)];
148
- case 7:
149
- serviceContent = _c.sent();
150
- expect(serviceContent).not.toEqual('');
151
- expect(/^\* Service Variables start;*/.test(serviceContent)).toEqual(false);
152
- expect(serviceContent.includes("* ServiceInit start;")).toEqual(true);
153
- expect(serviceContent.includes("* ServiceTerm start;")).toEqual(true);
154
- return [2 /*return*/];
155
- }
156
- });
157
- }); });
158
- });
159
- describe('sasjs cbd with local config', function () {
160
- var target;
161
- var appName;
162
- beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () {
163
- return __generator(this, function (_a) {
164
- switch (_a.label) {
165
- case 0:
166
- appName = "cli-tests-cbd-local-".concat((0, utils_2.generateTimestamp)());
167
- return [4 /*yield*/, (0, test_1.createTestApp)(__dirname, appName)];
168
- case 1:
169
- _a.sent();
170
- target = (0, utils_3.generateTarget)(true);
171
- return [4 /*yield*/, (0, utils_3.copyJobsAndServices)(appName)];
172
- case 2:
173
- _a.sent();
174
- return [4 /*yield*/, (0, utils_1.copy)(path_1.default.join(__dirname, 'testScript', 'copyscript.sh'), path_1.default.join(process.projectDir, 'sasjs', 'build', 'copyscript.sh'))];
175
- case 3:
176
- _a.sent();
177
- return [2 /*return*/];
178
- }
179
- });
180
- }); });
181
- afterEach(function () { return __awaiter(void 0, void 0, void 0, function () {
182
- return __generator(this, function (_a) {
183
- switch (_a.label) {
184
- case 0: return [4 /*yield*/, (0, test_1.removeTestServerFolder)(target.appLoc, target)];
185
- case 1:
186
- _a.sent();
187
- return [4 /*yield*/, (0, test_1.removeTestApp)(__dirname, appName)];
188
- case 2:
189
- _a.sent();
190
- jest.resetAllMocks();
191
- return [2 /*return*/];
192
- }
193
- });
194
- }); });
195
- it('should deploy service pack when deployServicePack is true', function () { return __awaiter(void 0, void 0, void 0, function () {
196
- return __generator(this, function (_a) {
197
- switch (_a.label) {
198
- case 0: return [4 /*yield*/, expect((0, build_1.build)(target)).toResolve()];
199
- case 1:
200
- _a.sent();
201
- return [4 /*yield*/, expect((0, deploy_1.deploy)(target, true)).toResolve()];
202
- case 2:
203
- _a.sent();
204
- return [2 /*return*/];
205
- }
206
- });
207
- }); });
208
- it('should deploy using deployScripts when deployServicePack is false', function () { return __awaiter(void 0, void 0, void 0, function () {
209
- var customTarget;
210
- return __generator(this, function (_a) {
211
- switch (_a.label) {
212
- case 0:
213
- customTarget = new utils_2.Target(__assign(__assign({}, target.toJson()), { deployConfig: {
214
- deployServicePack: false,
215
- deployScripts: ['sasjs/build/copyscript.sh']
216
- } }));
217
- return [4 /*yield*/, expect((0, build_1.build)(customTarget)).toResolve()];
218
- case 1:
219
- _a.sent();
220
- return [4 /*yield*/, expect((0, deploy_1.deploy)(customTarget, true)).toResolve()];
221
- case 2:
222
- _a.sent();
223
- return [2 /*return*/];
224
- }
225
- });
226
- }); });
227
- it('should error when deployServicePack is false and no deployScripts have been specified', function () { return __awaiter(void 0, void 0, void 0, function () {
228
- var customTarget;
229
- return __generator(this, function (_a) {
230
- switch (_a.label) {
231
- case 0:
232
- customTarget = new utils_2.Target(__assign(__assign({}, target.toJson()), { deployConfig: {
233
- deployServicePack: false,
234
- deployScripts: []
235
- } }));
236
- jest
237
- .spyOn(getDeployScriptsModule, 'getDeployScripts')
238
- .mockImplementation(function () { return Promise.resolve([]); });
239
- return [4 /*yield*/, (0, build_1.build)(customTarget)];
240
- case 1:
241
- _a.sent();
242
- return [4 /*yield*/, expect((0, deploy_1.deploy)(customTarget, true)).rejects.toEqual(new Error("Deployment failed.\nPlease either enable the 'deployServicePack' option or add deployment script paths to 'deployScripts' in your target's 'deployConfig'."))];
243
- case 2:
244
- _a.sent();
245
- return [2 /*return*/];
246
- }
247
- });
248
- }); });
249
- it("should error when an access token is not provided", function () { return __awaiter(void 0, void 0, void 0, function () {
250
- return __generator(this, function (_a) {
251
- switch (_a.label) {
252
- case 0:
253
- jest.spyOn(configUtils, 'getAccessToken').mockImplementation(function () {
254
- return Promise.reject('Token error');
255
- });
256
- return [4 /*yield*/, (0, build_1.build)(target)];
257
- case 1:
258
- _a.sent();
259
- return [4 /*yield*/, expect((0, deploy_1.deploy)(target, true)).rejects.toEqual(new Error("Deployment failed. Request is not authenticated.\nPlease add the following variables to your .env.".concat(target.name, " file:\nCLIENT, SECRET, ACCESS_TOKEN, REFRESH_TOKEN")))];
260
- case 2:
261
- _a.sent();
262
- return [2 /*return*/];
263
- }
264
- });
265
- }); });
266
- });
267
- var streamConfig = {
268
- assetPaths: [],
269
- streamWeb: true,
270
- streamWebFolder: 'webv',
271
- webSourcePath: 'src',
272
- streamServiceName: 'clickme'
273
- };
274
- describe('sasjs cbd having stream app', function () {
275
- var target;
276
- var appName;
277
- beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () {
278
- return __generator(this, function (_a) {
279
- switch (_a.label) {
280
- case 0:
281
- appName = "cli-tests-cbd-local-stream-".concat((0, utils_2.generateTimestamp)());
282
- return [4 /*yield*/, (0, test_1.createTestMinimalApp)(__dirname, appName)];
283
- case 1:
284
- _a.sent();
285
- target = (0, utils_3.generateTarget)(true);
286
- return [2 /*return*/];
287
- }
288
- });
289
- }); });
290
- afterEach(function () { return __awaiter(void 0, void 0, void 0, function () {
291
- return __generator(this, function (_a) {
292
- switch (_a.label) {
293
- case 0: return [4 /*yield*/, (0, test_1.removeTestServerFolder)(target.appLoc, target)];
294
- case 1:
295
- _a.sent();
296
- return [4 /*yield*/, (0, test_1.removeTestApp)(__dirname, appName)];
297
- case 2:
298
- _a.sent();
299
- jest.resetAllMocks();
300
- return [2 /*return*/];
301
- }
302
- });
303
- }); });
304
- it("should deploy compile and build with streamConfig", function () { return __awaiter(void 0, void 0, void 0, function () {
305
- var appLoc, appLocWithSpaces, customTarget, logFileContent, appLocTransformed, streamingApplink;
306
- return __generator(this, function (_a) {
307
- switch (_a.label) {
308
- case 0:
309
- appLoc = "/Public/app/cli-tests/".concat(target.name);
310
- appLocWithSpaces = "".concat(appLoc, "/with some/space s");
311
- customTarget = new utils_2.Target(__assign(__assign({}, target.toJson()), { appLoc: appLocWithSpaces, streamConfig: streamConfig, jobConfig: undefined, serviceConfig: undefined, deployConfig: {
312
- deployServicePack: false,
313
- deployScripts: ["sasjsbuild/".concat(target.name, ".sas")]
314
- } }));
315
- return [4 /*yield*/, expect((0, build_1.build)(customTarget)).toResolve()];
316
- case 1:
317
- _a.sent();
318
- return [4 /*yield*/, expect((0, deploy_1.deploy)(customTarget, true)).toResolve()];
319
- case 2:
320
- _a.sent();
321
- return [4 /*yield*/, (0, utils_1.readFile)(path_1.default.join(__dirname, appName, 'sasjsbuild', "".concat(target.name, ".log")))];
322
- case 3:
323
- logFileContent = _a.sent();
324
- appLocTransformed = '/with%20some/space%20s';
325
- streamingApplink = "".concat(target.serverUrl.replace('https://', ''), "/SASJobExecution?_FILE=").concat(appLoc).concat(appLocTransformed, "/services/").concat(streamConfig.streamServiceName, ".html&_debug=2");
326
- expect(logFileContent.replace(/\s/g, '')).toEqual(expect.stringContaining(streamingApplink));
327
- return [2 /*return*/];
328
- }
329
- });
330
- }); });
331
- });