@sasjs/cli 2.38.7 → 3.0.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 (78) hide show
  1. package/build/commands/add/addCredential.d.ts +2 -2
  2. package/build/commands/add/addCredential.js +26 -28
  3. package/build/commands/add/internal/input.js +15 -2
  4. package/build/commands/build/build.d.ts +1 -1
  5. package/build/commands/build/build.js +67 -56
  6. package/build/commands/build/internal/getLaunchPageCode.js +2 -1
  7. package/build/commands/compile/compile.js +18 -22
  8. package/build/commands/compile/internal/checkCompileStatus.js +6 -8
  9. package/build/commands/compile/internal/compileServiceFile.js +18 -16
  10. package/build/commands/compile/internal/spec/compileTestFile.spec.js +16 -4
  11. package/build/commands/compile/spec/loadDependencies.spec.js +3 -3
  12. package/build/commands/context/contextCommand.js +5 -5
  13. package/build/commands/deploy/deploy.d.ts +2 -1
  14. package/build/commands/deploy/deploy.js +92 -46
  15. package/build/commands/deploy/spec/cbd.spec.d.ts +1 -0
  16. package/build/commands/deploy/spec/cbd.spec.js +141 -0
  17. package/build/commands/deploy/spec/cbd.spec.server.js +6 -57
  18. package/build/commands/deploy/spec/utils.d.ts +6 -0
  19. package/build/commands/deploy/spec/utils.js +242 -0
  20. package/build/commands/docs/internal/getDocConfig.js +8 -3
  21. package/build/commands/docs/spec/generateDot.spec.js +0 -1
  22. package/build/commands/docs/spec/getDocConfig.spec.d.ts +1 -0
  23. package/build/commands/docs/spec/getDocConfig.spec.js +27 -0
  24. package/build/commands/flow/flowCommand.js +1 -1
  25. package/build/commands/flow/spec/flow.spec.server.js +1 -1
  26. package/build/commands/folder/folderCommand.js +2 -2
  27. package/build/commands/folder/spec/folder.spec.server.js +1 -1
  28. package/build/commands/job/internal/execute/index.d.ts +2 -0
  29. package/build/commands/job/internal/execute/index.js +14 -0
  30. package/build/commands/job/internal/execute/sasjs.d.ts +8 -0
  31. package/build/commands/job/internal/execute/sasjs.js +69 -0
  32. package/build/commands/job/{execute.d.ts → internal/execute/viya.d.ts} +1 -1
  33. package/build/commands/job/{execute.js → internal/execute/viya.js} +29 -68
  34. package/build/commands/job/internal/utils.d.ts +1 -0
  35. package/build/commands/job/internal/utils.js +81 -0
  36. package/build/commands/job/jobCommand.d.ts +2 -1
  37. package/build/commands/job/jobCommand.js +65 -23
  38. package/build/commands/job/spec/execute.spec.js +41 -21
  39. package/build/commands/job/spec/getContextName.spec.js +1 -1
  40. package/build/commands/job/spec/job.spec.server.js +4 -4
  41. package/build/commands/job/spec/jobCommand.spec.js +10 -10
  42. package/build/commands/request/request.js +1 -1
  43. package/build/commands/run/run.js +2 -2
  44. package/build/commands/servicepack/spec/servicepack.spec.server.js +0 -1
  45. package/build/commands/shared/dependencies.js +6 -9
  46. package/build/commands/shared/deployToSasViyaWithServicePack.js +1 -1
  47. package/build/commands/testing/test.js +1 -1
  48. package/build/commands/web/internal/createAssetServices.d.ts +5 -0
  49. package/build/commands/web/internal/createAssetServices.js +219 -0
  50. package/build/commands/web/internal/getTags.d.ts +4 -0
  51. package/build/commands/web/internal/getTags.js +21 -0
  52. package/build/commands/web/internal/getWebServiceContent.d.ts +2 -0
  53. package/build/commands/web/internal/getWebServiceContent.js +84 -0
  54. package/build/commands/web/{spec → internal/spec}/testFiles/script1.d.ts +0 -0
  55. package/build/commands/web/{spec → internal/spec}/testFiles/script1.js +0 -0
  56. package/build/commands/web/{spec → internal/spec}/testFiles/script2.d.ts +0 -0
  57. package/build/commands/web/{spec → internal/spec}/testFiles/script2.js +0 -0
  58. package/build/commands/web/{spec/updateTagSource.spec.d.ts → internal/spec/updateScriptTag.spec.d.ts} +0 -0
  59. package/build/commands/web/{spec/updateTagSource.spec.js → internal/spec/updateScriptTag.spec.js} +7 -7
  60. package/build/commands/web/internal/updateAllTags.d.ts +13 -0
  61. package/build/commands/web/internal/updateAllTags.js +94 -0
  62. package/build/commands/web/internal/updateLinkHref.d.ts +4 -0
  63. package/build/commands/web/internal/updateLinkHref.js +18 -0
  64. package/build/commands/web/internal/updateScriptTag.d.ts +5 -0
  65. package/build/commands/web/internal/updateScriptTag.js +85 -0
  66. package/build/commands/web/web.d.ts +0 -4
  67. package/build/commands/web/web.js +64 -378
  68. package/build/config.json +3 -1
  69. package/build/utils/config.d.ts +1 -1
  70. package/build/utils/config.js +106 -71
  71. package/build/utils/file.d.ts +1 -1
  72. package/build/utils/file.js +1 -1
  73. package/build/utils/spec/removeComments.spec.d.ts +1 -1
  74. package/build/utils/spec/removeComments.spec.js +1 -1
  75. package/build/utils/test.js +1 -1
  76. package/build/utils/utils.d.ts +1 -0
  77. package/build/utils/utils.js +8 -2
  78. package/package.json +13 -13
