@sasjs/cli 3.9.0 → 3.10.0

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.
@@ -1,4 +1,5 @@
1
+ import { CompileTree } from '@sasjs/utils';
1
2
  import { Target } from '@sasjs/utils/types';
2
3
  export declare function compile(target: Target, forceCompile?: boolean): Promise<void>;
3
4
  export declare function copyFilesToBuildFolder(target: Target): Promise<void>;
4
- export declare function compileJobsServicesTests(target: Target): Promise<void>;
5
+ export declare function compileJobsServicesTests(target: Target, compileTree: CompileTree): Promise<void>;
@@ -82,11 +82,12 @@ var compileServiceFile_1 = require("./internal/compileServiceFile");
82
82
  var compileJobFile_1 = require("./internal/compileJobFile");
83
83
  var compileTestFile_1 = require("./internal/compileTestFile");
84
84
  var getDestinationPath_1 = require("./internal/getDestinationPath");
85
+ var loadDependencies_1 = require("./internal/loadDependencies");
85
86
  function compile(target, forceCompile) {
86
87
  var _a, _b;
87
88
  if (forceCompile === void 0) { forceCompile = false; }
88
89
  return __awaiter(this, void 0, void 0, function () {
89
- var result, macroFolders, programFolders_1, buildMacroTestFolder_1, macroTestFiles;
90
+ var result, compileTree, macroFolders, programFolders_1, buildMacroTestFolder_1, macroTestFiles;
90
91
  var _this = this;
91
92
  return __generator(this, function (_c) {
92
93
  switch (_c.label) {
@@ -108,7 +109,8 @@ function compile(target, forceCompile) {
108
109
  })];
109
110
  case 2:
110
111
  _c.sent();
111
- return [4 /*yield*/, compileModule.compileJobsServicesTests(target)];
112
+ compileTree = (0, loadDependencies_1.getCompileTree)(target);
113
+ return [4 /*yield*/, compileModule.compileJobsServicesTests(target, compileTree)];
112
114
  case 3:
113
115
  _c.sent();
114
116
  return [4 /*yield*/, (0, config_1.getMacroFolders)(target)];
@@ -136,7 +138,7 @@ function compile(target, forceCompile) {
136
138
  macroTestFiles = _c.sent();
137
139
  return [4 /*yield*/, (0, utils_1.asyncForEach)(macroTestFiles, function (macroTestFile) { return __awaiter(_this, void 0, void 0, function () {
138
140
  return __generator(this, function (_a) {
139
- return [2 /*return*/, (0, compileServiceFile_1.compileServiceFile)(target, path_1.default.join(buildMacroTestFolder_1, macroTestFile), macroFolders, programFolders_1)];
141
+ return [2 /*return*/, (0, compileServiceFile_1.compileServiceFile)(target, path_1.default.join(buildMacroTestFolder_1, macroTestFile), macroFolders, programFolders_1, undefined, compileTree)];
140
142
  });
141
143
  }); })];
142
144
  case 10:
@@ -221,7 +223,7 @@ function copyFilesToBuildFolder(target) {
221
223
  });
222
224
  }
223
225
  exports.copyFilesToBuildFolder = copyFilesToBuildFolder;
224
- function compileJobsServicesTests(target) {
226
+ function compileJobsServicesTests(target, compileTree) {
225
227
  var _a;
226
228
  return __awaiter(this, void 0, void 0, function () {
227
229
  var serviceFolders, jobFolders, macroFolders_1, programFolders_2, testSetUp, testTearDown, error_2;
@@ -262,7 +264,7 @@ function compileJobsServicesTests(target) {
262
264
  case 10: return [4 /*yield*/, (0, utils_1.asyncForEach)(serviceFolders, function (serviceFolder) { return __awaiter(_this, void 0, void 0, function () {
263
265
  return __generator(this, function (_a) {
264
266
  switch (_a.label) {
265
- case 0: return [4 /*yield*/, compileServiceFolder(target, serviceFolder, macroFolders_1, programFolders_2)];
267
+ case 0: return [4 /*yield*/, compileServiceFolder(target, serviceFolder, macroFolders_1, programFolders_2, compileTree)];
266
268
  case 1:
267
269
  _a.sent();
268
270
  return [2 /*return*/];
@@ -274,7 +276,7 @@ function compileJobsServicesTests(target) {
274
276
  return [4 /*yield*/, (0, utils_1.asyncForEach)(jobFolders, function (jobFolder) { return __awaiter(_this, void 0, void 0, function () {
275
277
  return __generator(this, function (_a) {
276
278
  switch (_a.label) {
277
- case 0: return [4 /*yield*/, compileJobFolder(target, jobFolder, macroFolders_1, programFolders_2)];
279
+ case 0: return [4 /*yield*/, compileJobFolder(target, jobFolder, macroFolders_1, programFolders_2, compileTree)];
278
280
  case 1:
279
281
  _a.sent();
280
282
  return [2 /*return*/];
@@ -319,7 +321,7 @@ function recreateBuildFolder() {
319
321
  });
320
322
  });
321
323
  }
322
- var compileServiceFolder = function (target, serviceFolder, macroFolders, programFolders) { return __awaiter(void 0, void 0, void 0, function () {
324
+ var compileServiceFolder = function (target, serviceFolder, macroFolders, programFolders, compileTree) { return __awaiter(void 0, void 0, void 0, function () {
323
325
  var destinationPath, subFolders, filesNamesInPath;
324
326
  return __generator(this, function (_a) {
325
327
  switch (_a.label) {
@@ -342,7 +344,7 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
342
344
  case 1:
343
345
  _a.sent();
344
346
  return [3 /*break*/, 4];
345
- case 2: return [4 /*yield*/, (0, compileServiceFile_1.compileServiceFile)(target, filePath, macroFolders, programFolders)];
347
+ case 2: return [4 /*yield*/, (0, compileServiceFile_1.compileServiceFile)(target, filePath, macroFolders, programFolders, undefined, compileTree)];
346
348
  case 3:
347
349
  _a.sent();
348
350
  _a.label = 4;
@@ -370,7 +372,7 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
370
372
  case 1:
371
373
  _a.sent();
372
374
  return [3 /*break*/, 4];
373
- case 2: return [4 /*yield*/, (0, compileServiceFile_1.compileServiceFile)(target, filePath, macroFolders, programFolders)];
375
+ case 2: return [4 /*yield*/, (0, compileServiceFile_1.compileServiceFile)(target, filePath, macroFolders, programFolders, undefined, compileTree)];
374
376
  case 3:
375
377
  _a.sent();
376
378
  _a.label = 4;
@@ -386,11 +388,12 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
386
388
  }); })];
387
389
  case 4:
388
390
  _a.sent();
391
+ compileTree.saveTree();
389
392
  return [2 /*return*/];
390
393
  }
391
394
  });
392
395
  }); };
393
- var compileJobFolder = function (target, jobFolder, macroFolders, programFolders) { return __awaiter(void 0, void 0, void 0, function () {
396
+ var compileJobFolder = function (target, jobFolder, macroFolders, programFolders, compileTree) { return __awaiter(void 0, void 0, void 0, function () {
394
397
  var destinationPath, subFolders, filesNamesInPath;
395
398
  return __generator(this, function (_a) {
396
399
  switch (_a.label) {
@@ -413,7 +416,7 @@ var compileJobFolder = function (target, jobFolder, macroFolders, programFolders
413
416
  case 1:
414
417
  _a.sent();
415
418
  return [3 /*break*/, 4];
416
- case 2: return [4 /*yield*/, (0, compileJobFile_1.compileJobFile)(target, filePath, macroFolders, programFolders)];
419
+ case 2: return [4 /*yield*/, (0, compileJobFile_1.compileJobFile)(target, filePath, macroFolders, programFolders, undefined, compileTree)];
417
420
  case 3:
418
421
  _a.sent();
419
422
  _a.label = 4;
@@ -441,7 +444,7 @@ var compileJobFolder = function (target, jobFolder, macroFolders, programFolders
441
444
  case 1:
442
445
  _a.sent();
443
446
  return [3 /*break*/, 4];
444
- case 2: return [4 /*yield*/, (0, compileJobFile_1.compileJobFile)(target, filePath, macroFolders, programFolders)];
447
+ case 2: return [4 /*yield*/, (0, compileJobFile_1.compileJobFile)(target, filePath, macroFolders, programFolders, undefined, compileTree)];
445
448
  case 3:
446
449
  _a.sent();
447
450
  _a.label = 4;
@@ -46,12 +46,13 @@ var utils_1 = require("@sasjs/utils");
46
46
  var compileServiceFile_1 = require("./internal/compileServiceFile");
47
47
  var compileJobFile_1 = require("./internal/compileJobFile");
48
48
  var identifySasFile_1 = require("./internal/identifySasFile");
49
+ var loadDependencies_1 = require("./internal/loadDependencies");
49
50
  function compileSingleFile(target, subCommand, source, output, insertProgramVar) {
50
51
  var _a;
51
52
  if (subCommand === void 0) { subCommand = 'identify'; }
52
53
  if (insertProgramVar === void 0) { insertProgramVar = false; }
53
54
  return __awaiter(this, void 0, void 0, function () {
54
- var subCommands, commandExample, sourcePath, outputPathParts, leafFolderName, parentOutputFolder, pathExists, sourceFileName, destinationPath, sourceFileNameWithoutExt, macroFolders, programFolders, psMaxOption, programVar, _b;
55
+ var subCommands, commandExample, sourcePath, outputPathParts, leafFolderName, parentOutputFolder, pathExists, sourceFileName, destinationPath, sourceFileNameWithoutExt, macroFolders, programFolders, psMaxOption, programVar, compileTree, _b;
55
56
  return __generator(this, function (_c) {
56
57
  switch (_c.label) {
57
58
  case 0:
@@ -111,17 +112,18 @@ function compileSingleFile(target, subCommand, source, output, insertProgramVar)
111
112
  programVar = insertProgramVar
112
113
  ? "%let _program=".concat(target.appLoc, "/").concat(subCommand, "s/").concat(leafFolderName, "/").concat(sourceFileNameWithoutExt, ";\n").concat(psMaxOption)
113
114
  : "".concat(psMaxOption);
115
+ compileTree = (0, loadDependencies_1.getCompileTree)(target);
114
116
  _b = subCommand;
115
117
  switch (_b) {
116
118
  case subCommands.service: return [3 /*break*/, 11];
117
119
  case subCommands.job: return [3 /*break*/, 13];
118
120
  }
119
121
  return [3 /*break*/, 15];
120
- case 11: return [4 /*yield*/, (0, compileServiceFile_1.compileServiceFile)(target, destinationPath, macroFolders, programFolders, programVar)];
122
+ case 11: return [4 /*yield*/, (0, compileServiceFile_1.compileServiceFile)(target, destinationPath, macroFolders, programFolders, programVar, compileTree)];
121
123
  case 12:
122
124
  _c.sent();
123
125
  return [3 /*break*/, 16];
124
- case 13: return [4 /*yield*/, (0, compileJobFile_1.compileJobFile)(target, destinationPath, macroFolders, programFolders, programVar)];
126
+ case 13: return [4 /*yield*/, (0, compileJobFile_1.compileJobFile)(target, destinationPath, macroFolders, programFolders, programVar, compileTree)];
125
127
  case 14:
126
128
  _c.sent();
127
129
  return [3 /*break*/, 16];
@@ -1,2 +1,3 @@
1
1
  import { Target } from '@sasjs/utils/types';
2
- export declare function compileJobFile(target: Target, filePath: string, macroFolders: string[], programFolders: string[], programVar?: string): Promise<void>;
2
+ import { CompileTree } from '@sasjs/utils';
3
+ export declare function compileJobFile(target: Target, filePath: string, macroFolders: string[], programFolders: string[], programVar: string | undefined, compileTree: CompileTree): Promise<void>;
@@ -39,13 +39,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.compileJobFile = void 0;
40
40
  var utils_1 = require("@sasjs/utils");
41
41
  var loadDependencies_1 = require("./loadDependencies");
42
- function compileJobFile(target, filePath, macroFolders, programFolders, programVar) {
42
+ function compileJobFile(target, filePath, macroFolders, programFolders, programVar, compileTree) {
43
43
  if (programVar === void 0) { programVar = ''; }
44
44
  return __awaiter(this, void 0, void 0, function () {
45
45
  var dependencies;
46
46
  return __generator(this, function (_a) {
47
47
  switch (_a.label) {
48
- case 0: return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, filePath, macroFolders, programFolders, (0, utils_1.isTestFile)(filePath) ? utils_1.SASJsFileType.test : utils_1.SASJsFileType.job)];
48
+ case 0: return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, filePath, macroFolders, programFolders, (0, utils_1.isTestFile)(filePath) ? utils_1.SASJsFileType.test : utils_1.SASJsFileType.job, compileTree)];
49
49
  case 1:
50
50
  dependencies = _a.sent();
51
51
  dependencies = "".concat(programVar ? programVar + '\n' : '').concat(dependencies);
@@ -1,3 +1,4 @@
1
+ import { CompileTree } from '@sasjs/utils';
1
2
  import { Target, ServerType } from '@sasjs/utils/types';
2
- export declare function compileServiceFile(target: Target, filePath: string, macroFolders: string[], programFolders: string[], programVar?: string): Promise<void>;
3
+ export declare function compileServiceFile(target: Target, filePath: string, macroFolders: string[], programFolders: string[], programVar: string | undefined, compileTree: CompileTree): Promise<void>;
3
4
  export declare function getPreCodeForServicePack(serverType: ServerType): Promise<string>;
@@ -43,13 +43,13 @@ var types_1 = require("@sasjs/utils/types");
43
43
  var error_1 = require("@sasjs/utils/error");
44
44
  var loadDependencies_1 = require("./loadDependencies");
45
45
  var getServerType_1 = require("./getServerType");
46
- function compileServiceFile(target, filePath, macroFolders, programFolders, programVar) {
46
+ function compileServiceFile(target, filePath, macroFolders, programFolders, programVar, compileTree) {
47
47
  if (programVar === void 0) { programVar = ''; }
48
48
  return __awaiter(this, void 0, void 0, function () {
49
49
  var dependencies, serverType, preCode;
50
50
  return __generator(this, function (_a) {
51
51
  switch (_a.label) {
52
- case 0: return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, filePath, macroFolders, programFolders, (0, utils_1.isTestFile)(filePath) ? types_1.SASJsFileType.test : types_1.SASJsFileType.service)];
52
+ case 0: return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, filePath, macroFolders, programFolders, (0, utils_1.isTestFile)(filePath) ? types_1.SASJsFileType.test : types_1.SASJsFileType.service, compileTree)];
53
53
  case 1:
54
54
  dependencies = _a.sent();
55
55
  return [4 /*yield*/, (0, getServerType_1.getServerType)(target)];
@@ -82,10 +82,11 @@ function compileTestFile(target, filePath, testVar, saveToRoot, removeOriginalFi
82
82
  if (saveToRoot === void 0) { saveToRoot = true; }
83
83
  if (removeOriginalFile === void 0) { removeOriginalFile = true; }
84
84
  return __awaiter(this, void 0, void 0, function () {
85
- var dependencies, _a, _b, preCode, destinationPath;
85
+ var compileTree, dependencies, _a, _b, preCode, destinationPath;
86
86
  return __generator(this, function (_c) {
87
87
  switch (_c.label) {
88
88
  case 0:
89
+ compileTree = (0, loadDependencies_1.getCompileTree)(target);
89
90
  _a = loadDependencies_1.loadDependencies;
90
91
  _b = [target,
91
92
  (0, utils_1.getAbsolutePath)(filePath, process.projectDir)];
@@ -93,7 +94,8 @@ function compileTestFile(target, filePath, testVar, saveToRoot, removeOriginalFi
93
94
  case 1:
94
95
  _b = _b.concat([_c.sent()]);
95
96
  return [4 /*yield*/, (0, config_1.getProgramFolders)(target)];
96
- case 2: return [4 /*yield*/, _a.apply(void 0, _b.concat([_c.sent(), utils_1.SASJsFileType.test]))];
97
+ case 2: return [4 /*yield*/, _a.apply(void 0, _b.concat([_c.sent(), utils_1.SASJsFileType.test,
98
+ compileTree]))];
97
99
  case 3:
98
100
  dependencies = _c.sent();
99
101
  return [4 /*yield*/, (0, compileServiceFile_1.getPreCodeForServicePack)(target.serverType)];
@@ -1,2 +1,3 @@
1
- import { Target, SASJsFileType } from '@sasjs/utils';
2
- export declare function loadDependencies(target: Target, filePath: string, macroFolders: string[], programFolders: string[], type: SASJsFileType): Promise<string>;
1
+ import { Target, SASJsFileType, CompileTree } from '@sasjs/utils';
2
+ export declare function loadDependencies(target: Target, filePath: string, macroFolders: string[], programFolders: string[], type: SASJsFileType, compileTree: CompileTree): Promise<string>;
3
+ export declare const getCompileTree: (target: Target) => CompileTree;
@@ -35,27 +35,43 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
35
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
36
  }
37
37
  };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
38
41
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.loadDependencies = void 0;
42
+ exports.getCompileTree = exports.loadDependencies = void 0;
40
43
  var utils_1 = require("@sasjs/utils");
41
44
  var config_1 = require("../../../utils/config");
42
- function loadDependencies(target, filePath, macroFolders, programFolders, type) {
45
+ var path_1 = __importDefault(require("path"));
46
+ function loadDependencies(target, filePath, macroFolders, programFolders, type, compileTree) {
43
47
  var _a;
44
48
  return __awaiter(this, void 0, void 0, function () {
45
- var fileContent, configuration, _b, buildSourceFolder, macroCorePath, binaryFolders;
49
+ var fileContent, leaf, configuration, _b, buildSourceFolder, macroCorePath, binaryFolders;
46
50
  return __generator(this, function (_c) {
47
51
  switch (_c.label) {
48
52
  case 0:
49
53
  (_a = process.logger) === null || _a === void 0 ? void 0 : _a.info("Loading dependencies for ".concat(filePath));
50
- return [4 /*yield*/, (0, utils_1.readFile)(filePath)];
51
- case 1:
52
- fileContent = _c.sent();
53
- return [4 /*yield*/, (0, config_1.getLocalOrGlobalConfig)()];
54
+ fileContent = '';
55
+ if (!(compileTree && Object.keys(compileTree).length)) return [3 /*break*/, 4];
56
+ leaf = compileTree.getLeaf(filePath);
57
+ if (!leaf) return [3 /*break*/, 1];
58
+ fileContent = leaf.content;
59
+ return [3 /*break*/, 3];
60
+ case 1: return [4 /*yield*/, (0, utils_1.readFile)(filePath)];
54
61
  case 2:
62
+ fileContent = _c.sent();
63
+ _c.label = 3;
64
+ case 3: return [3 /*break*/, 6];
65
+ case 4: return [4 /*yield*/, (0, utils_1.readFile)(filePath)];
66
+ case 5:
67
+ fileContent = _c.sent();
68
+ _c.label = 6;
69
+ case 6: return [4 /*yield*/, (0, config_1.getLocalOrGlobalConfig)()];
70
+ case 7:
55
71
  configuration = (_c.sent()).configuration;
56
72
  _b = process.sasjsConstants, buildSourceFolder = _b.buildSourceFolder, macroCorePath = _b.macroCorePath;
57
73
  return [4 /*yield*/, (0, config_1.getBinaryFolders)(target)];
58
- case 3:
74
+ case 8:
59
75
  binaryFolders = _c.sent();
60
76
  headerSyntaxNotices(fileContent);
61
77
  return [4 /*yield*/, (0, utils_1.loadDependenciesFile)({
@@ -68,9 +84,10 @@ function loadDependencies(target, filePath, macroFolders, programFolders, type)
68
84
  programFolders: programFolders,
69
85
  buildSourceFolder: buildSourceFolder,
70
86
  macroCorePath: macroCorePath,
71
- binaryFolders: binaryFolders
87
+ binaryFolders: binaryFolders,
88
+ compileTree: compileTree
72
89
  })];
73
- case 4: return [2 /*return*/, _c.sent()];
90
+ case 9: return [2 /*return*/, _c.sent()];
74
91
  }
75
92
  });
76
93
  });
@@ -78,21 +95,21 @@ function loadDependencies(target, filePath, macroFolders, programFolders, type)
78
95
  exports.loadDependencies = loadDependencies;
79
96
  var headerSyntaxNotices = function (fileContent) {
80
97
  var _a, _b, _c;
81
- if (fileContent.includes('<h4> Dependencies </h4>')) {
98
+ if (fileContent.includes(utils_1.DependencyHeader.DeprecatedMacro)) {
82
99
  var deprecationDate = new Date(2021, 10, 2);
83
100
  var today = new Date();
84
101
  if (today < deprecationDate) {
85
- (_a = process.logger) === null || _a === void 0 ? void 0 : _a.warn("Please use <h4> SAS Macros </h4> syntax to specify dependencies. Specifying dependencies with a <h4> Dependencies </h4> syntax will not be supported starting from November 1, 2021.");
102
+ (_a = process.logger) === null || _a === void 0 ? void 0 : _a.warn("Please use ".concat(utils_1.DependencyHeader.Macro, " syntax to specify dependencies. Specifying dependencies with a ").concat(utils_1.DependencyHeader.DeprecatedMacro, " syntax will not be supported starting from November 1, 2021."));
86
103
  }
87
104
  else {
88
- throw new Error('Using <h4> Dependencies </h4> syntax is deprecated. Please use <h4> SAS Macros </h4> instead.');
105
+ throw new Error("Using ".concat(utils_1.DependencyHeader.DeprecatedMacro, " syntax is deprecated. Please use ").concat(utils_1.DependencyHeader.Macro, " instead."));
89
106
  }
90
107
  }
91
- if (fileContent.includes('<h4> SAS Programs </h4>')) {
108
+ if (fileContent.includes(utils_1.DependencyHeader.DeprecatedInclude)) {
92
109
  var deprecationDate = new Date(2022, 4, 2);
93
110
  var warningDate = new Date(2022, 10, 2);
94
111
  var today = new Date();
95
- var message = "Please use <h4> SAS Includes </h4> syntax to specify programs. Specifying programs with a <h4> SAS Programs </h4> syntax will not be supported starting from April 1, 2022.";
112
+ var message = "Please use ".concat(utils_1.DependencyHeader.Include, " syntax to specify programs. Specifying programs with a ").concat(utils_1.DependencyHeader.DeprecatedInclude, " syntax will not be supported starting from April 1, 2022.");
96
113
  if (today < warningDate) {
97
114
  (_b = process.logger) === null || _b === void 0 ? void 0 : _b.info(message);
98
115
  }
@@ -100,6 +117,10 @@ var headerSyntaxNotices = function (fileContent) {
100
117
  (_c = process.logger) === null || _c === void 0 ? void 0 : _c.warn(message);
101
118
  }
102
119
  else
103
- throw new Error('Using <h4> SAS Programs </h4> syntax is deprecated. Please use <h4> SAS Includes </h4> instead.');
120
+ throw new Error("Using ".concat(utils_1.DependencyHeader.DeprecatedInclude, " syntax is deprecated. Please use ").concat(utils_1.DependencyHeader.Include, " instead."));
104
121
  }
105
122
  };
123
+ var getCompileTree = function (target) {
124
+ return new utils_1.CompileTree(path_1.default.join(process.sasjsConstants.buildDestinationFolder, "".concat(target === null || target === void 0 ? void 0 : target.name, "_compileTree.json")));
125
+ };
126
+ exports.getCompileTree = getCompileTree;
@@ -129,8 +129,8 @@ describe('compileTestFile', function () {
129
129
  case 2:
130
130
  testFileContent = _a.apply(void 0, [_b.sent()]);
131
131
  testVar = replaceLineBreaks("* Test Variables start;\n\n%let ".concat(Object.keys(target.testConfig.macroVars)[0], "=").concat(Object.values(target.testConfig.macroVars)[0], ";\n\n* Test Variables end;"));
132
- testInit = replaceLineBreaks("* TestInit start;\n/**\n @file\n @brief setting up the test\n\n <h4> SAS Macros </h4>\n**/\n\n%put testing, init;\n* TestInit end;");
133
- testTerm = replaceLineBreaks("* TestTerm start;\n/**\n @file\n @brief ending the test\n\n <h4> SAS Macros </h4>\n**/\n\n%put testing, termed;\n* TestTerm end;");
132
+ testInit = replaceLineBreaks("* TestInit start;\n%put testing, init;\n* TestInit end;");
133
+ testTerm = replaceLineBreaks("* TestTerm start;\n%put testing, termed;\n* TestTerm end;");
134
134
  mvWebout = "%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=Y,stream=Y,missing=NULL<br> ,showmeta=NO<br>);";
135
135
  expect(testFileContent.indexOf(testVar)).toBeGreaterThan(-1);
136
136
  expect(testFileContent.indexOf(testInit)).toBeGreaterThan(-1);
@@ -65,8 +65,9 @@ var getInitTerm_1 = require("@sasjs/utils/sasjsCli/getInitTerm");
65
65
  var test_1 = require("../../../utils/test");
66
66
  var compileJobFile_1 = require("../internal/compileJobFile");
67
67
  var utils_2 = require("@sasjs/utils");
68
- 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;";
69
- var fakeJobTerm = "/**\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!;";
68
+ var loadDependencies_1 = require("../internal/loadDependencies");
69
+ 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 ".concat(utils_1.DependencyHeader.DeprecatedInclude, "\n @li test.sas TEST\n\n ").concat(utils_1.DependencyHeader.Macro, "\n @li examplemacro.sas\n\n**/\n\n%example(Job Init is executing!)\n\n%let mylib=WORK;");
70
+ var fakeJobTerm = "/**\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 ".concat(utils_1.DependencyHeader.Macro, "\n @li mf_abort.sas\n @li mf_existds.sas\n\n**/\n\n%put service is finishing. Thanks, SASjs!;");
70
71
  var fakeProgramLines = [
71
72
  'filename TEST temp;',
72
73
  'data _null_;',
@@ -103,7 +104,7 @@ describe('compileJobFile', function () {
103
104
  });
104
105
  }); });
105
106
  test('it should compile and create file', function () { return __awaiter(void 0, void 0, void 0, function () {
106
- var filePath, buildPath, destinationPath, compiledContent, macrosToTest;
107
+ var filePath, buildPath, destinationPath, compileTree, compiledContent, macrosToTest;
107
108
  return __generator(this, function (_a) {
108
109
  switch (_a.label) {
109
110
  case 0:
@@ -111,13 +112,14 @@ describe('compileJobFile', function () {
111
112
  filePath = path_1.default.join(__dirname, './service.sas');
112
113
  buildPath = path_1.default.join(process.projectDir, 'sasjsbuild');
113
114
  destinationPath = path_1.default.join(buildPath, 'service.sas');
115
+ compileTree = (0, loadDependencies_1.getCompileTree)(target);
114
116
  return [4 /*yield*/, (0, utils_2.createFolder)(buildPath)];
115
117
  case 1:
116
118
  _a.sent();
117
119
  return [4 /*yield*/, (0, utils_2.copy)(filePath, destinationPath)];
118
120
  case 2:
119
121
  _a.sent();
120
- return [4 /*yield*/, expect((0, compileJobFile_1.compileJobFile)(target, destinationPath, [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')])).toResolve()];
122
+ return [4 /*yield*/, expect((0, compileJobFile_1.compileJobFile)(target, destinationPath, [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], undefined, compileTree)).toResolve()];
121
123
  case 3:
122
124
  _a.sent();
123
125
  return [4 /*yield*/, expect((0, utils_2.fileExists)(destinationPath)).resolves.toEqual(true)];
@@ -65,8 +65,9 @@ var getInitTerm_1 = require("@sasjs/utils/sasjsCli/getInitTerm");
65
65
  var test_1 = require("../../../utils/test");
66
66
  var compileServiceFile_1 = require("../internal/compileServiceFile");
67
67
  var utils_2 = require("@sasjs/utils");
68
- 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;";
69
- var fakeJobTerm = "/**\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!;";
68
+ var loadDependencies_1 = require("../internal/loadDependencies");
69
+ 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 ".concat(utils_1.DependencyHeader.DeprecatedInclude, "\n @li test.sas TEST\n\n ").concat(utils_1.DependencyHeader.Macro, "\n @li examplemacro.sas\n\n**/\n\n%example(Job Init is executing!)\n\n%let mylib=WORK;");
70
+ var fakeJobTerm = "/**\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 ".concat(utils_1.DependencyHeader.Macro, "\n @li mf_abort.sas\n @li mf_existds.sas\n\n**/\n\n%put service is finishing. Thanks, SASjs!;");
70
71
  var fakeProgramLines = [
71
72
  'filename TEST temp;',
72
73
  'data _null_;',
@@ -104,7 +105,7 @@ describe('compileServiceFile', function () {
104
105
  });
105
106
  }); });
106
107
  test('it should compile and create file', function () { return __awaiter(void 0, void 0, void 0, function () {
107
- var filePath, buildPath, destinationPath, compiledContent, macrosToTest;
108
+ var filePath, buildPath, destinationPath, compileTree, compiledContent, macrosToTest;
108
109
  return __generator(this, function (_a) {
109
110
  switch (_a.label) {
110
111
  case 0:
@@ -112,13 +113,14 @@ describe('compileServiceFile', function () {
112
113
  filePath = path_1.default.join(__dirname, './service.sas');
113
114
  buildPath = path_1.default.join(process.projectDir, 'sasjsbuild');
114
115
  destinationPath = path_1.default.join(buildPath, 'service.sas');
116
+ compileTree = (0, loadDependencies_1.getCompileTree)(target);
115
117
  return [4 /*yield*/, (0, utils_2.createFolder)(buildPath)];
116
118
  case 1:
117
119
  _a.sent();
118
120
  return [4 /*yield*/, (0, utils_2.copy)(filePath, destinationPath)];
119
121
  case 2:
120
122
  _a.sent();
121
- return [4 /*yield*/, expect((0, compileServiceFile_1.compileServiceFile)(target, destinationPath, [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')])).toResolve()];
123
+ return [4 /*yield*/, expect((0, compileServiceFile_1.compileServiceFile)(target, destinationPath, [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], undefined, compileTree)).toResolve()];
122
124
  case 3:
123
125
  _a.sent();
124
126
  return [4 /*yield*/, expect((0, utils_2.fileExists)(destinationPath)).resolves.toEqual(true)];
@@ -74,13 +74,14 @@ var utils_1 = require("@sasjs/utils");
74
74
  var internalModule = __importStar(require("@sasjs/utils/sasjsCli/getInitTerm"));
75
75
  var getInitTerm_1 = require("@sasjs/utils/sasjsCli/getInitTerm");
76
76
  var test_1 = require("../../../utils/test");
77
+ var utils_2 = require("../../../utils");
77
78
  var loadDependencies_1 = require("../internal/loadDependencies");
78
- 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!!;";
79
- 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!;";
80
- 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!!;";
81
- 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!;";
82
- 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;";
83
- var fakeJobInit2 = "/**\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 Includes </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;";
79
+ 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 ".concat(utils_1.DependencyHeader.Macro, "\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
+ 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 ".concat(utils_1.DependencyHeader.Macro, "\n @li mf_abort.sas\n @li mf_existds.sas\n\n**/\n\n%put service is finishing. Thanks, SASjs!;");
81
+ 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 ".concat(utils_1.DependencyHeader.Macro, "\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!!;");
82
+ 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 ".concat(utils_1.DependencyHeader.Macro, "\n @li mf_abort.sas\n @li mf_existds.sas\n\n**/\n\n%put service is finishing. Thanks, SASjs!;");
83
+ 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 ".concat(utils_1.DependencyHeader.DeprecatedInclude, "\n @li test.sas TEST\n\n ").concat(utils_1.DependencyHeader.Macro, "\n @li examplemacro.sas\n\n**/\n\n%example(Job Init is executing!)\n\n%let mylib=WORK;");
84
+ var fakeJobInit2 = "/**\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 ".concat(utils_1.DependencyHeader.Include, "\n @li test.sas TEST\n\n ").concat(utils_1.DependencyHeader.Macro, "\n @li examplemacro.sas\n\n**/\n\n%example(Job Init is executing!)\n\n%let mylib=WORK;");
84
85
  var fakeProgramLines = [
85
86
  'filename TEST temp;',
86
87
  'data _null_;',
@@ -132,17 +133,22 @@ describe('loadDependencies', function () {
132
133
  macroVars: {}
133
134
  }, utils_1.ServerType.SasViya);
134
135
  var target = new utils_1.Target(__assign(__assign({}, temp.toJson()), { jobConfig: jobConfig(false), serviceConfig: serviceConfig(false) }));
136
+ var compileTree;
135
137
  beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
136
138
  return __generator(this, function (_a) {
137
139
  switch (_a.label) {
138
- case 0: return [4 /*yield*/, (0, test_1.createTestMinimalApp)(__dirname, target.name)];
140
+ case 0: return [4 /*yield*/, (0, utils_2.setConstants)()];
139
141
  case 1:
142
+ _a.sent();
143
+ compileTree = (0, loadDependencies_1.getCompileTree)(target);
144
+ return [4 /*yield*/, (0, test_1.createTestMinimalApp)(__dirname, target.name)];
145
+ case 2:
140
146
  _a.sent();
141
147
  return [4 /*yield*/, (0, test_1.updateConfig)({
142
148
  jobConfig: jobConfig(),
143
149
  serviceConfig: serviceConfig()
144
150
  })];
145
- case 2:
151
+ case 3:
146
152
  _a.sent();
147
153
  return [2 /*return*/];
148
154
  }
@@ -158,13 +164,13 @@ describe('loadDependencies', function () {
158
164
  }
159
165
  });
160
166
  }); });
161
- test('it should load dependencies for a service with <h4> Dependencies </h4>', function () { return __awaiter(void 0, void 0, void 0, function () {
167
+ test("it should load dependencies for a service with ".concat(utils_1.DependencyHeader.DeprecatedMacro), function () { return __awaiter(void 0, void 0, void 0, function () {
162
168
  var dependencies;
163
169
  return __generator(this, function (_a) {
164
170
  switch (_a.label) {
165
171
  case 0:
166
172
  (0, getInitTerm_1.mockGetProgram)(internalModule, fakeInit, fakeTerm);
167
- return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.service)];
173
+ return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.service, compileTree)];
168
174
  case 1:
169
175
  dependencies = _a.sent();
170
176
  expect(dependencies).toStartWith(compiledVars('Service'));
@@ -178,13 +184,13 @@ describe('loadDependencies', function () {
178
184
  }
179
185
  });
180
186
  }); });
181
- test('it should load dependencies for a job <h4> SAS Macros </h4>', function () { return __awaiter(void 0, void 0, void 0, function () {
187
+ test("it should load dependencies for a job ".concat(utils_1.DependencyHeader.Macro), function () { return __awaiter(void 0, void 0, void 0, function () {
182
188
  var dependencies;
183
189
  return __generator(this, function (_a) {
184
190
  switch (_a.label) {
185
191
  case 0:
186
192
  (0, getInitTerm_1.mockGetProgram)(internalModule, fakeInit, fakeTerm);
187
- return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.job)];
193
+ return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.job, compileTree)];
188
194
  case 1:
189
195
  dependencies = _a.sent();
190
196
  expect(dependencies).toStartWith(compiledVars('Job'));
@@ -198,13 +204,13 @@ describe('loadDependencies', function () {
198
204
  }
199
205
  });
200
206
  }); });
201
- test('it should load dependencies for a service with <h4> SAS MAcros </h4>', function () { return __awaiter(void 0, void 0, void 0, function () {
207
+ test("it should load dependencies for a service with ".concat(utils_1.DependencyHeader.Macro), function () { return __awaiter(void 0, void 0, void 0, function () {
202
208
  var dependencies;
203
209
  return __generator(this, function (_a) {
204
210
  switch (_a.label) {
205
211
  case 0:
206
212
  (0, getInitTerm_1.mockGetProgram)(internalModule, fakeInit2, fakeTerm2);
207
- return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.service)];
213
+ return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.service, compileTree)];
208
214
  case 1:
209
215
  dependencies = _a.sent();
210
216
  expect(dependencies).toStartWith(compiledVars('Service'));
@@ -218,13 +224,13 @@ describe('loadDependencies', function () {
218
224
  }
219
225
  });
220
226
  }); });
221
- test('it should load dependencies for a job <h4> SAS MAcros </h4>', function () { return __awaiter(void 0, void 0, void 0, function () {
227
+ test("it should load dependencies for a job ".concat(utils_1.DependencyHeader.Macro), function () { return __awaiter(void 0, void 0, void 0, function () {
222
228
  var dependencies;
223
229
  return __generator(this, function (_a) {
224
230
  switch (_a.label) {
225
231
  case 0:
226
232
  (0, getInitTerm_1.mockGetProgram)(internalModule, fakeInit2, fakeTerm2);
227
- return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.job)];
233
+ return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.job, compileTree)];
228
234
  case 1:
229
235
  dependencies = _a.sent();
230
236
  expect(dependencies).toStartWith(compiledVars('Job'));
@@ -238,13 +244,13 @@ describe('loadDependencies', function () {
238
244
  }
239
245
  });
240
246
  }); });
241
- test('it should load programs for a service with <h4> SAS Programs </h4>', function () { return __awaiter(void 0, void 0, void 0, function () {
247
+ test("it should load programs for a service with ".concat(utils_1.DependencyHeader.DeprecatedInclude), function () { return __awaiter(void 0, void 0, void 0, function () {
242
248
  var dependencies;
243
249
  return __generator(this, function (_a) {
244
250
  switch (_a.label) {
245
251
  case 0:
246
252
  (0, getInitTerm_1.mockGetProgram)(internalModule, fakeJobInit, fakeTerm);
247
- return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service)];
253
+ return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service, compileTree)];
248
254
  case 1:
249
255
  dependencies = _a.sent();
250
256
  expect(dependencies).toStartWith(compiledVars('Service'));
@@ -258,13 +264,13 @@ describe('loadDependencies', function () {
258
264
  }
259
265
  });
260
266
  }); });
261
- test('it should load programs for a job <h4> SAS Programs </h4>', function () { return __awaiter(void 0, void 0, void 0, function () {
267
+ test("it should load programs for a job ".concat(utils_1.DependencyHeader.DeprecatedInclude), function () { return __awaiter(void 0, void 0, void 0, function () {
262
268
  var dependencies;
263
269
  return __generator(this, function (_a) {
264
270
  switch (_a.label) {
265
271
  case 0:
266
272
  (0, getInitTerm_1.mockGetProgram)(internalModule, fakeJobInit, fakeTerm);
267
- return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job)];
273
+ return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job, compileTree)];
268
274
  case 1:
269
275
  dependencies = _a.sent();
270
276
  expect(dependencies).toStartWith(compiledVars('Job'));
@@ -278,13 +284,13 @@ describe('loadDependencies', function () {
278
284
  }
279
285
  });
280
286
  }); });
281
- test('it should load programs for a service with <h4> SAS Includes </h4>', function () { return __awaiter(void 0, void 0, void 0, function () {
287
+ test("it should load programs for a service with ".concat(utils_1.DependencyHeader.Include), function () { return __awaiter(void 0, void 0, void 0, function () {
282
288
  var dependencies;
283
289
  return __generator(this, function (_a) {
284
290
  switch (_a.label) {
285
291
  case 0:
286
292
  (0, getInitTerm_1.mockGetProgram)(internalModule, fakeJobInit2, fakeTerm2);
287
- return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service)];
293
+ return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service, compileTree)];
288
294
  case 1:
289
295
  dependencies = _a.sent();
290
296
  expect(dependencies).toStartWith(compiledVars('Service'));
@@ -298,13 +304,13 @@ describe('loadDependencies', function () {
298
304
  }
299
305
  });
300
306
  }); });
301
- test('it should load programs for a job <h4> SAS Includes </h4>', function () { return __awaiter(void 0, void 0, void 0, function () {
307
+ test("it should load programs for a job ".concat(utils_1.DependencyHeader.Include), function () { return __awaiter(void 0, void 0, void 0, function () {
302
308
  var dependencies;
303
309
  return __generator(this, function (_a) {
304
310
  switch (_a.label) {
305
311
  case 0:
306
312
  (0, getInitTerm_1.mockGetProgram)(internalModule, fakeJobInit2, fakeTerm2);
307
- return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job)];
313
+ return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job, compileTree)];
308
314
  case 1:
309
315
  dependencies = _a.sent();
310
316
  expect(dependencies).toStartWith(compiledVars('Job'));
@@ -318,13 +324,13 @@ describe('loadDependencies', function () {
318
324
  }
319
325
  });
320
326
  }); });
321
- test("it should load dependencies for a job having jobInit's <h4> SAS Programs </h4>", function () { return __awaiter(void 0, void 0, void 0, function () {
327
+ test("it should load dependencies for a job having jobInit's ".concat(utils_1.DependencyHeader.DeprecatedInclude), function () { return __awaiter(void 0, void 0, void 0, function () {
322
328
  var dependencies;
323
329
  return __generator(this, function (_a) {
324
330
  switch (_a.label) {
325
331
  case 0:
326
332
  (0, getInitTerm_1.mockGetProgram)(internalModule, fakeJobInit, fakeTerm2);
327
- return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job)];
333
+ return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job, compileTree)];
328
334
  case 1:
329
335
  dependencies = _a.sent();
330
336
  expect(dependencies).toStartWith(compiledVars('Job'));
@@ -341,13 +347,13 @@ describe('loadDependencies', function () {
341
347
  }
342
348
  });
343
349
  }); });
344
- test("it should load dependencies for a job having jobTerm's <h4> SAS Programs </h4>", function () { return __awaiter(void 0, void 0, void 0, function () {
350
+ test("it should load dependencies for a job having jobTerm's ".concat(utils_1.DependencyHeader.DeprecatedInclude), function () { return __awaiter(void 0, void 0, void 0, function () {
345
351
  var dependencies;
346
352
  return __generator(this, function (_a) {
347
353
  switch (_a.label) {
348
354
  case 0:
349
355
  (0, getInitTerm_1.mockGetProgram)(internalModule, fakeInit2, fakeJobInit);
350
- return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job)];
356
+ return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.job, compileTree)];
351
357
  case 1:
352
358
  dependencies = _a.sent();
353
359
  expect(dependencies).toStartWith(compiledVars('Job'));
@@ -363,13 +369,13 @@ describe('loadDependencies', function () {
363
369
  }
364
370
  });
365
371
  }); });
366
- test("it should load dependencies for a service having serviceInit's <h4> SAS Programs </h4>", function () { return __awaiter(void 0, void 0, void 0, function () {
372
+ test("it should load dependencies for a service having serviceInit's ".concat(utils_1.DependencyHeader.DeprecatedInclude), function () { return __awaiter(void 0, void 0, void 0, function () {
367
373
  var dependencies;
368
374
  return __generator(this, function (_a) {
369
375
  switch (_a.label) {
370
376
  case 0:
371
377
  (0, getInitTerm_1.mockGetProgram)(internalModule, fakeJobInit, fakeTerm2);
372
- return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service)];
378
+ return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service, compileTree)];
373
379
  case 1:
374
380
  dependencies = _a.sent();
375
381
  expect(dependencies).toStartWith(compiledVars('Service'));
@@ -386,13 +392,13 @@ describe('loadDependencies', function () {
386
392
  }
387
393
  });
388
394
  }); });
389
- test("it should load dependencies for a service having serviceTerm's <h4> SAS Programs </h4>", function () { return __awaiter(void 0, void 0, void 0, function () {
395
+ test("it should load dependencies for a service having serviceTerm's ".concat(utils_1.DependencyHeader.DeprecatedInclude), function () { return __awaiter(void 0, void 0, void 0, function () {
390
396
  var dependencies;
391
397
  return __generator(this, function (_a) {
392
398
  switch (_a.label) {
393
399
  case 0:
394
400
  (0, getInitTerm_1.mockGetProgram)(internalModule, fakeInit2, fakeJobInit);
395
- return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service)];
401
+ return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], utils_1.SASJsFileType.service, compileTree)];
396
402
  case 1:
397
403
  dependencies = _a.sent();
398
404
  expect(dependencies).toStartWith(compiledVars('Service'));
@@ -84,7 +84,6 @@ var utils_1 = require("@sasjs/utils");
84
84
  var getFoldersForDocs_1 = require("./internal/getFoldersForDocs");
85
85
  var createDotFiles_1 = require("./internal/createDotFiles");
86
86
  var getDocConfig_1 = require("./internal/getDocConfig");
87
- var utils_2 = require("../../utils");
88
87
  /**
89
88
  * Generates documentation(Doxygen)
90
89
  * By default the docs will be at 'sasjsbuild/docs' folder
@@ -188,16 +187,13 @@ function generateDocs(target, config, outDirectory) {
188
187
  exports.generateDocs = generateDocs;
189
188
  function setVariableCmd(params) {
190
189
  var command = '';
191
- var isWin = (0, utils_2.isWindows)();
192
- if (isWin) {
193
- for (var param in params) {
190
+ if ((0, utils_1.isWindows)()) {
191
+ for (var param in params)
194
192
  command += "set ".concat(param, "=").concat(params[param], " && ");
195
- }
196
193
  }
197
194
  else {
198
- for (var param in params) {
195
+ for (var param in params)
199
196
  command += "".concat(param, "='").concat(params[param], "' ");
200
- }
201
197
  }
202
198
  return command;
203
199
  }
@@ -9,7 +9,7 @@ var utils_1 = require("@sasjs/utils");
9
9
  * @param {Map} paramNodes- Map for params(Inputs/Outputs)
10
10
  */
11
11
  function getFileInputs(fileName, fileContent, paramNodes) {
12
- var fileInputs = (0, utils_1.getList)('<h4> Data Inputs </h4>', fileContent)
12
+ var fileInputs = (0, utils_1.getList)(utils_1.DependencyHeader.DataInput, fileContent)
13
13
  .map(function (input) { return input.toUpperCase(); })
14
14
  .filter(function (input) { return !input.endsWith('.DLL'); });
15
15
  fileInputs.forEach(function (inputParam) {
@@ -8,7 +8,7 @@ var utils_1 = require("@sasjs/utils");
8
8
  * @param {Map} paramNodes- Map for params(Inputs/Outputs)
9
9
  */
10
10
  function getFileOutputs(fileContent, paramNodes) {
11
- var fileOutputs = (0, utils_1.getList)('<h4> Data Outputs </h4>', fileContent)
11
+ var fileOutputs = (0, utils_1.getList)(utils_1.DependencyHeader.DataOutput, fileContent)
12
12
  .map(function (output) { return output.toUpperCase(); })
13
13
  .filter(function (output) { return !output.endsWith('.DLL'); });
14
14
  fileOutputs.forEach(function (outputParam) {
@@ -1 +1 @@
1
- export declare const sampleSasProgram = "/**\n @file mv_createfolder.sas\n @brief Creates a viya folder if that foloder does not already exist\n @details Expects oauth token in a global macro variable (default\n ACCESS_TOKEN).\n\n options mprint;\n %mv_createfolder(path=/Public)\n\n\n @param path= The full path of the folder to be created\n @param access_token_var= The global macro variable to contain the access token\n @param grant_type= valid values are \"password\" or \"authorization_code\" (unquoted).\n The default is authorization_code.\n\n\n @version VIYA V.03.04\n @author Allan Bowe\n @source https://github.com/sasjs/core\n\n <h4> SAS Macros </h4>\n @li mf_abort.sas\n @li mf_getuniquefileref.sas\n @li mf_getuniquelibref.sas\n @li mf_isblank.sas\n\n**/\n\n/* This is a comment\nthat spans\nmultiple lines */\n\n%macro mv_createfolder(path=\n ,access_token_var=ACCESS_TOKEN\n ,grant_type=authorization_code\n);";
1
+ export declare const sampleSasProgram: string;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sampleSasProgram = void 0;
4
4
  var utils_1 = require("../utils");
5
+ var utils_2 = require("@sasjs/utils");
5
6
  describe('removeComments', function () {
6
7
  test('should remove block comment', function () {
7
8
  var text = "/* test\n123\n456\n789 */";
@@ -43,4 +44,4 @@ describe('removeComments', function () {
43
44
  expect((0, utils_1.removeComments)(text)).toEqual(text);
44
45
  });
45
46
  });
46
- exports.sampleSasProgram = "/**\n @file mv_createfolder.sas\n @brief Creates a viya folder if that foloder does not already exist\n @details Expects oauth token in a global macro variable (default\n ACCESS_TOKEN).\n\n options mprint;\n %mv_createfolder(path=/Public)\n\n\n @param path= The full path of the folder to be created\n @param access_token_var= The global macro variable to contain the access token\n @param grant_type= valid values are \"password\" or \"authorization_code\" (unquoted).\n The default is authorization_code.\n\n\n @version VIYA V.03.04\n @author Allan Bowe\n @source https://github.com/sasjs/core\n\n <h4> SAS Macros </h4>\n @li mf_abort.sas\n @li mf_getuniquefileref.sas\n @li mf_getuniquelibref.sas\n @li mf_isblank.sas\n\n**/\n\n/* This is a comment\nthat spans\nmultiple lines */\n\n%macro mv_createfolder(path=\n ,access_token_var=ACCESS_TOKEN\n ,grant_type=authorization_code\n);";
47
+ exports.sampleSasProgram = "/**\n @file mv_createfolder.sas\n @brief Creates a viya folder if that foloder does not already exist\n @details Expects oauth token in a global macro variable (default\n ACCESS_TOKEN).\n\n options mprint;\n %mv_createfolder(path=/Public)\n\n\n @param path= The full path of the folder to be created\n @param access_token_var= The global macro variable to contain the access token\n @param grant_type= valid values are \"password\" or \"authorization_code\" (unquoted).\n The default is authorization_code.\n\n\n @version VIYA V.03.04\n @author Allan Bowe\n @source https://github.com/sasjs/core\n\n ".concat(utils_2.DependencyHeader.Macro, "\n @li mf_abort.sas\n @li mf_getuniquefileref.sas\n @li mf_getuniquelibref.sas\n @li mf_isblank.sas\n\n**/\n\n/* This is a comment\nthat spans\nmultiple lines */\n\n%macro mv_createfolder(path=\n ,access_token_var=ACCESS_TOKEN\n ,grant_type=authorization_code\n);");
@@ -34,5 +34,4 @@ export declare function getAdapterInstance(target: Target): SASjs;
34
34
  export declare function displaySasjsRunnerError(username: string): void;
35
35
  export declare const loadEnvVariables: (fileName: string) => Promise<void>;
36
36
  export declare function prefixAppLoc(appLoc?: string, path?: string): string | null;
37
- export declare const isWindows: () => boolean;
38
37
  export declare const terminateProcess: (status: number) => never;
@@ -86,7 +86,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
86
86
  return (mod && mod.__esModule) ? mod : { "default": mod };
87
87
  };
88
88
  Object.defineProperty(exports, "__esModule", { value: true });
89
- exports.terminateProcess = exports.isWindows = exports.prefixAppLoc = exports.loadEnvVariables = exports.displaySasjsRunnerError = exports.getAdapterInstance = exports.checkNodeVersion = exports.millisecondsToDdHhMmSs = exports.arrToObj = exports.parseLogLines = exports.executeShellScript = exports.getUniqServicesObj = exports.removeComments = exports.setupDoxygen = exports.setupGhooks = exports.setupGitIgnore = exports.setupNpmProject = exports.createTemplateApp = exports.createMinimalApp = exports.createAngularApp = exports.createReactApp = exports.diff = exports.inExistingProject = void 0;
89
+ exports.terminateProcess = exports.prefixAppLoc = exports.loadEnvVariables = exports.displaySasjsRunnerError = exports.getAdapterInstance = exports.checkNodeVersion = exports.millisecondsToDdHhMmSs = exports.arrToObj = exports.parseLogLines = exports.executeShellScript = exports.getUniqServicesObj = exports.removeComments = exports.setupDoxygen = exports.setupGhooks = exports.setupGitIgnore = exports.setupNpmProject = exports.createTemplateApp = exports.createMinimalApp = exports.createAngularApp = exports.createReactApp = exports.diff = exports.inExistingProject = void 0;
90
90
  var shelljs_1 = __importDefault(require("shelljs"));
91
91
  var path_1 = __importDefault(require("path"));
92
92
  var ora_1 = __importDefault(require("ora"));
@@ -414,7 +414,7 @@ function executeShellScript(filePath, logFilePath) {
414
414
  return __generator(this, function (_b) {
415
415
  switch (_b.label) {
416
416
  case 0:
417
- shellCommand = (0, exports.isWindows)() ? "sh ".concat(filePath) : "bash ".concat(filePath);
417
+ shellCommand = (0, utils_1.isWindows)() ? "sh ".concat(filePath) : "bash ".concat(filePath);
418
418
  result = shelljs_1.default.exec(shellCommand, { silent: true });
419
419
  if (!result.code) return [3 /*break*/, 1];
420
420
  (_a = process.logger) === null || _a === void 0 ? void 0 : _a.error("Error: ".concat(result.stderr));
@@ -555,8 +555,6 @@ function prefixAppLoc(appLoc, path) {
555
555
  .join(' ');
556
556
  }
557
557
  exports.prefixAppLoc = prefixAppLoc;
558
- var isWindows = function () { return process.platform === 'win32'; };
559
- exports.isWindows = isWindows;
560
558
  var terminateProcess = function (status) {
561
559
  var _a;
562
560
  (_a = process.logger) === null || _a === void 0 ? void 0 : _a.info("Process will be terminated with the status code ".concat(status, "."));
package/package.json CHANGED
@@ -50,7 +50,7 @@
50
50
  "@sasjs/adapter": "^3.7.14",
51
51
  "@sasjs/core": "4.15.3",
52
52
  "@sasjs/lint": "1.11.2",
53
- "@sasjs/utils": "2.36.0",
53
+ "@sasjs/utils": "2.38.1",
54
54
  "chalk": "4.1.2",
55
55
  "csv-stringify": "5.6.5",
56
56
  "dotenv": "10.0.0",
@@ -94,5 +94,5 @@
94
94
  "typescript": "4.5.4",
95
95
  "util": "0.12.4"
96
96
  },
97
- "version": "3.9.0"
97
+ "version": "3.10.0"
98
98
  }