@sasjs/cli 4.0.7 → 4.1.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.
Files changed (27) hide show
  1. package/build/commands/build/build.js +3 -3
  2. package/build/commands/compile/compile.js +26 -32
  3. package/build/commands/compile/compileCommand.js +4 -2
  4. package/build/commands/compile/compileSingleFile.d.ts +5 -0
  5. package/build/commands/compile/compileSingleFile.js +36 -25
  6. package/build/commands/compile/internal/checkCompileStatus.js +7 -9
  7. package/build/commands/compile/internal/compileFile.js +2 -2
  8. package/build/commands/compile/internal/compileTestFile.d.ts +1 -1
  9. package/build/commands/compile/internal/compileTestFile.js +16 -14
  10. package/build/commands/compile/internal/getAllFolders.d.ts +3 -2
  11. package/build/commands/compile/internal/getAllFolders.js +1 -0
  12. package/build/commands/compile/internal/identifySasFile.d.ts +2 -1
  13. package/build/commands/compile/internal/identifySasFile.js +20 -11
  14. package/build/commands/compile/internal/index.d.ts +9 -0
  15. package/build/commands/compile/internal/index.js +25 -0
  16. package/build/commands/compile/internal/spec/compileTestFile.spec.js +4 -4
  17. package/build/commands/compile/internal/spec/getAllFolders.spec.js +3 -3
  18. package/build/commands/compile/spec/compareFolders.spec.js +8 -8
  19. package/build/commands/compile/spec/compileFile.spec.js +5 -6
  20. package/build/commands/compile/spec/compileSingleFile.spec.d.ts +1 -0
  21. package/build/commands/compile/spec/compileSingleFile.spec.js +162 -0
  22. package/build/commands/compile/spec/loadDependencies.spec.js +13 -13
  23. package/build/commands/run/run.js +2 -2
  24. package/build/types/command/commandBase.js +1 -1
  25. package/package.json +1 -1
  26. package/build/commands/compile/internal/getServerType.d.ts +0 -9
  27. package/build/commands/compile/internal/getServerType.js +0 -60
@@ -95,7 +95,7 @@ var compressAndSave_1 = require("../../utils/compressAndSave");
95
95
  var config_1 = require("../../utils/config");
96
96
  var file_1 = require("../../utils/file");
97
97
  var compile_1 = require("../compile/compile");
98
- var loadDependencies_1 = require("../compile/internal/loadDependencies");
98
+ var internal_1 = require("../compile/internal");
99
99
  var config_2 = require("./internal/config");
100
100
  var getLaunchPageCode_1 = require("./internal/getLaunchPageCode");