@@ -66,7 +66,7 @@ describe('compileTestFile', function () {
66
66
  }, utils_1.ServerType.SasViya);
67
67
  var target = new utils_1.Target(__assign(__assign({}, temp.toJson()), { jobConfig: {
68
68
  jobFolders: [path_1.default.join('sasjs', 'jobs')]
69
- } }));
69
+ }, macroFolders: ['sasjs/macros'] }));
70
70
  var sasjsPath;
71
71
  var testBody;
72
72
  var buildPath;
@@ -151,6 +151,9 @@ describe('compileTestFile', function () {
151
151
  _a.sent();
152
152
  return [4 /*yield*/, testContent(path_1.default.join('testteardown.sas'))];
153
153
  case 5:
154
+ _a.sent();
155
+ return [4 /*yield*/, testContent(path_1.default.join('macros', 'testMacro.test.sas'))];
156
+ case 6:
154
157
  _a.sent();
155
158
  return [2 /*return*/];
156
159
  }
@@ -236,6 +239,7 @@ describe('compileTestFile', function () {
236
239
  expectedTestFlow = {
237
240
  tests: [
238
241
  ['tests', 'jobs', 'jobs', 'testJob.test.sas'].join('/'),
242
+ ['tests', 'macros', 'testMacro.test.sas'].join('/'),
239
243
  ['tests', 'services', 'services', 'admin', 'random.test.sas'].join('/'),
240
244
  ['tests', 'services', 'services', 'admin', 'random.test.0.sas'].join('/')
241
245
  ].sort(),
@@ -290,6 +294,11 @@ describe('compileTestFile', function () {
290
294
  'test',
291
295
  'standalone'
292
296
  ],
297
+ [
298
+ ['tests', 'macros', 'testMacro.test.sas'].join('/'),
299
+ 'test',
300
+ 'standalone'
301
+ ],
293
302
  [
294
303
  ['tests', 'services', 'services', 'admin', 'random.test.sas'].join('/'),
295
304
  'test',
@@ -313,9 +322,9 @@ describe('compileTestFile', function () {
313
322
  return [4 /*yield*/, compile_1.compile(target)];
314
323
  case 1:
315
324
  _a.sent();
316
- expect(process.logger.info).toHaveBeenCalledTimes(14);
317
- expect(process.logger.info).toHaveBeenNthCalledWith(12, "Test coverage:");
318
- expect(process.logger.info).toHaveBeenNthCalledWith(13, "Services coverage: 0/4 (" + chalk_1.default.greenBright('0%') + ")");
325
+ expect(process.logger.info).toHaveBeenCalledTimes(15);
326
+ expect(process.logger.info).toHaveBeenNthCalledWith(13, "Test coverage:");
327
+ expect(process.logger.info).toHaveBeenNthCalledWith(14, "Services coverage: 0/4 (" + chalk_1.default.greenBright('0%') + ")");
319
328
  expect(process.logger.info).toHaveBeenLastCalledWith("Overall coverage: 0/4 (" + chalk_1.default.greenBright('0%') + ")");
320
329
  return [2 /*return*/];
321
330
  }
@@ -348,6 +357,9 @@ var copyTestFiles = function (appName) { return __awaiter(void 0, void 0, void 0
348
357
  _a.sent();
349
358
  return [4 /*yield*/, utils_1.copy(path_1.default.join(__dirname, 'testFiles', 'jobs'), path_1.default.join(__dirname, appName, 'sasjs', 'jobs'))];
350
359
  case 3:
360
+ _a.sent();
361
+ return [4 /*yield*/, utils_1.copy(path_1.default.join(__dirname, 'testFiles', 'macros'), path_1.default.join(__dirname, appName, 'sasjs', 'macros'))];
362
+ case 4:
351
363
  _a.sent();
352
364
  return [2 /*return*/];
353
365
  }
@@ -74,8 +74,8 @@ var utils_1 = require("@sasjs/utils");
74
74
  var internalModule = __importStar(require("../internal/config"));
75
75
  var test_1 = require("../../../utils/test");
76
76
  var loadDependencies_1 = require("../internal/loadDependencies");
77
- var fakeInit = "/**\n @file serviceinit.sas\n @brief this file is called with every service\n @details This file is included in *every* service, *after* the macros and *before* the service code.\n\n <h4> Dependencies </h4>\n @li mf_abort.sas\n\n**/\n\noptions\n DATASTMTCHK=ALLKEYWORDS /* some sites have this enabled */\n PS=MAX /* reduce log size slightly */\n;\n%put service is starting!!;";
78
- var fakeTerm = "/**\n @file serviceterm.sas\n @brief this file is called at the end of every service\n @details This file is included at the *end* of every service.\n\n <h4> Dependencies </h4>\n @li mf_abort.sas\n @li mf_existds.sas\n\n**/\n\n%put service is finishing. Thanks, SASjs!;";
77
+ var fakeInit = "/**\n @file serviceinit.sas\n @brief this file is called with every service\n @details This file is included in *every* service, *after* the macros and *before* the service code.\n\n <h4> SAS Macros </h4>\n @li mf_abort.sas\n\n**/\n\noptions\n DATASTMTCHK=ALLKEYWORDS /* some sites have this enabled */\n PS=MAX /* reduce log size slightly */\n;\n%put service is starting!!;";
78
+ var fakeTerm = "/**\n @file serviceterm.sas\n @brief this file is called at the end of every service\n @details This file is included at the *end* of every service.\n\n <h4> SAS Macros </h4>\n @li mf_abort.sas\n @li mf_existds.sas\n\n**/\n\n%put service is finishing. Thanks, SASjs!;";
79
79
  var fakeInit2 = "/**\n @file serviceinit.sas\n @brief this file is called with every service\n @details This file is included in *every* service, *after* the macros and *before* the service code.\n\n <h4> SAS Macros </h4>\n @li mf_abort.sas\n\n**/\n\noptions\n DATASTMTCHK=ALLKEYWORDS /* some sites have this enabled */\n PS=MAX /* reduce log size slightly */\n;\n%put service is starting!!;";
80
80
  var fakeTerm2 = "/**\n @file serviceterm.sas\n @brief this file is called at the end of every service\n @details This file is included at the *end* of every service.\n\n <h4> SAS Macros </h4>\n @li mf_abort.sas\n @li mf_existds.sas\n\n**/\n\n%put service is finishing. Thanks, SASjs!;";
81
81
  var fakeJobInit = "/**\n @file\n @brief This code is inserted into the beginning of each Viya Job.\n @details Inserted during the `sasjs compile` step. Add any code here that\n should go at the beginning of every deployed job.\n\n The path to this file should be listed in the `jobInit` property of the\n sasjsconfig file.\n\n <h4> SAS Programs </h4>\n @li test.sas TEST\n\n <h4> SAS Macros </h4>\n @li examplemacro.sas\n\n**/\n\n%example(Job Init is executing!)\n\n%let mylib=WORK;";
@@ -188,7 +188,7 @@ describe('loadDependencies', function () {
188
188
  }
189
189
  });
190
190
  }); });
191
- test('it should load dependencies for a job <h4> Dependencies </h4>', function () { return __awaiter(void 0, void 0, void 0, function () {
191
+ test('it should load dependencies for a job <h4> SAS Macros </h4>', function () { return __awaiter(void 0, void 0, void 0, function () {
192
192
  var dependencies;
193
193
  return __generator(this, function (_a) {
194
194
  switch (_a.label) {
@@ -221,7 +221,7 @@ var ContextCommand = /** @class */ (function (_super) {
221
221
  target = (_a.sent()).target;
222
222
  sasjs = new node_1.default({
223
223
  serverUrl: target.serverUrl,
224
- allowInsecureRequests: target.allowInsecureRequests,
224
+ httpsAgentOptions: target.httpsAgentOptions,
225
225
  appLoc: target.appLoc,
226
226
  serverType: target.serverType
227
227
  });
@@ -269,7 +269,7 @@ var ContextCommand = /** @class */ (function (_super) {
269
269
  target = (_a.sent()).target;
270
270
  sasjs = new node_1.default({
271
271
  serverUrl: target.serverUrl,
272
- allowInsecureRequests: target.allowInsecureRequests,
272
+ httpsAgentOptions: target.httpsAgentOptions,
273
273
  appLoc: target.appLoc,
274
274
  serverType: target.serverType
275
275
  });
@@ -308,7 +308,7 @@ var ContextCommand = /** @class */ (function (_super) {
308
308
  target = (_a.sent()).target;
309
309
  sasjs = new node_1.default({
310
310
  serverUrl: target.serverUrl,
311
- allowInsecureRequests: target.allowInsecureRequests,
311
+ httpsAgentOptions: target.httpsAgentOptions,
312
312
  appLoc: target.appLoc,
313
313
  serverType: target.serverType
314
314
  });
@@ -356,7 +356,7 @@ var ContextCommand = /** @class */ (function (_super) {
356
356
  target = (_a.sent()).target;
357
357
  sasjs = new node_1.default({
358
358
  serverUrl: target.serverUrl,
359
- allowInsecureRequests: target.allowInsecureRequests,
359
+ httpsAgentOptions: target.httpsAgentOptions,
360
360
  appLoc: target.appLoc,
361
361
  serverType: target.serverType
362
362
  });
@@ -399,7 +399,7 @@ var ContextCommand = /** @class */ (function (_super) {
399
399
  }
400
400
  sasjs = new node_1.default({
401
401
  serverUrl: target.serverUrl,
402
- allowInsecureRequests: target.allowInsecureRequests,
402
+ httpsAgentOptions: target.httpsAgentOptions,
403
403
  appLoc: target.appLoc,
404
404
  serverType: target.serverType
405
405
  });
@@ -1,2 +1,3 @@
1
+ import SASjs from '@sasjs/adapter/node';
1
2
  import { Target } from '@sasjs/utils';
2
- export declare function deploy(target: Target, isLocal: boolean): Promise<void>;
3
+ export declare function deploy(target: Target, isLocal: boolean, sasjs?: SASjs): Promise<void>;
@@ -49,7 +49,7 @@ var utils_2 = require("@sasjs/utils");
49
49
  var file_1 = require("../../utils/file");
50
50
  var getDeployScripts_1 = require("./internal/getDeployScripts");
51
51
  var deployToSasViyaWithServicePack_1 = require("../shared/deployToSasViyaWithServicePack");
52
- function deploy(target, isLocal) {
52
+ function deploy(target, isLocal, sasjs) {
53
53
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
54
54
  return __awaiter(this, void 0, void 0, function () {
55
55
  var appLoc, buildDestinationFolder_1, finalFilePathJSON, jsonObject, webIndexFileName, deployScripts, buildDestinationFolder, logFilePath;
@@ -82,50 +82,58 @@ function deploy(target, isLocal) {
82
82
  }
83
83
  buildDestinationFolder = process.sasjsConstants.buildDestinationFolder;
84
84
  logFilePath = buildDestinationFolder;
85
- return [4 /*yield*/, utils_2.asyncForEach(deployScripts, function (deployScript) { return __awaiter(_this, void 0, void 0, function () {
86
- var deployScriptPath, deployScriptFile, linesToExecute, streamConfig, logPath;
87
- var _a, _b, _c;
88
- return __generator(this, function (_d) {
89
- switch (_d.label) {
90
- case 0:
91
- deployScriptPath = utils_1.getAbsolutePath(deployScript, process.projectDir);
92
- if (!file_1.isSasFile(deployScript)) return [3 /*break*/, 7];
93
- (_a = process.logger) === null || _a === void 0 ? void 0 : _a.info("Processing SAS file " + path_1.default.basename(deployScript) + " ...");
94
- return [4 /*yield*/, utils_2.readFile(deployScriptPath)
95
- // split into lines
96
- ];
97
- case 1:
98
- deployScriptFile = _d.sent();
99
- linesToExecute = deployScriptFile.replace(/\r\n/g, '\n').split('\n');
100
- return [4 /*yield*/, config_1.getStreamConfig(target)];
101
- case 2:
102
- streamConfig = _d.sent();
103
- if (!(target.serverType === utils_2.ServerType.SasViya)) return [3 /*break*/, 4];
104
- return [4 /*yield*/, deployToSasViya(deployScript, target, isLocal, linesToExecute, logFilePath, streamConfig)];
105
- case 3:
106
- _d.sent();
107
- return [3 /*break*/, 6];
108
- case 4: return [4 /*yield*/, deployToSas9(deployScript, target, linesToExecute, logFilePath, streamConfig)];
109
- case 5:
110
- _d.sent();
111
- _d.label = 6;
112
- case 6: return [3 /*break*/, 9];
113
- case 7:
114
- if (!file_1.isShellScript(deployScript)) return [3 /*break*/, 9];
115
- (_b = process.logger) === null || _b === void 0 ? void 0 : _b.info("Executing shell script " + deployScript + " ...");
116
- logPath = path_1.default.join(process.projectDir, 'sasjsbuild', path_1.default.basename(deployScript).replace('.sh', '') + ".log");
117
- return [4 /*yield*/, utils_1.executeShellScript(deployScriptPath, logPath)];
118
- case 8:
119
- _d.sent();
120
- (_c = process.logger) === null || _c === void 0 ? void 0 : _c.success("Shell script execution completed! Log is here: " + logPath);
121
- _d.label = 9;
122
- case 9: return [2 /*return*/];
123
- }
124
- });
125
- }); })];
85
+ if (!(target.serverType === utils_2.ServerType.Sasjs)) return [3 /*break*/, 5];
86
+ return [4 /*yield*/, deployToSasjs(target, sasjs)];
126
87
  case 4:
127
88
  _k.sent();
128
- return [2 /*return*/];
89
+ return [3 /*break*/, 7];
90
+ case 5: return [4 /*yield*/, utils_2.asyncForEach(deployScripts, function (deployScript) { return __awaiter(_this, void 0, void 0, function () {
91
+ var deployScriptPath, deployScriptFile, linesToExecute, streamConfig, logPath;
92
+ var _a, _b, _c;
93
+ return __generator(this, function (_d) {
94
+ switch (_d.label) {
95
+ case 0:
96
+ deployScriptPath = utils_1.getAbsolutePath(deployScript, process.projectDir);
97
+ if (!file_1.isSasFile(deployScript)) return [3 /*break*/, 7];
98
+ (_a = process.logger) === null || _a === void 0 ? void 0 : _a.info("Processing SAS file " + path_1.default.basename(deployScript) + " ...");
99
+ return [4 /*yield*/, utils_2.readFile(deployScriptPath)
100
+ // split into lines
101
+ ];
102
+ case 1:
103
+ deployScriptFile = _d.sent();
104
+ linesToExecute = deployScriptFile
105
+ .replace(/\r\n/g, '\n')
106
+ .split('\n');
107
+ return [4 /*yield*/, config_1.getStreamConfig(target)];
108
+ case 2:
109
+ streamConfig = _d.sent();
110
+ if (!(target.serverType === utils_2.ServerType.SasViya)) return [3 /*break*/, 4];
111
+ return [4 /*yield*/, deployToSasViya(deployScript, target, isLocal, linesToExecute, logFilePath, streamConfig)];
112
+ case 3:
113
+ _d.sent();
114
+ return [3 /*break*/, 6];
115
+ case 4: return [4 /*yield*/, deployToSas9(deployScript, target, linesToExecute, logFilePath, streamConfig)];
116
+ case 5:
117
+ _d.sent();
118
+ _d.label = 6;
119
+ case 6: return [3 /*break*/, 9];
120
+ case 7:
121
+ if (!file_1.isShellScript(deployScript)) return [3 /*break*/, 9];
122
+ (_b = process.logger) === null || _b === void 0 ? void 0 : _b.info("Executing shell script " + deployScript + " ...");
123
+ logPath = path_1.default.join(process.projectDir, 'sasjsbuild', path_1.default.basename(deployScript).replace('.sh', '') + ".log");
124
+ return [4 /*yield*/, utils_1.executeShellScript(deployScriptPath, logPath)];
125
+ case 8:
126
+ _d.sent();
127
+ (_c = process.logger) === null || _c === void 0 ? void 0 : _c.success("Shell script execution completed! Log is here: " + logPath);
128
+ _d.label = 9;
129
+ case 9: return [2 /*return*/];
130
+ }
131
+ });
132
+ }); })];
133
+ case 6:
134
+ _k.sent();
135
+ _k.label = 7;
136
+ case 7: return [2 /*return*/];
129
137
  }
130
138
  });
131
139
  });
@@ -141,7 +149,7 @@ function getSASjsAndAuthConfig(target, isLocal) {
141
149
  serverUrl: target.serverUrl,
142
150
  appLoc: target.appLoc,
143
151
  serverType: target.serverType,
144
- allowInsecureRequests: target.allowInsecureRequests,
152
+ httpsAgentOptions: target.httpsAgentOptions,
145
153
  debug: true,
146
154
  useComputeApi: true
147
155
  });
@@ -233,14 +241,15 @@ function deployToSas9(deployScript, target, linesToExecute, logFilePath, streamC
233
241
  password = utils_2.decodeFromBase64(password);
234
242
  sasjs = new node_1.default({
235
243
  serverUrl: target.serverUrl,
236
- allowInsecureRequests: target.allowInsecureRequests,
244
+ httpsAgentOptions: target.httpsAgentOptions,
237
245
  appLoc: target.appLoc,
238
246
  serverType: target.serverType
239
247
  });
240
248
  return [4 /*yield*/, sasjs
241
249
  .executeScriptSAS9(linesToExecute, username, password)
242
250
  .catch(function (err) {
243
- process.logger.log(formatErrorString(err));
251
+ var _a;
252
+ (_a = process.logger) === null || _a === void 0 ? void 0 : _a.log(formatErrorString(err));
244
253
  if (err && err.errorCode === 404) {
245
254
  utils_1.displaySasjsRunnerError(username);
246
255
  }
@@ -270,6 +279,43 @@ function deployToSas9(deployScript, target, linesToExecute, logFilePath, streamC
270
279
  });
271
280
  });
272
281
  }
282
+ function deployToSasjs(target, sasjs) {
283
+ var _a, _b;
284
+ return __awaiter(this, void 0, void 0, function () {
285
+ var buildDestinationFolder, finalFilePathJSON, jsonContent, payload, result;
286
+ return __generator(this, function (_c) {
287
+ switch (_c.label) {
288
+ case 0:
289
+ buildDestinationFolder = process.sasjsConstants.buildDestinationFolder;
290
+ finalFilePathJSON = path_1.default.join(buildDestinationFolder, target.name + ".json");
291
+ return [4 /*yield*/, utils_2.readFile(finalFilePathJSON)];
292
+ case 1:
293
+ jsonContent = _c.sent();
294
+ payload = JSON.parse(jsonContent);
295
+ sasjs = sasjs
296
+ ? sasjs
297
+ : new node_1.default({
298
+ serverType: target.serverType,
299
+ serverUrl: target.serverUrl,
300
+ appLoc: target.appLoc
301
+ });
302
+ return [4 /*yield*/, sasjs.deployToSASjs(payload).catch(function (err) {
303
+ var _a;
304
+ (_a = process.logger) === null || _a === void 0 ? void 0 : _a.error(err);
305
+ })];
306
+ case 2:
307
+ result = _c.sent();
308
+ if ((result === null || result === void 0 ? void 0 : result.status) === 'failure') {
309
+ (_a = process.logger) === null || _a === void 0 ? void 0 : _a.error(result.message);
310
+ if (result.example) {
311
+ (_b = process.logger) === null || _b === void 0 ? void 0 : _b.info("Payload example:\n" + JSON.stringify(result.example, null, 2));
312
+ }
313
+ }
314
+ return [2 /*return*/];
315
+ }
316
+ });
317
+ });
318
+ }
273
319
  /**
274
320
  * this function formats the error string to dump error log on console
275
321
  * @param error
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,141 @@
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 (_) 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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ var node_1 = __importDefault(require("@sasjs/adapter/node"));
43
+ var utils_1 = require("@sasjs/utils");
44
+ var test_1 = require("../../../utils/test");
45
+ var types_1 = require("../../../types");
46
+ var build_1 = require("../../build/build");
47
+ var deploy_1 = require("../deploy");
48
+ var utils_2 = require("./utils");
49
+ var config_1 = require("../../../utils/config");
50
+ describe('sasjs cbd with server type SASJS', function () {
51
+ var target;
52
+ var appName;
53
+ beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () {
54
+ return __generator(this, function (_a) {
55
+ switch (_a.label) {
56
+ case 0:
57
+ appName = "cli-tests-cbd-sasjs-server-" + utils_1.generateTimestamp();
58
+ return [4 /*yield*/, test_1.createTestMinimalApp(__dirname, appName)];
59
+ case 1:
60
+ _a.sent();
61
+ return [4 /*yield*/, utils_2.createLocalTarget(utils_1.ServerType.Sasjs)];
62
+ case 2:
63
+ target = _a.sent();
64
+ return [2 /*return*/];
65
+ }
66
+ });
67
+ }); });
68
+ afterEach(function () { return __awaiter(void 0, void 0, void 0, function () {
69
+ return __generator(this, function (_a) {
70
+ switch (_a.label) {
71
+ case 0: return [4 /*yield*/, test_1.removeTestApp(__dirname, appName)];
72
+ case 1:
73
+ _a.sent();
74
+ jest.resetAllMocks();
75
+ return [2 /*return*/];
76
+ }
77
+ });
78
+ }); });
79
+ it("should deploy compile and build to sasjs/server", function () { return __awaiter(void 0, void 0, void 0, function () {
80
+ var sasjs, customTarget;
81
+ return __generator(this, function (_a) {
82
+ switch (_a.label) {
83
+ case 0:
84
+ sasjs = new node_1.default();
85
+ jest.mock('@sasjs/adapter');
86
+ jest.spyOn(sasjs, 'deployToSASjs').mockImplementation(function () {
87
+ return Promise.resolve({
88
+ status: 'success',
89
+ message: 'message'
90
+ });
91
+ });
92
+ return [4 /*yield*/, utils_2.updateLocalTarget(target.name, {
93
+ jobConfig: undefined,
94
+ serviceConfig: undefined,
95
+ deployConfig: {
96
+ deployServicePack: false,
97
+ deployScripts: ["sasjsbuild/" + target.name + ".sas"]
98
+ }
99
+ })];
100
+ case 1:
101
+ _a.sent();
102
+ return [4 /*yield*/, config_1.findTargetInConfiguration(target.name, types_1.TargetScope.Local)];
103
+ case 2:
104
+ customTarget = (_a.sent()).target;
105
+ return [4 /*yield*/, expect(build_1.build(customTarget)).toResolve()];
106
+ case 3:
107
+ _a.sent();
108
+ return [4 /*yield*/, deploy_1.deploy(customTarget, true, sasjs)];
109
+ case 4:
110
+ _a.sent();
111
+ expect(sasjs.deployToSASjs).toHaveBeenCalledWith({
112
+ members: [
113
+ {
114
+ name: 'services',
115
+ type: 'folder',
116
+ members: [
117
+ {
118
+ name: 'common',
119
+ type: 'folder',
120
+ members: [
121
+ {
122
+ name: 'appinit',
123
+ type: 'service',
124
+ code: '/* provide additional debug info */\n%global _program;\n%put &=syscc;\n%put user=%mf_getuser();\n%put pgm=&_program;\n%put timestamp=%sysfunc(datetime(),datetime19.);\n* Service Variables start;\n*Service Variables end;\n* Dependencies start;\n* Dependencies end;\n* Programs start;\n*Programs end;\n* Service start;\nproc sql;\ncreate table areas as select distinct area\n from sashelp.springs;\n%webout(OPEN)\n%webout(OBJ,areas)\n%webout(CLOSE)\n* Service end;'
125
+ },
126
+ {
127
+ name: 'getdata',
128
+ type: 'service',
129
+ code: '/* provide additional debug info */\n%global _program;\n%put &=syscc;\n%put user=%mf_getuser();\n%put pgm=&_program;\n%put timestamp=%sysfunc(datetime(),datetime19.);\n* Service Variables start;\n*Service Variables end;\n* Dependencies start;\n* Dependencies end;\n* Programs start;\n*Programs end;\n* Service start;\n%webout(FETCH)\nproc sql;\ncreate table springs as select * from sashelp.springs\n where area in (select area from work.areas);\n%webout(OPEN)\n%webout(OBJ,springs)\n%webout(CLOSE)\n* Service end;'
130
+ }
131
+ ]
132
+ }
133
+ ]
134
+ }
135
+ ]
136
+ });
137
+ return [2 /*return*/];
138
+ }
139
+ });
140
+ }); });
141
+ });
@@ -70,7 +70,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
70
70
  };
71
71
  Object.defineProperty(exports, "__esModule", { value: true });
72
72
  var utils_1 = require("@sasjs/utils");
73
- var dotenv_1 = __importDefault(require("dotenv"));
74
73
  var path_1 = __importDefault(require("path"));
75
74
  var utils_2 = require("@sasjs/utils");
76
75
  var configUtils = __importStar(require("../../../utils/config"));
@@ -78,18 +77,18 @@ var getDeployScriptsModule = __importStar(require("../internal/getDeployScripts"
78
77
  var test_1 = require("../../../utils/test");
79
78
  var build_1 = require("../../build/build");
80
79
  var deploy_1 = require("../deploy");
81
- var utils_3 = require("../../../utils");
80
+ var utils_3 = require("./utils");
82
81
  describe('sasjs cbd with global config', function () {
83
82
  var target;
84
83
  beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () {
85
84
  return __generator(this, function (_a) {
86
85
  switch (_a.label) {
87
86
  case 0:
88
- target = generateTarget(false);
87
+ target = utils_3.generateTarget(false);
89
88
  return [4 /*yield*/, test_1.createTestMinimalApp(__dirname, target.name)];
90
89
  case 1:
91
90
  _a.sent();
92
- return [4 /*yield*/, copyJobsAndServices(target.name)];
91
+ return [4 /*yield*/, utils_3.copyJobsAndServices(target.name)];
93
92
  case 2:
94
93
  _a.sent();
95
94
  return [2 /*return*/];
@@ -168,8 +167,8 @@ describe('sasjs cbd with local config', function () {
168
167
  return [4 /*yield*/, test_1.createTestApp(__dirname, appName)];
169
168
  case 1:
170
169
  _a.sent();
171
- target = generateTarget(true);
172
- return [4 /*yield*/, copyJobsAndServices(appName)];
170
+ target = utils_3.generateTarget(true);
171
+ return [4 /*yield*/, utils_3.copyJobsAndServices(appName)];
173
172
  case 2:
174
173
  _a.sent();
175
174
  return [4 /*yield*/, utils_1.copy(path_1.default.join(__dirname, 'testScript', 'copyscript.sh'), path_1.default.join(process.projectDir, 'sasjs', 'build', 'copyscript.sh'))];
@@ -283,7 +282,7 @@ describe('sasjs cbd having stream app', function () {
283
282
  return [4 /*yield*/, test_1.createTestMinimalApp(__dirname, appName)];
284
283
  case 1:
285
284
  _a.sent();
286
- target = generateTarget(true);
285
+ target = utils_3.generateTarget(true);
287
286
  return [2 /*return*/];
288
287
  }
289
288
  });
@@ -330,53 +329,3 @@ describe('sasjs cbd having stream app', function () {
330
329
  });
331
330
  }); });
332
331
  });
333
- var generateTarget = function (isLocal) {
334
- dotenv_1.default.config();
335
- var timestamp = utils_2.generateTimestamp();
336
- var targetName = "cli-tests-cbd-" + timestamp;
337
- var authConfig = isLocal
338
- ? undefined
339
- : {
340
- client: process.env.CLIENT,
341
- secret: process.env.SECRET,
342
- access_token: process.env.ACCESS_TOKEN,
343
- refresh_token: process.env.REFRESH_TOKEN
344
- };
345
- return new utils_2.Target({
346
- name: targetName,
347
- serverType: utils_2.ServerType.SasViya,
348
- serverUrl: process.env.VIYA_SERVER_URL,
349
- appLoc: "/Public/app/cli-tests/" + targetName,
350
- contextName: utils_3.contextName,
351
- serviceConfig: {
352
- serviceFolders: ['sasjs/testServices', 'sasjs/testJob', 'sasjs/services'],
353
- initProgram: 'sasjs/testServices/serviceinit.sas',
354
- termProgram: 'sasjs/testServices/serviceterm.sas',
355
- macroVars: {}
356
- },
357
- jobConfig: {
358
- jobFolders: ['sasjs/testJob'],
359
- initProgram: 'sasjs/testServices/serviceinit.sas',
360
- termProgram: 'sasjs/testServices/serviceterm.sas',
361
- macroVars: {}
362
- },
363
- authConfig: authConfig,
364
- deployConfig: {
365
- deployServicePack: true,
366
- deployScripts: ['']
367
- }
368
- });
369
- };
370
- var copyJobsAndServices = function (appName) { return __awaiter(void 0, void 0, void 0, function () {
371
- return __generator(this, function (_a) {
372
- switch (_a.label) {
373
- case 0: return [4 /*yield*/, utils_1.copy(path_1.default.join(__dirname, 'testJob'), path_1.default.join(__dirname, appName, 'sasjs', 'testJob'))];
374
- case 1:
375
- _a.sent();
376
- return [4 /*yield*/, utils_1.copy(path_1.default.join(__dirname, 'testServices'), path_1.default.join(__dirname, appName, 'sasjs', 'testServices'))];
377
- case 2:
378
- _a.sent();
379
- return [2 /*return*/];
380
- }
381
- });
382
- }); };
@@ -0,0 +1,6 @@
1
+ import { ServerType, Target } from '@sasjs/utils';
2
+ export declare const createGlobalTarget: (serverType?: ServerType) => Promise<Target>;
3
+ export declare const createLocalTarget: (serverType?: ServerType) => Promise<Target>;
4
+ export declare const updateLocalTarget: (targetName: string, data: any) => Promise<void>;
5
+ export declare const copyJobsAndServices: (appName: string) => Promise<void>;
6
+ export declare const generateTarget: (isLocal: boolean) => Target;