101
101
  function build(target) {
@@ -550,7 +550,7 @@ var getDepsContent = function (deps, target, macroFolders) { return __awaiter(vo
550
550
  switch (_a.label) {
551
551
  case 0:
552
552
  dependenciesContent = '';
553
- compileTree = (0, loadDependencies_1.getCompileTree)(target);
553
+ compileTree = (0, internal_1.getCompileTree)(target);
554
554
  return [4 /*yield*/, (0, utils_1.asyncForEach)(deps, function (fp) { return __awaiter(void 0, void 0, void 0, function () {
555
555
  var _a, _b;
556
556
  return __generator(this, function (_c) {
@@ -558,7 +558,7 @@ var getDepsContent = function (deps, target, macroFolders) { return __awaiter(vo
558
558
  case 0:
559
559
  _a = dependenciesContent;
560
560
  _b = '\n';
561
- return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, fp, macroFolders, [], types_1.SASJsFileType.file, compileTree)];
561
+ return [4 /*yield*/, (0, internal_1.loadDependencies)(target, fp, macroFolders, [], types_1.SASJsFileType.file, compileTree)];
562
562
  case 1:
563
563
  dependenciesContent = _a + (_b +
564
564
  (_c.sent()));
@@ -82,13 +82,7 @@ var config_1 = require("../../utils/config");
82
82
  var file_1 = require("../../utils/file");
83
83
  var web_1 = require("../web/web");
84
84
  var compileModule = __importStar(require("./compile"));
85
- var checkCompileStatus_1 = require("./internal/checkCompileStatus");
86
- var compileFile_1 = require("./internal/compileFile");
87
- var getAllFolders_1 = require("./internal/getAllFolders");
88
- var compileTestFile_1 = require("./internal/compileTestFile");
89
- var copySyncFolder_1 = require("./internal/copySyncFolder");
90
- var getDestinationPath_1 = require("./internal/getDestinationPath");
91
- var loadDependencies_1 = require("./internal/loadDependencies");
85
+ var internal_1 = require("./internal");
92
86
  function compile(target, forceCompile) {
93
87
  var _a, _b;
94
88
  if (forceCompile === void 0) { forceCompile = false; }
@@ -97,7 +91,7 @@ function compile(target, forceCompile) {
97
91
  var _this = this;
98
92
  return __generator(this, function (_c) {
99
93
  switch (_c.label) {
100
- case 0: return [4 /*yield*/, (0, checkCompileStatus_1.checkCompileStatus)(target, ['tests'])
94
+ case 0: return [4 /*yield*/, (0, internal_1.checkCompileStatus)(target, ['tests'])
101
95
  // no need to compile again
102
96
  ];
103
97
  case 1:
@@ -115,7 +109,7 @@ function compile(target, forceCompile) {
115
109
  })];
116
110
  case 2:
117
111
  _c.sent();
118
- compileTree = (0, loadDependencies_1.getCompileTree)(target);
112
+ compileTree = (0, internal_1.getCompileTree)(target);
119
113
  return [4 /*yield*/, compileModule.compileJobsServicesTests(target, compileTree)];
120
114
  case 3:
121
115
  _c.sent();
@@ -128,7 +122,7 @@ function compile(target, forceCompile) {
128
122
  programFolders_1 = _c.sent();
129
123
  return [4 /*yield*/, (0, utils_1.asyncForEach)(macroFolders, function (macroFolder) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
130
124
  switch (_a.label) {
131
- case 0: return [4 /*yield*/, (0, compileTestFile_1.copyTestMacroFiles)(macroFolder)];
125
+ case 0: return [4 /*yield*/, (0, internal_1.copyTestMacroFiles)(macroFolder)];
132
126
  case 1: return [2 /*return*/, _a.sent()];
133
127
  }
134
128
  }); }); })];
@@ -145,7 +139,7 @@ function compile(target, forceCompile) {
145
139
  return [4 /*yield*/, (0, utils_1.asyncForEach)(macroTestFiles, function (macroTestFile) { return __awaiter(_this, void 0, void 0, function () {
146
140
  return __generator(this, function (_a) {
147
141
  switch (_a.label) {
148
- case 0: return [4 /*yield*/, (0, compileFile_1.compileFile)(target, path_1.default.join(buildMacroTestFolder_1, macroTestFile), macroFolders, programFolders_1, undefined, compileTree, types_1.SASJsFileType.service, '')];
142
+ case 0: return [4 /*yield*/, (0, internal_1.compileFile)(target, path_1.default.join(buildMacroTestFolder_1, macroTestFile), macroFolders, programFolders_1, undefined, compileTree, types_1.SASJsFileType.service, '')];
149
143
  case 1: return [2 /*return*/, _a.sent()];
150
144
  }
151
145
  });
@@ -156,7 +150,7 @@ function compile(target, forceCompile) {
156
150
  case 11: return [4 /*yield*/, compileTree.saveTree()];
157
151
  case 12:
158
152
  _c.sent();
159
- return [4 /*yield*/, (0, compileTestFile_1.compileTestFlow)(target).catch(function (err) { var _a; return (_a = process.logger) === null || _a === void 0 ? void 0 : _a.error('Test flow compilation has failed.'); })];
153
+ return [4 /*yield*/, (0, internal_1.compileTestFlow)(target).catch(function (err) { var _a; return (_a = process.logger) === null || _a === void 0 ? void 0 : _a.error('Test flow compilation has failed.'); })];
160
154
  case 13:
161
155
  _c.sent();
162
156
  return [4 /*yield*/, compileWeb(target)];
@@ -187,10 +181,10 @@ function copyFilesToBuildFolder(target) {
187
181
  _c.label = 2;
188
182
  case 2:
189
183
  _c.trys.push([2, 7, , 8]);
190
- return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Service)];
184
+ return [4 /*yield*/, (0, internal_1.getAllFolders)(target, internal_1.SasFileType.Service)];
191
185
  case 3:
192
186
  serviceFolders = _c.sent();
193
- return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Job)
187
+ return [4 /*yield*/, (0, internal_1.getAllFolders)(target, internal_1.SasFileType.Job)
194
188
  // REFACTOR
195
189
  ];
196
190
  case 4:
@@ -201,7 +195,7 @@ function copyFilesToBuildFolder(target) {
201
195
  return __generator(this, function (_a) {
202
196
  switch (_a.label) {
203
197
  case 0:
204
- destinationPath = (0, getDestinationPath_1.getDestinationServicePath)(serviceFolder);
198
+ destinationPath = (0, internal_1.getDestinationServicePath)(serviceFolder);
205
199
  return [4 /*yield*/, (0, utils_1.copy)(serviceFolder, destinationPath)];
206
200
  case 1:
207
201
  _a.sent();
@@ -217,7 +211,7 @@ function copyFilesToBuildFolder(target) {
217
211
  return __generator(this, function (_a) {
218
212
  switch (_a.label) {
219
213
  case 0:
220
- destinationPath = (0, getDestinationPath_1.getDestinationJobPath)(jobFolder);
214
+ destinationPath = (0, internal_1.getDestinationJobPath)(jobFolder);
221
215
  return [4 /*yield*/, (0, utils_1.copy)(jobFolder, destinationPath)];
222
216
  case 1:
223
217
  _a.sent();
@@ -246,10 +240,10 @@ function compileJobsServicesTests(target, compileTree) {
246
240
  switch (_a.label) {
247
241
  case 0:
248
242
  _a.trys.push([0, 13, , 14]);
249
- return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Service)];
243
+ return [4 /*yield*/, (0, internal_1.getAllFolders)(target, internal_1.SasFileType.Service)];
250
244
  case 1:
251
245
  serviceFolders = _a.sent();
252
- return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Job)];
246
+ return [4 /*yield*/, (0, internal_1.getAllFolders)(target, internal_1.SasFileType.Job)];
253
247
  case 2:
254
248
  jobFolders = _a.sent();
255
249
  return [4 /*yield*/, (0, config_1.getMacroFolders)(target)];
@@ -265,7 +259,7 @@ function compileJobsServicesTests(target, compileTree) {
265
259
  case 6:
266
260
  testTearDown = _a.sent();
267
261
  if (!testSetUp) return [3 /*break*/, 8];
268
- return [4 /*yield*/, (0, compileTestFile_1.compileTestFile)(target, testSetUp, '', true, false, compileTree).catch(function (err) {
262
+ return [4 /*yield*/, (0, internal_1.compileTestFile)(target, testSetUp, '', true, false, compileTree).catch(function (err) {
269
263
  throw (0, error_1.prefixMessage)(err, 'Test set up compilation has failed. ');
270
264
  })];
271
265
  case 7:
@@ -273,7 +267,7 @@ function compileJobsServicesTests(target, compileTree) {
273
267
  _a.label = 8;
274
268
  case 8:
275
269
  if (!testTearDown) return [3 /*break*/, 10];
276
- return [4 /*yield*/, (0, compileTestFile_1.compileTestFile)(target, testTearDown, '', true, false, compileTree).catch(function (err) {
270
+ return [4 /*yield*/, (0, internal_1.compileTestFile)(target, testTearDown, '', true, false, compileTree).catch(function (err) {
277
271
  throw (0, error_1.prefixMessage)(err, 'Test tear down compilation has failed. ');
278
272
  })];
279
273
  case 9:
@@ -344,7 +338,7 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
344
338
  return __generator(this, function (_a) {
345
339
  switch (_a.label) {
346
340
  case 0:
347
- destinationPath = (0, getDestinationPath_1.getDestinationServicePath)(serviceFolder);
341
+ destinationPath = (0, internal_1.getDestinationServicePath)(serviceFolder);
348
342
  return [4 /*yield*/, (0, utils_1.listSubFoldersInFolder)(destinationPath)];
349
343
  case 1:
350
344
  subFolders = _a.sent();
@@ -379,11 +373,11 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
379
373
  case 0:
380
374
  filePath = path_1.default.join(destinationPath, fileName);
381
375
  if (!(0, utils_1.isTestFile)(filePath)) return [3 /*break*/, 2];
382
- return [4 /*yield*/, (0, compileTestFile_1.compileTestFile)(target, filePath, '', false, undefined, compileTree)];
376
+ return [4 /*yield*/, (0, internal_1.compileTestFile)(target, filePath, '', false, undefined, compileTree)];
383
377
  case 1:
384
378
  _a.sent();
385
379
  return [3 /*break*/, 4];
386
- case 2: return [4 /*yield*/, (0, compileFile_1.compileFile)(target, filePath, macroFolders, programFolders, undefined, compileTree, types_1.SASJsFileType.service, serviceFolder)];
380
+ case 2: return [4 /*yield*/, (0, internal_1.compileFile)(target, filePath, macroFolders, programFolders, undefined, compileTree, types_1.SASJsFileType.service, serviceFolder)];
387
381
  case 3:
388
382
  _a.sent();
389
383
  _a.label = 4;
@@ -409,11 +403,11 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
409
403
  case 0:
410
404
  filePath = path_1.default.join(destinationPath, subFolder, fileName);
411
405
  if (!(0, utils_1.isTestFile)(filePath)) return [3 /*break*/, 2];
412
- return [4 /*yield*/, (0, compileTestFile_1.compileTestFile)(target, filePath, '', false, undefined, compileTree)];
406
+ return [4 /*yield*/, (0, internal_1.compileTestFile)(target, filePath, '', false, undefined, compileTree)];
413
407
  case 1:
414
408
  _a.sent();
415
409
  return [3 /*break*/, 4];
416
- case 2: return [4 /*yield*/, (0, compileFile_1.compileFile)(target, filePath, macroFolders, programFolders, undefined, compileTree, types_1.SASJsFileType.service, sourceFolder)];
410
+ case 2: return [4 /*yield*/, (0, internal_1.compileFile)(target, filePath, macroFolders, programFolders, undefined, compileTree, types_1.SASJsFileType.service, sourceFolder)];
417
411
  case 3:
418
412
  _a.sent();
419
413
  _a.label = 4;
@@ -439,7 +433,7 @@ var compileJobFolder = function (target, jobFolder, macroFolders, programFolders
439
433
  return __generator(this, function (_a) {
440
434
  switch (_a.label) {
441
435
  case 0:
442
- destinationPath = (0, getDestinationPath_1.getDestinationJobPath)(jobFolder);
436
+ destinationPath = (0, internal_1.getDestinationJobPath)(jobFolder);
443
437
  return [4 /*yield*/, (0, utils_1.listSubFoldersInFolder)(destinationPath)];
444
438
  case 1:
445
439
  subFolders = _a.sent();
@@ -474,11 +468,11 @@ var compileJobFolder = function (target, jobFolder, macroFolders, programFolders
474
468
  case 0:
475
469
  filePath = path_1.default.join(destinationPath, fileName);
476
470
  if (!(0, utils_1.isTestFile)(fileName)) return [3 /*break*/, 2];
477
- return [4 /*yield*/, (0, compileTestFile_1.compileTestFile)(target, filePath, '', false, undefined, compileTree)];
471
+ return [4 /*yield*/, (0, internal_1.compileTestFile)(target, filePath, '', false, undefined, compileTree)];
478
472
  case 1:
479
473
  _a.sent();
480
474
  return [3 /*break*/, 4];
481
- case 2: return [4 /*yield*/, (0, compileFile_1.compileFile)(target, filePath, macroFolders, programFolders, undefined, compileTree, types_1.SASJsFileType.job, jobFolder)];
475
+ case 2: return [4 /*yield*/, (0, internal_1.compileFile)(target, filePath, macroFolders, programFolders, undefined, compileTree, types_1.SASJsFileType.job, jobFolder)];
482
476
  case 3:
483
477
  _a.sent();
484
478
  _a.label = 4;
@@ -504,11 +498,11 @@ var compileJobFolder = function (target, jobFolder, macroFolders, programFolders
504
498
  case 0:
505
499
  filePath = path_1.default.join(destinationPath, subFolder, fileName);
506
500
  if (!(0, utils_1.isTestFile)(filePath)) return [3 /*break*/, 2];
507
- return [4 /*yield*/, (0, compileTestFile_1.compileTestFile)(target, filePath, '', false, undefined, compileTree)];
501
+ return [4 /*yield*/, (0, internal_1.compileTestFile)(target, filePath, '', false, undefined, compileTree)];
508
502
  case 1:
509
503
  _a.sent();
510
504
  return [3 /*break*/, 4];
511
- case 2: return [4 /*yield*/, (0, compileFile_1.compileFile)(target, filePath, macroFolders, programFolders, undefined, compileTree, types_1.SASJsFileType.job, sourcePath)];
505
+ case 2: return [4 /*yield*/, (0, internal_1.compileFile)(target, filePath, macroFolders, programFolders, undefined, compileTree, types_1.SASJsFileType.job, sourcePath)];
512
506
  case 3:
513
507
  _a.sent();
514
508
  _a.label = 4;
@@ -561,13 +555,13 @@ var syncFolder = function (target) { return __awaiter(void 0, void 0, void 0, fu
561
555
  case 0:
562
556
  configuration = process.sasjsConfig;
563
557
  if (!configuration.syncFolder) return [3 /*break*/, 2];
564
- return [4 /*yield*/, (0, copySyncFolder_1.copySyncFolder)(configuration.syncFolder)];
558
+ return [4 /*yield*/, (0, internal_1.copySyncFolder)(configuration.syncFolder)];
565
559
  case 1:
566
560
  _a.sent();
567
561
  _a.label = 2;
568
562
  case 2:
569
563
  if (!target.syncFolder) return [3 /*break*/, 4];
570
- return [4 /*yield*/, (0, copySyncFolder_1.copySyncFolder)(target.syncFolder)];
564
+ return [4 /*yield*/, (0, internal_1.copySyncFolder)(target.syncFolder)];
571
565
  case 3:
572
566
  _a.sent();
573
567
  _a.label = 4;
@@ -67,6 +67,7 @@ var CompileSubCommand;
67
67
  (function (CompileSubCommand) {
68
68
  CompileSubCommand["Job"] = "job";
69
69
  CompileSubCommand["Service"] = "service";
70
+ CompileSubCommand["Test"] = "test";
70
71
  CompileSubCommand["Identify"] = "identify";
71
72
  })(CompileSubCommand || (CompileSubCommand = {}));
72
73
  var syntax = 'compile [subCommand]';
@@ -94,8 +95,9 @@ var CompileCommand = /** @class */ (function (_super) {
94
95
  var subCommand = args[3];
95
96
  if ([
96
97
  CompileSubCommand.Job,
97
- CompileSubCommand.Identify,
98
- CompileSubCommand.Service
98
+ CompileSubCommand.Service,
99
+ CompileSubCommand.Test,
100
+ CompileSubCommand.Identify
99
101
  ].includes(subCommand)) {
100
102
  parseOptions = subCommandParseOptions;
101
103
  }
@@ -1,4 +1,9 @@
1
1
  import { Target } from '@sasjs/utils';
2
+ export declare enum CompileSingleFileSubCommands {
3
+ Job = "job",
4
+ Service = "service",
5
+ Test = "test"
6
+ }
2
7
  export declare function compileSingleFile(target: Target, subCommand: string | undefined, source: string, output: string, insertProgramVar?: boolean, currentFolder?: string): Promise<{
3
8
  destinationPath: string;
4
9
  }>;
@@ -39,28 +39,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.compileSingleFile = void 0;
42
+ exports.compileSingleFile = exports.CompileSingleFileSubCommands = void 0;
43
43
  var path_1 = __importDefault(require("path"));
44
44
  var config_1 = require("../../utils/config");
45
45
  var utils_1 = require("@sasjs/utils");
46
- var compileFile_1 = require("./internal/compileFile");
47
- var identifySasFile_1 = require("./internal/identifySasFile");
48
- var loadDependencies_1 = require("./internal/loadDependencies");
46
+ var error_1 = require("@sasjs/utils/error");
47
+ var internal_1 = require("./internal");
48
+ var CompileSingleFileSubCommands;
49
+ (function (CompileSingleFileSubCommands) {
50
+ CompileSingleFileSubCommands["Job"] = "job";
51
+ CompileSingleFileSubCommands["Service"] = "service";
52
+ CompileSingleFileSubCommands["Test"] = "test";
53
+ })(CompileSingleFileSubCommands = exports.CompileSingleFileSubCommands || (exports.CompileSingleFileSubCommands = {}));
54
+ var isCompileSingleFileSubCommands = function (command) {
55
+ return Object.values(CompileSingleFileSubCommands).includes(command);
56
+ };
49
57
  function compileSingleFile(target, subCommand, source, output, insertProgramVar, currentFolder) {
50
58
  var _a;
51
59
  if (subCommand === void 0) { subCommand = 'identify'; }
52
60
  if (insertProgramVar === void 0) { insertProgramVar = false; }
53
61
  return __awaiter(this, void 0, void 0, function () {
54
- var subCommands, commandExample, sourcePath, outputPathParts, leafFolderName, parentOutputFolder, pathExists, sourceFileName, destinationPath, sourceFileNameWithoutExt, macroFolders, programFolders, psMaxOption, programVar, compileTree, sourceFolder, _b;
62
+ var commandExample, sourcePath, outputPathParts, leafFolderName, parentOutputFolder, pathExists, sourceFileName, destinationPath, sourceFileNameWithoutExt, macroFolders, programFolders, psMaxOption, programVar, compileTree, sourceFolder, _b;
55
63
  return __generator(this, function (_c) {
56
64
  switch (_c.label) {
57
65
  case 0:
58
- subCommands = {
59
- job: 'job',
60
- service: 'service'
61
- };
62
- if (!subCommands.hasOwnProperty(subCommand) && subCommand !== 'identify') {
63
- throw new Error("Unsupported context command. Supported commands are:\n".concat(Object.keys(subCommands).join('\n')));
66
+ if (!isCompileSingleFileSubCommands(subCommand) &&
67
+ subCommand !== 'identify') {
68
+ throw new Error("Unsupported context command. Supported commands are:\n".concat(Object.values(CompileSingleFileSubCommands).join('\n')));
64
69
  }
65
70
  commandExample = 'sasjs compile <command> --source myjob.sas --target targetName -output /some/folder';
66
71
  if (!source) {
@@ -71,18 +76,20 @@ function compileSingleFile(target, subCommand, source, output, insertProgramVar,
71
76
  return [4 /*yield*/, validateSourcePath(sourcePath)];
72
77
  case 1:
73
78
  if (!(_c.sent())) {
74
- throw new Error("Provide a path to source file (eg '".concat(commandExample, "')"));
79
+ throw new Error("Provide a valid path to source file (eg '".concat(commandExample, "')"));
75
80
  }
76
81
  if (!(subCommand === 'identify')) return [3 /*break*/, 3];
77
- return [4 /*yield*/, (0, identifySasFile_1.identifySasFile)(target, sourcePath)];
82
+ return [4 /*yield*/, (0, internal_1.identifySasFile)(target, sourcePath).catch(function (err) {
83
+ throw (0, error_1.prefixMessage)(err, 'Single file compilation failed. ');
84
+ })];
78
85
  case 2:
79
86
  subCommand = _c.sent();
80
87
  _c.label = 3;
81
88
  case 3:
82
89
  (_a = process.logger) === null || _a === void 0 ? void 0 : _a.info("Compiling source file:\n- ".concat(sourcePath));
83
90
  outputPathParts = output.split(path_1.default.sep);
84
- leafFolderName = source.split(path_1.default.sep).pop();
85
91
  outputPathParts.pop(), outputPathParts.pop();
92
+ leafFolderName = source.split(path_1.default.sep).pop();
86
93
  parentOutputFolder = outputPathParts.join(path_1.default.sep);
87
94
  return [4 /*yield*/, (0, utils_1.fileExists)(parentOutputFolder)];
88
95
  case 4:
@@ -111,28 +118,32 @@ function compileSingleFile(target, subCommand, source, output, insertProgramVar,
111
118
  programVar = insertProgramVar
112
119
  ? "%let _program=".concat(target.appLoc, "/").concat(subCommand, "s/").concat(leafFolderName, "/").concat(sourceFileNameWithoutExt, ";\n").concat(psMaxOption)
113
120
  : "".concat(psMaxOption);
114
- compileTree = (0, loadDependencies_1.getCompileTree)(target);
121
+ compileTree = (0, internal_1.getCompileTree)(target);
115
122
  sourceFolder = sourcePath
116
123
  .split(path_1.default.sep)
117
124
  .slice(0, sourcePath.split(path_1.default.sep).length - 1)
118
125
  .join(path_1.default.sep);
119
126
  _b = subCommand;
120
127
  switch (_b) {
121
- case subCommands.service: return [3 /*break*/, 11];
122
- case subCommands.job: return [3 /*break*/, 13];
128
+ case CompileSingleFileSubCommands.Service: return [3 /*break*/, 11];
129
+ case CompileSingleFileSubCommands.Job: return [3 /*break*/, 13];
130
+ case CompileSingleFileSubCommands.Test: return [3 /*break*/, 15];
123
131
  }
124
- return [3 /*break*/, 15];
125
- case 11: return [4 /*yield*/, (0, compileFile_1.compileFile)(target, destinationPath, macroFolders, programFolders, programVar, compileTree, utils_1.SASJsFileType.service, sourceFolder)];
132
+ return [3 /*break*/, 17];
133
+ case 11: return [4 /*yield*/, (0, internal_1.compileFile)(target, destinationPath, macroFolders, programFolders, programVar, compileTree, utils_1.SASJsFileType.service, sourceFolder)];
126
134
  case 12:
127
135
  _c.sent();
128
- return [3 /*break*/, 16];
129
- case 13: return [4 /*yield*/, (0, compileFile_1.compileFile)(target, destinationPath, macroFolders, programFolders, programVar, compileTree, utils_1.SASJsFileType.job, sourceFolder)];
136
+ return [3 /*break*/, 17];
137
+ case 13: return [4 /*yield*/, (0, internal_1.compileFile)(target, destinationPath, macroFolders, programFolders, programVar, compileTree, utils_1.SASJsFileType.job, sourceFolder)];
130
138
  case 14:
131
139
  _c.sent();
132
- return [3 /*break*/, 16];
133
- case 15: return [3 /*break*/, 16];
134
- case 16: return [4 /*yield*/, compileTree.saveTree()];
135
- case 17:
140
+ return [3 /*break*/, 17];
141
+ case 15: return [4 /*yield*/, (0, internal_1.compileTestFile)(target, sourcePath, programVar, undefined, false, compileTree, destinationPath)];
142
+ case 16:
143
+ _c.sent();
144
+ return [3 /*break*/, 17];
145
+ case 17: return [4 /*yield*/, compileTree.saveTree()];
146
+ case 18:
136
147
  _c.sent();
137
148
  return [2 /*return*/, { destinationPath: destinationPath }];
138
149
  }
@@ -38,9 +38,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.checkCompileStatus = void 0;
40
40
  var utils_1 = require("@sasjs/utils");
41
- var compareFolders_1 = require("./compareFolders");
42
- var getAllFolders_1 = require("./getAllFolders");
43
- var getDestinationPath_1 = require("./getDestinationPath");
41
+ var _1 = require("./");
44
42
  function checkCompileStatus(target, exceptions) {
45
43
  return __awaiter(this, void 0, void 0, function () {
46
44
  var buildDestinationFolder, pathExists, _a, areServiceFoldersMatching, serviceReasons, _b, areJobFoldersMatching, jobReasons, compiled;
@@ -86,7 +84,7 @@ var checkServiceFolders = function (target, exceptions) { return __awaiter(void
86
84
  var serviceFolders, areServiceFoldersMatching, reasons;
87
85
  return __generator(this, function (_a) {
88
86
  switch (_a.label) {
89
- case 0: return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Service)];
87
+ case 0: return [4 /*yield*/, (0, _1.getAllFolders)(target, _1.SasFileType.Service)];
90
88
  case 1:
91
89
  serviceFolders = _a.sent();
92
90
  areServiceFoldersMatching = true;
@@ -96,8 +94,8 @@ var checkServiceFolders = function (target, exceptions) { return __awaiter(void
96
94
  return __generator(this, function (_b) {
97
95
  switch (_b.label) {
98
96
  case 0:
99
- destinationPath = (0, getDestinationPath_1.getDestinationServicePath)(serviceFolder);
100
- return [4 /*yield*/, (0, compareFolders_1.compareFolders)(serviceFolder, destinationPath, exceptions)];
97
+ destinationPath = (0, _1.getDestinationServicePath)(serviceFolder);
98
+ return [4 /*yield*/, (0, _1.compareFolders)(serviceFolder, destinationPath, exceptions)];
101
99
  case 1:
102
100
  _a = _b.sent(), equal = _a.equal, reason = _a.reason;
103
101
  areServiceFoldersMatching = areServiceFoldersMatching && equal;
@@ -125,7 +123,7 @@ var checkJobFolders = function (target, exceptions) { return __awaiter(void 0, v
125
123
  var jobFolders, areJobFoldersMatching, reasons;
126
124
  return __generator(this, function (_a) {
127
125
  switch (_a.label) {
128
- case 0: return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Job)];
126
+ case 0: return [4 /*yield*/, (0, _1.getAllFolders)(target, _1.SasFileType.Job)];
129
127
  case 1:
130
128
  jobFolders = _a.sent();
131
129
  areJobFoldersMatching = true;
@@ -135,8 +133,8 @@ var checkJobFolders = function (target, exceptions) { return __awaiter(void 0, v
135
133
  return __generator(this, function (_b) {
136
134
  switch (_b.label) {
137
135
  case 0:
138
- destinationPath = (0, getDestinationPath_1.getDestinationJobPath)(jobFolder);
139
- return [4 /*yield*/, (0, compareFolders_1.compareFolders)(jobFolder, destinationPath, exceptions)];
136
+ destinationPath = (0, _1.getDestinationJobPath)(jobFolder);
137
+ return [4 /*yield*/, (0, _1.compareFolders)(jobFolder, destinationPath, exceptions)];
140
138
  case 1:
141
139
  _a = _b.sent(), equal = _a.equal, reason = _a.reason;
142
140
  areJobFoldersMatching = areJobFoldersMatching && equal;
@@ -42,7 +42,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.compileFile = void 0;
43
43
  var utils_1 = require("@sasjs/utils");
44
44
  var types_1 = require("@sasjs/utils/types");
45
- var loadDependencies_1 = require("./loadDependencies");
45
+ var _1 = require("./");
46
46
  var path_1 = __importDefault(require("path"));
47
47
  /**
48
48
  * Compiles file dependencies.
@@ -61,7 +61,7 @@ function compileFile(target, filePath, macroFolders, programFolders, programVar,
61
61
  var dependencies;
62
62
  return __generator(this, function (_a) {
63
63
  switch (_a.label) {
64
- case 0: return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, sourceFolder
64
+ case 0: return [4 /*yield*/, (0, _1.loadDependencies)(target, sourceFolder
65
65
  ? path_1.default.join(sourceFolder, filePath.split(path_1.default.sep).pop())
66
66
  : filePath, macroFolders, programFolders, (0, utils_1.isTestFile)(filePath) ? types_1.SASJsFileType.test : fileType, compileTree)];
67
67
  case 1:
@@ -1,5 +1,5 @@
1
1
  import { CompileTree, Configuration, Target } from '@sasjs/utils';
2
2
  import { TestFlow } from '../../../types';
3
- export declare function compileTestFile(target: Target, filePath: string, testVar: string | undefined, saveToRoot: boolean | undefined, removeOriginalFile: boolean | undefined, compileTree: CompileTree): Promise<void>;
3
+ export declare function compileTestFile(target: Target, filePath: string, testVar: string | undefined, saveToRoot: boolean | undefined, removeOriginalFile: boolean | undefined, compileTree: CompileTree, destinationPath?: string): Promise<void>;
4
4
  export declare function copyTestMacroFiles(folderAbsolutePath: string): Promise<void>;
5
5
  export declare const compileTestFlow: (target: Target, config?: Configuration) => Promise<TestFlow | undefined>;
@@ -71,18 +71,18 @@ var path_1 = __importDefault(require("path"));
71
71
  var types_1 = require("../../../types");
72
72
  var config_1 = require("../../../utils/config");
73
73
  var file_1 = require("../../../utils/file");
74
- var loadDependencies_1 = require("./loadDependencies");
74
+ var _1 = require("./");
75
75
  var getFileName = function (filePath) { return path_1.default.parse(filePath).base; };
76
- function compileTestFile(target, filePath, testVar, saveToRoot, removeOriginalFile, compileTree) {
76
+ function compileTestFile(target, filePath, testVar, saveToRoot, removeOriginalFile, compileTree, destinationPath) {
77
77
  if (testVar === void 0) { testVar = ''; }
78
78
  if (saveToRoot === void 0) { saveToRoot = true; }
79
79
  if (removeOriginalFile === void 0) { removeOriginalFile = true; }
80
80
  return __awaiter(this, void 0, void 0, function () {
81
- var dependencies, _a, _b, _c, buildDestinationFolder, buildDestinationTestFolder, buildDestinationFolderName, destinationPath;
81
+ var dependencies, _a, _b, _c, buildDestinationFolder, buildDestinationTestFolder, buildDestinationFolderName;
82
82
  return __generator(this, function (_d) {
83
83
  switch (_d.label) {
84
84
  case 0:
85
- _a = loadDependencies_1.loadDependencies;
85
+ _a = _1.loadDependencies;
86
86
  _b = [target,
87
87
  (0, utils_1.getAbsolutePath)(filePath, process.projectDir)];
88
88
  return [4 /*yield*/, (0, config_1.getMacroFolders)(target)];
@@ -98,16 +98,18 @@ function compileTestFile(target, filePath, testVar, saveToRoot, removeOriginalFi
98
98
  buildDestinationFolderName = buildDestinationFolder
99
99
  .split(path_1.default.sep)
100
100
  .pop();
101
- destinationPath = path_1.default.join(buildDestinationTestFolder, saveToRoot
102
- ? filePath.split(path_1.default.sep).pop() || ''
103
- : filePath
104
- .split(path_1.default.sep)
105
- .reduce(function (acc, item, i, arr) {
106
- return acc.length
107
- ? __spreadArray(__spreadArray([], __read(acc), false), [item], false) : arr[i - 1] === buildDestinationFolderName
108
- ? __spreadArray(__spreadArray([], __read(acc), false), [item], false) : acc;
109
- }, [])
110
- .join(path_1.default.sep));
101
+ destinationPath =
102
+ destinationPath ||
103
+ path_1.default.join(buildDestinationTestFolder, saveToRoot
104
+ ? filePath.split(path_1.default.sep).pop() || ''
105
+ : filePath
106
+ .split(path_1.default.sep)
107
+ .reduce(function (acc, item, i, arr) {
108
+ return acc.length
109
+ ? __spreadArray(__spreadArray([], __read(acc), false), [item], false) : arr[i - 1] === buildDestinationFolderName
110
+ ? __spreadArray(__spreadArray([], __read(acc), false), [item], false) : acc;
111
+ }, [])
112
+ .join(path_1.default.sep));
111
113
  return [4 /*yield*/, (0, utils_1.createFile)(destinationPath, dependencies)];
112
114
  case 4:
113
115
  _d.sent();
@@ -1,6 +1,7 @@
1
1
  import { Configuration, Target } from '@sasjs/utils';
2
2
  export declare enum SasFileType {
3
3
  Service = "service",
4
- Job = "job"
4
+ Job = "job",
5
+ Test = "test"
5
6
  }
6
- export declare const getAllFolders: (target: Target, type: SasFileType, rootConfig?: Configuration) => Promise<string[]>;
7
+ export declare const getAllFolders: (target: Target, type: SasFileType.Service | SasFileType.Job, rootConfig?: Configuration) => Promise<string[]>;
@@ -67,6 +67,7 @@ var SasFileType;
67
67
  (function (SasFileType) {
68
68
  SasFileType["Service"] = "service";
69
69
  SasFileType["Job"] = "job";
70
+ SasFileType["Test"] = "test";
70
71
  })(SasFileType = exports.SasFileType || (exports.SasFileType = {}));
71
72
  var getAllFolders = function (target, type, rootConfig) { return __awaiter(void 0, void 0, void 0, function () {
72
73
  var configuration, allFolders, config, folders, addFolders, buildSourceFolder;
@@ -1,2 +1,3 @@
1
1
  import { Target } from '@sasjs/utils';
2
- export declare const identifySasFile: (target: Target, sourcePath: string) => Promise<'job' | 'service'>;
2
+ import { SasFileType } from './';
3
+ export declare const identifySasFile: (target: Target, sourcePath: string) => Promise<SasFileType>;
@@ -35,26 +35,35 @@ 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
42
  exports.identifySasFile = void 0;
40
- var getAllFolders_1 = require("./getAllFolders");
43
+ var utils_1 = require("@sasjs/utils");
44
+ var _1 = require("./");
45
+ var path_1 = __importDefault(require("path"));
41
46
  var identifySasFile = function (target, sourcePath) { return __awaiter(void 0, void 0, void 0, function () {
42
- var serviceFolders, isService, jobFolders, isJob;
47
+ var serviceFolders, jobFolders;
43
48
  return __generator(this, function (_a) {
44
49
  switch (_a.label) {
45
- case 0: return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Service)];
50
+ case 0:
51
+ if ((0, utils_1.isTestFile)(sourcePath.split(path_1.default.sep).pop())) {
52
+ return [2 /*return*/, _1.SasFileType.Test];
53
+ }
54
+ return [4 /*yield*/, (0, _1.getAllFolders)(target, _1.SasFileType.Service)];
46
55
  case 1:
47
56
  serviceFolders = _a.sent();
48
- isService = serviceFolders.find(function (folder) { return sourcePath.includes(folder); });
49
- if (isService)
50
- return [2 /*return*/, 'service'];
51
- return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Job)];
57
+ if (serviceFolders.find(function (folder) { return sourcePath.includes(folder); })) {
58
+ return [2 /*return*/, _1.SasFileType.Service];
59
+ }
60
+ return [4 /*yield*/, (0, _1.getAllFolders)(target, _1.SasFileType.Job)];
52
61
  case 2:
53
62
  jobFolders = _a.sent();
54
- isJob = jobFolders.find(function (folder) { return sourcePath.includes(folder); });
55
- if (isJob)
56
- return [2 /*return*/, 'job'];
57
- throw 'Unable to identify file as Service or Job';
63
+ if (jobFolders.find(function (folder) { return sourcePath.includes(folder); })) {
64
+ return [2 /*return*/, _1.SasFileType.Job];
65
+ }
66
+ throw "Unable to identify file as ".concat(_1.SasFileType.Service, ", ").concat(_1.SasFileType.Job, " or ").concat(_1.SasFileType.Test);
58
67
  }
59
68
  });
60
69
  }); };
@@ -0,0 +1,9 @@
1
+ export * from './checkCompileStatus';
2
+ export * from './compareFolders';
3
+ export * from './compileFile';
4
+ export * from './compileTestFile';
5
+ export * from './copySyncFolder';
6
+ export * from './getAllFolders';
7
+ export * from './getDestinationPath';
8
+ export * from './identifySasFile';
9
+ export * from './loadDependencies';
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./checkCompileStatus"), exports);
18
+ __exportStar(require("./compareFolders"), exports);
19
+ __exportStar(require("./compileFile"), exports);
20
+ __exportStar(require("./compileTestFile"), exports);
21
+ __exportStar(require("./copySyncFolder"), exports);
22
+ __exportStar(require("./getAllFolders"), exports);
23
+ __exportStar(require("./getDestinationPath"), exports);
24
+ __exportStar(require("./identifySasFile"), exports);
25
+ __exportStar(require("./loadDependencies"), exports);
@@ -50,7 +50,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
50
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
51
51
  };
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
- var compileTestFile_1 = require("../compileTestFile");
53
+ var __1 = require("../");
54
54
  var utils_1 = require("@sasjs/utils");
55
55
  var test_1 = require("../../../../utils/test");
56
56
  var path_1 = __importDefault(require("path"));
@@ -171,7 +171,7 @@ describe('compileTestFile', function () {
171
171
  return [4 /*yield*/, (0, compile_1.compile)(target)];
172
172
  case 1:
173
173
  _d.sent();
174
- return [4 /*yield*/, (0, compileTestFile_1.compileTestFlow)(target)];
174
+ return [4 /*yield*/, (0, __1.compileTestFlow)(target)];
175
175
  case 2:
176
176
  _d.sent();
177
177
  testFlowPath = path_1.default.join(buildPath, 'testFlow.json');
@@ -304,9 +304,9 @@ describe('compileTestFile', function () {
304
304
  };
305
305
  expectedWarn = "'testFolders' is not supported 'testConfig' entry, please use 'serviceFolders' entry in 'serviceConfig' or 'jobFolders' entry in 'jobConfig'.";
306
306
  jest.spyOn(process.logger, 'warn');
307
- (0, compileTestFile_1.compileTestFlow)(testTarget);
307
+ (0, __1.compileTestFlow)(testTarget);
308
308
  expect(process.logger.warn).toHaveBeenCalledWith(expectedWarn);
309
- (0, compileTestFile_1.compileTestFlow)(testTarget, testConfig);
309
+ (0, __1.compileTestFlow)(testTarget, testConfig);
310
310
  expect(process.logger.warn).toHaveBeenCalledWith(expectedWarn);
311
311
  return [2 /*return*/];
312
312
  });
@@ -98,7 +98,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
98
98
  return (mod && mod.__esModule) ? mod : { "default": mod };
99
99
  };
100
100
  Object.defineProperty(exports, "__esModule", { value: true });
101
- var getAllFolders_1 = require("../getAllFolders");
101
+ var __1 = require("../");
102
102
  var utils_1 = require("@sasjs/utils");
103
103
  var test_1 = require("../../../../utils/test");
104
104
  var configUtils = __importStar(require("../../../../utils/config"));
@@ -167,14 +167,14 @@ describe('getAllFolders', function () {
167
167
  });
168
168
  }); });
169
169
  buildSourceFolder = process.sasjsConstants.buildSourceFolder;
170
- return [4 /*yield*/, expect((0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Service, config)).resolves.toEqual(__spreadArray([], __read(new Set(Array.prototype.concat((_a = config.serviceConfig) === null || _a === void 0 ? void 0 : _a.serviceFolders.map(function (folder) {
170
+ return [4 /*yield*/, expect((0, __1.getAllFolders)(target, __1.SasFileType.Service, config)).resolves.toEqual(__spreadArray([], __read(new Set(Array.prototype.concat((_a = config.serviceConfig) === null || _a === void 0 ? void 0 : _a.serviceFolders.map(function (folder) {
171
171
  return path_1.default.join(buildSourceFolder, folder);
172
172
  }), (_b = target.serviceConfig) === null || _b === void 0 ? void 0 : _b.serviceFolders.map(function (folder) {
173
173
  return path_1.default.join(buildSourceFolder, folder);
174
174
  })))), false))];
175
175
  case 1:
176
176
  _e.sent();
177
- return [4 /*yield*/, expect((0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Job, config)).resolves.toEqual(__spreadArray([], __read(new Set(Array.prototype.concat((_c = config.jobConfig) === null || _c === void 0 ? void 0 : _c.jobFolders.map(function (folder) {
177
+ return [4 /*yield*/, expect((0, __1.getAllFolders)(target, __1.SasFileType.Job, config)).resolves.toEqual(__spreadArray([], __read(new Set(Array.prototype.concat((_c = config.jobConfig) === null || _c === void 0 ? void 0 : _c.jobFolders.map(function (folder) {
178
178
  return path_1.default.join(buildSourceFolder, folder);
179
179
  }), (_d = target.jobConfig) === null || _d === void 0 ? void 0 : _d.jobFolders.map(function (folder) {
180
180
  return path_1.default.join(buildSourceFolder, folder);
@@ -41,7 +41,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
42
  var path_1 = __importDefault(require("path"));
43
43
  var utils_1 = require("@sasjs/utils");
44
- var compareFolders_1 = require("../internal/compareFolders");
44
+ var internal_1 = require("../internal");
45
45
  describe('compareFolders', function () {
46
46
  var sourceFolderPath;
47
47
  var destinationFolderPath;
@@ -82,7 +82,7 @@ describe('compareFolders', function () {
82
82
  switch (_a.label) {
83
83
  case 0:
84
84
  nonExistentSourcePath = path_1.default.join(__dirname, 'nothing');
85
- return [4 /*yield*/, expect((0, compareFolders_1.compareFolders)(nonExistentSourcePath, destinationFolderPath)).rejects.toThrowError("Source path ".concat(nonExistentSourcePath, " does not exist. Please check the `serviceFolders` and `jobFolders` in your target configuration and try again."))];
85
+ return [4 /*yield*/, expect((0, internal_1.compareFolders)(nonExistentSourcePath, destinationFolderPath)).rejects.toThrowError("Source path ".concat(nonExistentSourcePath, " does not exist. Please check the `serviceFolders` and `jobFolders` in your target configuration and try again."))];
86
86
  case 1:
87
87
  _a.sent();
88
88
  return [2 /*return*/];
@@ -95,7 +95,7 @@ describe('compareFolders', function () {
95
95
  switch (_a.label) {
96
96
  case 0:
97
97
  nonExistentDestinationPath = path_1.default.join(__dirname, 'nothing');
98
- return [4 /*yield*/, (0, compareFolders_1.compareFolders)(sourceFolderPath, nonExistentDestinationPath)];
98
+ return [4 /*yield*/, (0, internal_1.compareFolders)(sourceFolderPath, nonExistentDestinationPath)];
99
99
  case 1:
100
100
  response = _a.sent();
101
101
  expect(response.equal).toBeFalse();
@@ -111,7 +111,7 @@ describe('compareFolders', function () {
111
111
  case 0: return [4 /*yield*/, (0, utils_1.createFolder)(path_1.default.join(sourceFolderPath, 'missing-subfolder'))];
112
112
  case 1:
113
113
  _a.sent();
114
- return [4 /*yield*/, (0, compareFolders_1.compareFolders)(sourceFolderPath, destinationFolderPath)];
114
+ return [4 /*yield*/, (0, internal_1.compareFolders)(sourceFolderPath, destinationFolderPath)];
115
115
  case 2:
116
116
  response = _a.sent();
117
117
  expect(response.equal).toBeFalse();
@@ -130,7 +130,7 @@ describe('compareFolders', function () {
130
130
  return [4 /*yield*/, (0, utils_1.createFolder)(path_1.default.join(sourceFolderPath, 'missing-subfolder-2'))];
131
131
  case 2:
132
132
  _a.sent();
133
- return [4 /*yield*/, (0, compareFolders_1.compareFolders)(sourceFolderPath, destinationFolderPath)];
133
+ return [4 /*yield*/, (0, internal_1.compareFolders)(sourceFolderPath, destinationFolderPath)];
134
134
  case 3:
135
135
  response = _a.sent();
136
136
  expect(response.equal).toBeFalse();
@@ -146,7 +146,7 @@ describe('compareFolders', function () {
146
146
  case 0: return [4 /*yield*/, (0, utils_1.createFile)(path_1.default.join(sourceFolderPath, 'test.sas'), "%put 'hello, world!'")];
147
147
  case 1:
148
148
  _a.sent();
149
- return [4 /*yield*/, (0, compareFolders_1.compareFolders)(sourceFolderPath, destinationFolderPath)];
149
+ return [4 /*yield*/, (0, internal_1.compareFolders)(sourceFolderPath, destinationFolderPath)];
150
150
  case 2:
151
151
  response = _a.sent();
152
152
  expect(response.equal).toBeFalse();
@@ -165,7 +165,7 @@ describe('compareFolders', function () {
165
165
  return [4 /*yield*/, (0, utils_1.createFile)(path_1.default.join(sourceFolderPath, 'test2.sas'), "%put 'hello, world!'")];
166
166
  case 2:
167
167
  _a.sent();
168
- return [4 /*yield*/, (0, compareFolders_1.compareFolders)(sourceFolderPath, destinationFolderPath)];
168
+ return [4 /*yield*/, (0, internal_1.compareFolders)(sourceFolderPath, destinationFolderPath)];
169
169
  case 3:
170
170
  response = _a.sent();
171
171
  expect(response.equal).toBeFalse();
@@ -184,7 +184,7 @@ describe('compareFolders', function () {
184
184
  return [4 /*yield*/, (0, utils_1.createFile)(path_1.default.join(destinationFolderPath, 'test1.sas'), "%put 'hello, world!'")];
185
185
  case 2:
186
186
  _a.sent();
187
- return [4 /*yield*/, (0, compareFolders_1.compareFolders)(sourceFolderPath, destinationFolderPath)];
187
+ return [4 /*yield*/, (0, internal_1.compareFolders)(sourceFolderPath, destinationFolderPath)];
188
188
  case 3:
189
189
  response = _a.sent();
190
190
  expect(response.equal).toBeTrue();
@@ -67,9 +67,8 @@ var utils_1 = require("@sasjs/utils");
67
67
  var internalModule = __importStar(require("@sasjs/utils/sasjsCli/getInitTerm"));
68
68
  var getInitTerm_1 = require("@sasjs/utils/sasjsCli/getInitTerm");
69
69
  var test_1 = require("../../../utils/test");
70
- var compileFile_1 = require("../internal/compileFile");
70
+ var internal_1 = require("../internal");
71
71
  var utils_2 = require("@sasjs/utils");
72
- var loadDependencies_1 = require("../internal/loadDependencies");
73
72
  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;");
74
73
  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!;");
75
74
  var fakeProgramLines = [
@@ -118,14 +117,14 @@ describe('compileFile', function () {
118
117
  filePath = path_1.default.join(__dirname, './service.sas');
119
118
  buildPath = path_1.default.join(process.projectDir, 'sasjsbuild');
120
119
  destinationPath = path_1.default.join(buildPath, 'service.sas');
121
- compileTree = (0, loadDependencies_1.getCompileTree)(target);
120
+ compileTree = (0, internal_1.getCompileTree)(target);
122
121
  return [4 /*yield*/, (0, utils_2.createFolder)(buildPath)];
123
122
  case 1:
124
123
  _a.sent();
125
124
  return [4 /*yield*/, (0, utils_2.copy)(filePath, destinationPath)];
126
125
  case 2:
127
126
  _a.sent();
128
- return [4 /*yield*/, expect((0, compileFile_1.compileFile)(target, destinationPath, [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], undefined, compileTree, utils_1.SASJsFileType.service, __dirname)).toResolve()];
127
+ return [4 /*yield*/, expect((0, internal_1.compileFile)(target, destinationPath, [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], undefined, compileTree, utils_1.SASJsFileType.service, __dirname)).toResolve()];
129
128
  case 3:
130
129
  _a.sent();
131
130
  return [4 /*yield*/, expect((0, utils_2.fileExists)(destinationPath)).resolves.toEqual(true)];
@@ -155,14 +154,14 @@ describe('compileFile', function () {
155
154
  filePath = path_1.default.join(__dirname, './service.sas');
156
155
  buildPath = path_1.default.join(process.projectDir, 'sasjsbuild');
157
156
  destinationPath = path_1.default.join(buildPath, 'service.sas');
158
- compileTree = (0, loadDependencies_1.getCompileTree)(target);
157
+ compileTree = (0, internal_1.getCompileTree)(target);
159
158
  return [4 /*yield*/, (0, utils_2.createFolder)(buildPath)];
160
159
  case 1:
161
160
  _a.sent();
162
161
  return [4 /*yield*/, (0, utils_2.copy)(filePath, destinationPath)];
163
162
  case 2:
164
163
  _a.sent();
165
- return [4 /*yield*/, expect((0, compileFile_1.compileFile)(target, destinationPath, [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], undefined, compileTree, utils_1.SASJsFileType.job, __dirname)).toResolve()];
164
+ return [4 /*yield*/, expect((0, internal_1.compileFile)(target, destinationPath, [path_1.default.join(__dirname, './macros')], [path_1.default.join(__dirname, './'), path_1.default.join(__dirname, './services')], undefined, compileTree, utils_1.SASJsFileType.job, __dirname)).toResolve()];
166
165
  case 3:
167
166
  _a.sent();
168
167
  return [4 /*yield*/, expect((0, utils_2.fileExists)(destinationPath)).resolves.toEqual(true)];
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __generator = (this && this.__generator) || function (thisArg, body) {
35
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
36
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
+ function verb(n) { return function (v) { return step([n, v]); }; }
38
+ function step(op) {
39
+ if (f) throw new TypeError("Generator is already executing.");
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
+ 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;
42
+ if (y = 0, t) op = [op[0] & 2, t.value];
43
+ switch (op[0]) {
44
+ case 0: case 1: t = op; break;
45
+ case 4: _.label++; return { value: op[1], done: false };
46
+ case 5: _.label++; y = op[1]; op = [0]; continue;
47
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
48
+ default:
49
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
50
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
51
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
52
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
53
+ if (t[2]) _.ops.pop();
54
+ _.trys.pop(); continue;
55
+ }
56
+ op = body.call(thisArg, _);
57
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
58
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
59
+ }
60
+ };
61
+ Object.defineProperty(exports, "__esModule", { value: true });
62
+ var compileSingleFile_1 = require("../compileSingleFile");
63
+ var identifySasFileModule = __importStar(require("../internal/identifySasFile"));
64
+ var fileModule = __importStar(require("@sasjs/utils/file"));
65
+ var configModule = __importStar(require("../../../utils/config"));
66
+ var loadDependenciesModule = __importStar(require("../internal/loadDependencies"));
67
+ var compileTestFileModule = __importStar(require("../internal/compileTestFile"));
68
+ var internal_1 = require("../internal");
69
+ describe('compileSingleFile', function () {
70
+ it('should throw an error provided not supported subcommand', function () { return __awaiter(void 0, void 0, void 0, function () {
71
+ var expectedError;
72
+ return __generator(this, function (_a) {
73
+ switch (_a.label) {
74
+ case 0:
75
+ expectedError = new Error("Unsupported context command. Supported commands are:\n".concat(Object.values(compileSingleFile_1.CompileSingleFileSubCommands).join('\n')));
76
+ return [4 /*yield*/, expect((0, compileSingleFile_1.compileSingleFile)({}, 'WRONG', 'testSource', 'testOutput')).rejects.toEqual(expectedError)];
77
+ case 1:
78
+ _a.sent();
79
+ return [2 /*return*/];
80
+ }
81
+ });
82
+ }); });
83
+ it('should throw an error source was not provided', function () { return __awaiter(void 0, void 0, void 0, function () {
84
+ var expectedError;
85
+ return __generator(this, function (_a) {
86
+ switch (_a.label) {
87
+ case 0:
88
+ expectedError = new Error("'--source' flag is missing (eg 'sasjs compile <command> --source myjob.sas --target targetName -output /some/folder')");
89
+ return [4 /*yield*/, expect((0, compileSingleFile_1.compileSingleFile)({}, compileSingleFile_1.CompileSingleFileSubCommands.Test, '', 'testOutput')).rejects.toEqual(expectedError)];
90
+ case 1:
91
+ _a.sent();
92
+ return [2 /*return*/];
93
+ }
94
+ });
95
+ }); });
96
+ it('should throw an error provided source path is not valid', function () { return __awaiter(void 0, void 0, void 0, function () {
97
+ var expectedError;
98
+ return __generator(this, function (_a) {
99
+ switch (_a.label) {
100
+ case 0:
101
+ expectedError = new Error("Provide a valid path to source file (eg 'sasjs compile <command> --source myjob.sas --target targetName -output /some/folder')");
102
+ return [4 /*yield*/, expect((0, compileSingleFile_1.compileSingleFile)({}, compileSingleFile_1.CompileSingleFileSubCommands.Test, 'not valid', 'testOutput', false, 'testCurrentDir')).rejects.toEqual(expectedError)];
103
+ case 1:
104
+ _a.sent();
105
+ return [2 /*return*/];
106
+ }
107
+ });
108
+ }); });
109
+ it("should identify sas file if a sub command is 'identify'", function () { return __awaiter(void 0, void 0, void 0, function () {
110
+ var testFile;
111
+ return __generator(this, function (_a) {
112
+ switch (_a.label) {
113
+ case 0:
114
+ testFile = 'testSource.test.sas';
115
+ jest
116
+ .spyOn(fileModule, 'fileExists')
117
+ .mockImplementation(function (filePath) {
118
+ return Promise.resolve(filePath.includes(testFile));
119
+ });
120
+ jest.spyOn(fileModule, 'copy').mockImplementation(function () { return Promise.resolve(); });
121
+ jest
122
+ .spyOn(configModule, 'getMacroFolders')
123
+ .mockImplementation(function () { return Promise.resolve([]); });
124
+ jest
125
+ .spyOn(configModule, 'getProgramFolders')
126
+ .mockImplementation(function () { return Promise.resolve([]); });
127
+ jest
128
+ .spyOn(loadDependenciesModule, 'getCompileTree')
129
+ .mockImplementation(function () { return ({ saveTree: function () { return Promise.resolve(); } }); });
130
+ jest
131
+ .spyOn(compileTestFileModule, 'compileTestFile')
132
+ .mockImplementation(function () { return Promise.resolve(); });
133
+ jest.spyOn(identifySasFileModule, 'identifySasFile');
134
+ return [4 /*yield*/, (0, compileSingleFile_1.compileSingleFile)({}, 'identify', testFile, 'testOutput', false, 'testCurrentDir')];
135
+ case 1:
136
+ _a.sent();
137
+ expect(identifySasFileModule.identifySasFile).toHaveBeenCalledTimes(1);
138
+ return [2 /*return*/];
139
+ }
140
+ });
141
+ }); });
142
+ it("should throw an error if a sas file was not identified", function () { return __awaiter(void 0, void 0, void 0, function () {
143
+ var identificationError, expectedError;
144
+ return __generator(this, function (_a) {
145
+ switch (_a.label) {
146
+ case 0:
147
+ identificationError = "Unable to identify file as ".concat(internal_1.SasFileType.Service, ", ").concat(internal_1.SasFileType.Job, " or ").concat(internal_1.SasFileType.Test);
148
+ jest
149
+ .spyOn(fileModule, 'fileExists')
150
+ .mockImplementation(function () { return Promise.resolve(true); });
151
+ jest
152
+ .spyOn(identifySasFileModule, 'identifySasFile')
153
+ .mockImplementation(function () { return Promise.reject(identificationError); });
154
+ expectedError = "Single file compilation failed. ".concat(identificationError);
155
+ return [4 /*yield*/, expect((0, compileSingleFile_1.compileSingleFile)({}, 'identify', 'testSource.sas', 'testOutput', false, 'testCurrentDir')).rejects.toEqual(expectedError)];
156
+ case 1:
157
+ _a.sent();
158
+ return [2 /*return*/];
159
+ }
160
+ });
161
+ }); });
162
+ });
@@ -79,8 +79,8 @@ var internalModule = __importStar(require("@sasjs/utils/sasjsCli/getInitTerm"));
79
79
  var getInitTerm_1 = require("@sasjs/utils/sasjsCli/getInitTerm");
80
80
  var test_1 = require("../../../utils/test");
81
81
  var utils_2 = require("../../../utils");
82
+ var internal_1 = require("../internal");
82
83
  var loadDependencies_1 = require("../internal/loadDependencies");
83
- var getAllFolders_1 = require("../internal/getAllFolders");
84
84
  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!!;");
85
85
  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!;");
86
86
  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!!;");
@@ -183,7 +183,7 @@ describe('loadDependencies', function () {
183
183
  return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.service, compileTree)];
184
184
  case 1:
185
185
  dependencies = _a.sent();
186
- expect(dependencies).toContain(compiledVars(getAllFolders_1.SasFileType.Service));
186
+ expect(dependencies).toContain(compiledVars(internal_1.SasFileType.Service));
187
187
  expect(/\* ServiceInit start;/.test(dependencies)).toEqual(true);
188
188
  expect(/\* ServiceInit end;/.test(dependencies)).toEqual(true);
189
189
  expect(/\* ServiceTerm start;/.test(dependencies)).toEqual(true);
@@ -203,7 +203,7 @@ describe('loadDependencies', function () {
203
203
  return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.job, compileTree)];
204
204
  case 1:
205
205
  dependencies = _a.sent();
206
- expect(dependencies).toContain(compiledVars(getAllFolders_1.SasFileType.Job));
206
+ expect(dependencies).toContain(compiledVars(internal_1.SasFileType.Job));
207
207
  expect(/\* JobInit start;/.test(dependencies)).toEqual(true);
208
208
  expect(/\* JobInit end;/.test(dependencies)).toEqual(true);
209
209
  expect(/\* JobTerm start;/.test(dependencies)).toEqual(true);
@@ -223,7 +223,7 @@ describe('loadDependencies', function () {
223
223
  return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.service, compileTree)];
224
224
  case 1:
225
225
  dependencies = _a.sent();
226
- expect(dependencies).toContain(compiledVars(getAllFolders_1.SasFileType.Service));
226
+ expect(dependencies).toContain(compiledVars(internal_1.SasFileType.Service));
227
227
  expect(/\* ServiceInit start;/.test(dependencies)).toEqual(true);
228
228
  expect(/\* ServiceInit end;/.test(dependencies)).toEqual(true);
229
229
  expect(/\* ServiceTerm start;/.test(dependencies)).toEqual(true);
@@ -243,7 +243,7 @@ describe('loadDependencies', function () {
243
243
  return [4 /*yield*/, (0, loadDependencies_1.loadDependencies)(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.job, compileTree)];
244
244
  case 1:
245
245
  dependencies = _a.sent();
246
- expect(dependencies).toContain(compiledVars(getAllFolders_1.SasFileType.Job));
246
+ expect(dependencies).toContain(compiledVars(internal_1.SasFileType.Job));
247
247
  expect(/\* JobInit start;/.test(dependencies)).toEqual(true);
248
248
  expect(/\* JobInit end;/.test(dependencies)).toEqual(true);
249
249
  expect(/\* JobTerm start;/.test(dependencies)).toEqual(true);
@@ -263,7 +263,7 @@ describe('loadDependencies', function () {
263
263
  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)];
264
264
  case 1:
265
265
  dependencies = _a.sent();
266
- expect(dependencies).toContain(compiledVars(getAllFolders_1.SasFileType.Service));
266
+ expect(dependencies).toContain(compiledVars(internal_1.SasFileType.Service));
267
267
  expect(/\* ServiceInit start;/.test(dependencies)).toEqual(true);
268
268
  expect(/\* ServiceInit end;/.test(dependencies)).toEqual(true);
269
269
  expect(/\* ServiceTerm start;/.test(dependencies)).toEqual(true);
@@ -283,7 +283,7 @@ describe('loadDependencies', function () {
283
283
  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)];
284
284
  case 1:
285
285
  dependencies = _a.sent();
286
- expect(dependencies).toContain(compiledVars(getAllFolders_1.SasFileType.Job));
286
+ expect(dependencies).toContain(compiledVars(internal_1.SasFileType.Job));
287
287
  expect(/\* JobInit start;/.test(dependencies)).toEqual(true);
288
288
  expect(/\* JobInit end;/.test(dependencies)).toEqual(true);
289
289
  expect(/\* JobTerm start;/.test(dependencies)).toEqual(true);
@@ -303,7 +303,7 @@ describe('loadDependencies', function () {
303
303
  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)];
304
304
  case 1:
305
305
  dependencies = _a.sent();
306
- expect(dependencies).toContain(compiledVars(getAllFolders_1.SasFileType.Service));
306
+ expect(dependencies).toContain(compiledVars(internal_1.SasFileType.Service));
307
307
  expect(/\* ServiceInit start;/.test(dependencies)).toEqual(true);
308
308
  expect(/\* ServiceInit end;/.test(dependencies)).toEqual(true);
309
309
  expect(/\* ServiceTerm start;/.test(dependencies)).toEqual(true);
@@ -323,7 +323,7 @@ describe('loadDependencies', function () {
323
323
  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)];
324
324
  case 1:
325
325
  dependencies = _a.sent();
326
- expect(dependencies).toContain(compiledVars(getAllFolders_1.SasFileType.Job));
326
+ expect(dependencies).toContain(compiledVars(internal_1.SasFileType.Job));
327
327
  expect(/\* JobInit start;/.test(dependencies)).toEqual(true);
328
328
  expect(/\* JobInit end;/.test(dependencies)).toEqual(true);
329
329
  expect(/\* JobTerm start;/.test(dependencies)).toEqual(true);
@@ -343,7 +343,7 @@ describe('loadDependencies', function () {
343
343
  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)];
344
344
  case 1:
345
345
  dependencies = _a.sent();
346
- expect(dependencies).toContain(compiledVars(getAllFolders_1.SasFileType.Job));
346
+ expect(dependencies).toContain(compiledVars(internal_1.SasFileType.Job));
347
347
  expect(/\* JobInit start;/.test(dependencies)).toEqual(true);
348
348
  expect(/\* JobInit end;/.test(dependencies)).toEqual(true);
349
349
  expect(/\* JobTerm start;/.test(dependencies)).toEqual(true);
@@ -366,7 +366,7 @@ describe('loadDependencies', function () {
366
366
  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)];
367
367
  case 1:
368
368
  dependencies = _a.sent();
369
- expect(dependencies).toContain(compiledVars(getAllFolders_1.SasFileType.Job));
369
+ expect(dependencies).toContain(compiledVars(internal_1.SasFileType.Job));
370
370
  expect(/\* JobInit start;/.test(dependencies)).toEqual(true);
371
371
  expect(/\* JobInit end;/.test(dependencies)).toEqual(true);
372
372
  expect(/\* JobTerm start;/.test(dependencies)).toEqual(true);
@@ -388,7 +388,7 @@ describe('loadDependencies', function () {
388
388
  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)];
389
389
  case 1:
390
390
  dependencies = _a.sent();
391
- expect(dependencies).toContain(compiledVars(getAllFolders_1.SasFileType.Service));
391
+ expect(dependencies).toContain(compiledVars(internal_1.SasFileType.Service));
392
392
  expect(/\* ServiceInit start;/.test(dependencies)).toEqual(true);
393
393
  expect(/\* ServiceInit end;/.test(dependencies)).toEqual(true);
394
394
  expect(/\* ServiceTerm start;/.test(dependencies)).toEqual(true);
@@ -411,7 +411,7 @@ describe('loadDependencies', function () {
411
411
  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)];
412
412
  case 1:
413
413
  dependencies = _a.sent();
414
- expect(dependencies).toContain(compiledVars(getAllFolders_1.SasFileType.Service));
414
+ expect(dependencies).toContain(compiledVars(internal_1.SasFileType.Service));
415
415
  expect(/\* ServiceInit start;/.test(dependencies)).toEqual(true);
416
416
  expect(/\* ServiceInit end;/.test(dependencies)).toEqual(true);
417
417
  expect(/\* ServiceTerm start;/.test(dependencies)).toEqual(true);
@@ -72,7 +72,7 @@ var utils_1 = require("@sasjs/utils");
72
72
  var __1 = require("../");
73
73
  var utils_2 = require("../../utils/");
74
74
  var axios_1 = __importDefault(require("axios"));
75
- var getDestinationPath_1 = require("../compile/internal/getDestinationPath");
75
+ var internal_1 = require("../compile/internal");
76
76
  var saveLog_1 = require("../../utils/saveLog");
77
77
  var parseSourceFile_1 = require("../../utils/parseSourceFile");
78
78
  /**
@@ -104,7 +104,7 @@ function runSasCode(target, filePath, compile, logFile, source) {
104
104
  sourcefilePathParts = path_1.default.normalize(filePath).split(path_1.default.sep);
105
105
  sourcefilePathParts.splice(-1, 1);
106
106
  sourceFolderPath = sourcefilePathParts.join(path_1.default.sep);
107
- return [4 /*yield*/, (0, __1.compileSingleFile)(target, 'identify', filePath, (0, getDestinationPath_1.getDestinationServicePath)(sourceFolderPath), true)];
107
+ return [4 /*yield*/, (0, __1.compileSingleFile)(target, 'identify', filePath, (0, internal_1.getDestinationServicePath)(sourceFolderPath), true)];
108
108
  case 3:
109
109
  (filePath = (_c.sent()).destinationPath);
110
110
  (_a = process.logger) === null || _a === void 0 ? void 0 : _a.success("File Compiled and placed at: ".concat(filePath, " ."));
@@ -79,7 +79,7 @@ exports.CommandBase = exports.defaultCommandOptions = void 0;
79
79
  var yargs_1 = __importDefault(require("yargs"));
80
80
  var unalias_1 = require("./unalias");
81
81
  var subCommandMap = new Map([
82
- ['compile', ['job', 'service', 'identify']],
82
+ ['compile', ['job', 'service', 'test', 'identify']],
83
83
  ['context', ['create', 'delete', 'edit', 'export', 'list']],
84
84
  ['folder', ['create', 'delete', 'list']],
85
85
  ['doc', ['init', 'lineage']],
package/package.json CHANGED
@@ -102,5 +102,5 @@
102
102
  "typescript": "4.9.5",
103
103
  "util": "0.12.4"
104
104
  },
105
- "version": "4.0.7"
105
+ "version": "4.1.0"
106
106
  }
@@ -1,9 +0,0 @@
1
- import { Target } from '@sasjs/utils';
2
- import { ServerType } from '@sasjs/utils/types';
3
- /**
4
- * Returns server type for 'compile' step.
5
- * If target is not present, it looks for serverType at root level
6
- * Default value for serverType is 'SASVIYA'
7
- * @param {Target} target- the target to check server type.
8
- */
9
- export declare function getServerType(target: Target): Promise<ServerType>;
@@ -1,60 +0,0 @@
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 (g && (g = 0, op[0] && (_ = 0)), _) 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
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.getServerType = void 0;
40
- var types_1 = require("@sasjs/utils/types");
41
- /**
42
- * Returns server type for 'compile' step.
43
- * If target is not present, it looks for serverType at root level
44
- * Default value for serverType is 'SASVIYA'
45
- * @param {Target} target- the target to check server type.
46
- */
47
- function getServerType(target) {
48
- return __awaiter(this, void 0, void 0, function () {
49
- var configuration;
50
- return __generator(this, function (_a) {
51
- if (target === null || target === void 0 ? void 0 : target.serverType)
52
- return [2 /*return*/, target.serverType];
53
- configuration = process.sasjsConfig;
54
- return [2 /*return*/, (configuration === null || configuration === void 0 ? void 0 : configuration.serverType)
55
- ? configuration.serverType
56
- : types_1.ServerType.SasViya];
57
- });
58
- });
59
- }
60
- exports.getServerType = getServerType;