@sasjs/cli 3.0.0 → 3.0.4
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.
- package/build/commands/add/addCredential.d.ts +6 -2
- package/build/commands/add/addCredential.js +79 -47
- package/build/commands/add/addTarget.js +32 -20
- package/build/commands/add/internal/input.d.ts +7 -0
- package/build/commands/add/internal/input.js +53 -8
- package/build/commands/add/spec/addTarget.spec.js +78 -0
- package/build/commands/build/build.js +11 -11
- package/build/commands/build/internal/config.d.ts +1 -1
- package/build/commands/build/internal/config.js +5 -6
- package/build/commands/compile/compile.js +4 -4
- package/build/commands/compile/compileCommand.js +2 -1
- package/build/commands/compile/compileSingleFile.d.ts +1 -1
- package/build/commands/compile/compileSingleFile.js +6 -7
- package/build/commands/compile/internal/compareFolders.js +1 -2
- package/build/commands/compile/internal/compileJobFile.js +1 -1
- package/build/commands/compile/internal/compileServiceFile.js +32 -15
- package/build/commands/compile/internal/compileTestFile.d.ts +0 -2
- package/build/commands/compile/internal/compileTestFile.js +11 -15
- package/build/commands/compile/internal/getAllJobFolders.js +1 -1
- package/build/commands/compile/internal/getAllServiceFolders.js +1 -1
- package/build/commands/compile/internal/loadDependencies.d.ts +2 -3
- package/build/commands/compile/internal/loadDependencies.js +43 -230
- package/build/commands/compile/internal/spec/compileTestFile.spec.js +24 -12
- package/build/commands/compile/spec/compile.spec.js +30 -0
- package/build/commands/compile/spec/compileJobFile.spec.js +3 -3
- package/build/commands/compile/spec/compileServiceFile.spec.js +3 -3
- package/build/commands/compile/spec/loadDependencies.spec.js +37 -37
- package/build/commands/create/spec/reactAppFiles.js +5 -5
- package/build/commands/deploy/deploy.js +1 -1
- package/build/commands/deploy/spec/cbd.spec.js +19 -3
- package/build/commands/docs/generateDocs.js +4 -5
- package/build/commands/docs/internal/getFileInputs.d.ts +1 -1
- package/build/commands/docs/internal/getFileInputs.js +2 -2
- package/build/commands/docs/internal/getFileOutputs.d.ts +1 -1
- package/build/commands/docs/internal/getFileOutputs.js +2 -2
- package/build/commands/docs/internal/getFoldersForDocs.d.ts +1 -1
- package/build/commands/docs/internal/getFoldersForDocs.js +1 -1
- package/build/commands/request/request.js +2 -2
- package/build/commands/run/run.js +1 -1
- package/build/commands/servicepack/deploy.js +1 -1
- package/build/commands/web/internal/getTags.d.ts +2 -1
- package/build/commands/web/internal/getTags.js +10 -12
- package/build/commands/web/internal/getWebServiceContent.js +1 -2
- package/build/commands/web/internal/sasjsout.d.ts +1 -1
- package/build/commands/web/internal/sasjsout.js +1 -1
- package/build/commands/web/internal/spec/updateLinkTag.spec.d.ts +4 -0
- package/build/commands/web/internal/spec/updateLinkTag.spec.js +32 -0
- package/build/commands/web/internal/updateAllTags.js +33 -8
- package/build/commands/web/internal/updateLinkTag.d.ts +4 -0
- package/build/commands/web/internal/updateLinkTag.js +24 -0
- package/build/commands/web/web.js +12 -13
- package/build/utils/auth.d.ts +10 -4
- package/build/utils/auth.js +17 -15
- package/build/utils/config.d.ts +2 -3
- package/build/utils/config.js +14 -16
- package/build/utils/file.d.ts +0 -6
- package/build/utils/file.js +1 -43
- package/build/utils/setConstants.js +1 -1
- package/build/utils/spec/utils.spec.js +31 -5
- package/build/utils/utils.d.ts +0 -2
- package/build/utils/utils.js +1 -16
- package/package.json +7 -13
- package/CHANGELOG.md +0 -30
- package/build/commands/compile/internal/config.d.ts +0 -25
- package/build/commands/compile/internal/config.js +0 -259
- package/build/commands/compile/spec/getDependencyPaths.spec.d.ts +0 -1
- package/build/commands/compile/spec/getDependencyPaths.spec.js +0 -263
- package/build/commands/compile/spec/getProgramDependencies.spec.d.ts +0 -1
- package/build/commands/compile/spec/getProgramDependencies.spec.js +0 -403
- package/build/commands/shared/dependencies.d.ts +0 -12
- package/build/commands/shared/dependencies.js +0 -332
- package/build/commands/web/internal/updateLinkHref.d.ts +0 -4
- package/build/commands/web/internal/updateLinkHref.js +0 -18
- package/build/utils/spec/utils.spec.server.d.ts +0 -1
- package/build/utils/spec/utils.spec.server.js +0 -72
|
@@ -71,7 +71,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
71
71
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
72
72
|
var path_1 = __importDefault(require("path"));
|
|
73
73
|
var utils_1 = require("@sasjs/utils");
|
|
74
|
-
var internalModule = __importStar(require("
|
|
74
|
+
var internalModule = __importStar(require("@sasjs/utils/sasjsCli/getInitTerm"));
|
|
75
75
|
var test_1 = require("../../../utils/test");
|
|
76
76
|
var loadDependencies_1 = require("../internal/loadDependencies");
|
|
77
77
|
var fakeInit = "/**\n @file serviceinit.sas\n @brief this file is called with every service\n @details This file is included in *every* service, *after* the macros and *before* the service code.\n\n <h4> SAS Macros </h4>\n @li mf_abort.sas\n\n**/\n\noptions\n DATASTMTCHK=ALLKEYWORDS /* some sites have this enabled */\n PS=MAX /* reduce log size slightly */\n;\n%put service is starting!!;";
|
|
@@ -162,19 +162,19 @@ describe('loadDependencies', function () {
|
|
|
162
162
|
return __generator(this, function (_a) {
|
|
163
163
|
switch (_a.label) {
|
|
164
164
|
case 0:
|
|
165
|
-
jest.spyOn(internalModule, '
|
|
165
|
+
jest.spyOn(internalModule, 'getInit').mockImplementation(function () {
|
|
166
166
|
return Promise.resolve({
|
|
167
167
|
content: "\n* ServiceInit start;\n" + fakeInit + "\n* ServiceInit end;",
|
|
168
168
|
filePath: ''
|
|
169
169
|
});
|
|
170
170
|
});
|
|
171
|
-
jest.spyOn(internalModule, '
|
|
171
|
+
jest.spyOn(internalModule, 'getTerm').mockImplementation(function () {
|
|
172
172
|
return Promise.resolve({
|
|
173
173
|
content: "\n* ServiceTerm start;\n" + fakeTerm + "\n* ServiceTerm end;",
|
|
174
174
|
filePath: ''
|
|
175
175
|
});
|
|
176
176
|
});
|
|
177
|
-
return [4 /*yield*/, loadDependencies_1.loadDependencies(target, path_1.default.join(__dirname, './service.sas'), [], [],
|
|
177
|
+
return [4 /*yield*/, loadDependencies_1.loadDependencies(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.service)];
|
|
178
178
|
case 1:
|
|
179
179
|
dependencies = _a.sent();
|
|
180
180
|
expect(dependencies).toStartWith(compiledVars('Service'));
|
|
@@ -193,19 +193,19 @@ describe('loadDependencies', function () {
|
|
|
193
193
|
return __generator(this, function (_a) {
|
|
194
194
|
switch (_a.label) {
|
|
195
195
|
case 0:
|
|
196
|
-
jest.spyOn(internalModule, '
|
|
196
|
+
jest.spyOn(internalModule, 'getInit').mockImplementation(function () {
|
|
197
197
|
return Promise.resolve({
|
|
198
198
|
content: "\n* JobInit start;\n" + fakeInit + "\n* JobInit end;",
|
|
199
199
|
filePath: ''
|
|
200
200
|
});
|
|
201
201
|
});
|
|
202
|
-
jest.spyOn(internalModule, '
|
|
202
|
+
jest.spyOn(internalModule, 'getTerm').mockImplementation(function () {
|
|
203
203
|
return Promise.resolve({
|
|
204
204
|
content: "\n* JobTerm start;\n" + fakeTerm + "\n* JobTerm end;",
|
|
205
205
|
filePath: ''
|
|
206
206
|
});
|
|
207
207
|
});
|
|
208
|
-
return [4 /*yield*/, loadDependencies_1.loadDependencies(target, path_1.default.join(__dirname, './service.sas'), [], [],
|
|
208
|
+
return [4 /*yield*/, loadDependencies_1.loadDependencies(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.job)];
|
|
209
209
|
case 1:
|
|
210
210
|
dependencies = _a.sent();
|
|
211
211
|
expect(dependencies).toStartWith(compiledVars('Job'));
|
|
@@ -224,19 +224,19 @@ describe('loadDependencies', function () {
|
|
|
224
224
|
return __generator(this, function (_a) {
|
|
225
225
|
switch (_a.label) {
|
|
226
226
|
case 0:
|
|
227
|
-
jest.spyOn(internalModule, '
|
|
227
|
+
jest.spyOn(internalModule, 'getInit').mockImplementation(function () {
|
|
228
228
|
return Promise.resolve({
|
|
229
229
|
content: "\n* ServiceInit start;\n" + fakeInit2 + "\n* ServiceInit end;",
|
|
230
230
|
filePath: ''
|
|
231
231
|
});
|
|
232
232
|
});
|
|
233
|
-
jest.spyOn(internalModule, '
|
|
233
|
+
jest.spyOn(internalModule, 'getTerm').mockImplementation(function () {
|
|
234
234
|
return Promise.resolve({
|
|
235
235
|
content: "\n* ServiceTerm start;\n" + fakeTerm2 + "\n* ServiceTerm end;",
|
|
236
236
|
filePath: ''
|
|
237
237
|
});
|
|
238
238
|
});
|
|
239
|
-
return [4 /*yield*/, loadDependencies_1.loadDependencies(target, path_1.default.join(__dirname, './service.sas'), [], [],
|
|
239
|
+
return [4 /*yield*/, loadDependencies_1.loadDependencies(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.service)];
|
|
240
240
|
case 1:
|
|
241
241
|
dependencies = _a.sent();
|
|
242
242
|
expect(dependencies).toStartWith(compiledVars('Service'));
|
|
@@ -255,19 +255,19 @@ describe('loadDependencies', function () {
|
|
|
255
255
|
return __generator(this, function (_a) {
|
|
256
256
|
switch (_a.label) {
|
|
257
257
|
case 0:
|
|
258
|
-
jest.spyOn(internalModule, '
|
|
258
|
+
jest.spyOn(internalModule, 'getInit').mockImplementation(function () {
|
|
259
259
|
return Promise.resolve({
|
|
260
260
|
content: "\n* JobInit start;\n" + fakeInit2 + "\n* JobInit end;",
|
|
261
261
|
filePath: ''
|
|
262
262
|
});
|
|
263
263
|
});
|
|
264
|
-
jest.spyOn(internalModule, '
|
|
264
|
+
jest.spyOn(internalModule, 'getTerm').mockImplementation(function () {
|
|
265
265
|
return Promise.resolve({
|
|
266
266
|
content: "\n* JobTerm start;\n" + fakeTerm2 + "\n* JobTerm end;",
|
|
267
267
|
filePath: ''
|
|
268
268
|
});
|
|
269
269
|
});
|
|
270
|
-
return [4 /*yield*/, loadDependencies_1.loadDependencies(target, path_1.default.join(__dirname, './service.sas'), [], [],
|
|
270
|
+
return [4 /*yield*/, loadDependencies_1.loadDependencies(target, path_1.default.join(__dirname, './service.sas'), [], [], utils_1.SASJsFileType.job)];
|
|
271
271
|
case 1:
|
|
272
272
|
dependencies = _a.sent();
|
|
273
273
|
expect(dependencies).toStartWith(compiledVars('Job'));
|
|
@@ -286,19 +286,19 @@ describe('loadDependencies', function () {
|
|
|
286
286
|
return __generator(this, function (_a) {
|
|
287
287
|
switch (_a.label) {
|
|
288
288
|
case 0:
|
|
289
|
-
jest.spyOn(internalModule, '
|
|
289
|
+
jest.spyOn(internalModule, 'getInit').mockImplementation(function () {
|
|
290
290
|
return Promise.resolve({
|
|
291
291
|
content: "\n* ServiceInit start;\n" + fakeJobInit + "\n* ServiceInit end;",
|
|
292
292
|
filePath: ''
|
|
293
293
|
});
|
|
294
294
|
});
|
|
295
|
-
jest.spyOn(internalModule, '
|
|
295
|
+
jest.spyOn(internalModule, 'getTerm').mockImplementation(function () {
|
|
296
296
|
return Promise.resolve({
|
|
297
297
|
content: "\n* ServiceTerm start;\n" + fakeTerm + "\n* ServiceTerm end;",
|
|
298
298
|
filePath: ''
|
|
299
299
|
});
|
|
300
300
|
});
|
|
301
|
-
return [4 /*yield*/, 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')],
|
|
301
|
+
return [4 /*yield*/, 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)];
|
|
302
302
|
case 1:
|
|
303
303
|
dependencies = _a.sent();
|
|
304
304
|
expect(dependencies).toStartWith(compiledVars('Service'));
|
|
@@ -317,19 +317,19 @@ describe('loadDependencies', function () {
|
|
|
317
317
|
return __generator(this, function (_a) {
|
|
318
318
|
switch (_a.label) {
|
|
319
319
|
case 0:
|
|
320
|
-
jest.spyOn(internalModule, '
|
|
320
|
+
jest.spyOn(internalModule, 'getInit').mockImplementation(function () {
|
|
321
321
|
return Promise.resolve({
|
|
322
322
|
content: "\n* JobInit start;\n" + fakeJobInit + "\n* JobInit end;",
|
|
323
323
|
filePath: ''
|
|
324
324
|
});
|
|
325
325
|
});
|
|
326
|
-
jest.spyOn(internalModule, '
|
|
326
|
+
jest.spyOn(internalModule, 'getTerm').mockImplementation(function () {
|
|
327
327
|
return Promise.resolve({
|
|
328
328
|
content: "\n* JobTerm start;\n" + fakeTerm + "\n* JobTerm end;",
|
|
329
329
|
filePath: ''
|
|
330
330
|
});
|
|
331
331
|
});
|
|
332
|
-
return [4 /*yield*/, 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')],
|
|
332
|
+
return [4 /*yield*/, 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
333
|
case 1:
|
|
334
334
|
dependencies = _a.sent();
|
|
335
335
|
expect(dependencies).toStartWith(compiledVars('Job'));
|
|
@@ -348,19 +348,19 @@ describe('loadDependencies', function () {
|
|
|
348
348
|
return __generator(this, function (_a) {
|
|
349
349
|
switch (_a.label) {
|
|
350
350
|
case 0:
|
|
351
|
-
jest.spyOn(internalModule, '
|
|
351
|
+
jest.spyOn(internalModule, 'getInit').mockImplementation(function () {
|
|
352
352
|
return Promise.resolve({
|
|
353
353
|
content: "\n* ServiceInit start;\n" + fakeJobInit2 + "\n* ServiceInit end;",
|
|
354
354
|
filePath: ''
|
|
355
355
|
});
|
|
356
356
|
});
|
|
357
|
-
jest.spyOn(internalModule, '
|
|
357
|
+
jest.spyOn(internalModule, 'getTerm').mockImplementation(function () {
|
|
358
358
|
return Promise.resolve({
|
|
359
359
|
content: "\n* ServiceTerm start;\n" + fakeTerm2 + "\n* ServiceTerm end;",
|
|
360
360
|
filePath: ''
|
|
361
361
|
});
|
|
362
362
|
});
|
|
363
|
-
return [4 /*yield*/, 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')],
|
|
363
|
+
return [4 /*yield*/, 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)];
|
|
364
364
|
case 1:
|
|
365
365
|
dependencies = _a.sent();
|
|
366
366
|
expect(dependencies).toStartWith(compiledVars('Service'));
|
|
@@ -379,19 +379,19 @@ describe('loadDependencies', function () {
|
|
|
379
379
|
return __generator(this, function (_a) {
|
|
380
380
|
switch (_a.label) {
|
|
381
381
|
case 0:
|
|
382
|
-
jest.spyOn(internalModule, '
|
|
382
|
+
jest.spyOn(internalModule, 'getInit').mockImplementation(function () {
|
|
383
383
|
return Promise.resolve({
|
|
384
384
|
content: "\n* JobInit start;\n" + fakeJobInit2 + "\n* JobInit end;",
|
|
385
385
|
filePath: ''
|
|
386
386
|
});
|
|
387
387
|
});
|
|
388
|
-
jest.spyOn(internalModule, '
|
|
388
|
+
jest.spyOn(internalModule, 'getTerm').mockImplementation(function () {
|
|
389
389
|
return Promise.resolve({
|
|
390
390
|
content: "\n* JobTerm start;\n" + fakeTerm2 + "\n* JobTerm end;",
|
|
391
391
|
filePath: ''
|
|
392
392
|
});
|
|
393
393
|
});
|
|
394
|
-
return [4 /*yield*/, 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')],
|
|
394
|
+
return [4 /*yield*/, 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)];
|
|
395
395
|
case 1:
|
|
396
396
|
dependencies = _a.sent();
|
|
397
397
|
expect(dependencies).toStartWith(compiledVars('Job'));
|
|
@@ -410,19 +410,19 @@ describe('loadDependencies', function () {
|
|
|
410
410
|
return __generator(this, function (_a) {
|
|
411
411
|
switch (_a.label) {
|
|
412
412
|
case 0:
|
|
413
|
-
jest.spyOn(internalModule, '
|
|
413
|
+
jest.spyOn(internalModule, 'getInit').mockImplementation(function () {
|
|
414
414
|
return Promise.resolve({
|
|
415
415
|
content: "\n* JobInit start;\n" + fakeJobInit + "\n* JobInit end;",
|
|
416
416
|
filePath: ''
|
|
417
417
|
});
|
|
418
418
|
});
|
|
419
|
-
jest.spyOn(internalModule, '
|
|
419
|
+
jest.spyOn(internalModule, 'getTerm').mockImplementation(function () {
|
|
420
420
|
return Promise.resolve({
|
|
421
421
|
content: "\n* JobTerm start;\n" + fakeTerm2 + "\n* JobTerm end;",
|
|
422
422
|
filePath: ''
|
|
423
423
|
});
|
|
424
424
|
});
|
|
425
|
-
return [4 /*yield*/, 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')],
|
|
425
|
+
return [4 /*yield*/, 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)];
|
|
426
426
|
case 1:
|
|
427
427
|
dependencies = _a.sent();
|
|
428
428
|
expect(dependencies).toStartWith(compiledVars('Job'));
|
|
@@ -444,19 +444,19 @@ describe('loadDependencies', function () {
|
|
|
444
444
|
return __generator(this, function (_a) {
|
|
445
445
|
switch (_a.label) {
|
|
446
446
|
case 0:
|
|
447
|
-
jest.spyOn(internalModule, '
|
|
447
|
+
jest.spyOn(internalModule, 'getInit').mockImplementation(function () {
|
|
448
448
|
return Promise.resolve({
|
|
449
449
|
content: "\n* JobInit start;\n" + fakeInit2 + "\n* JobInit end;",
|
|
450
450
|
filePath: ''
|
|
451
451
|
});
|
|
452
452
|
});
|
|
453
|
-
jest.spyOn(internalModule, '
|
|
453
|
+
jest.spyOn(internalModule, 'getTerm').mockImplementation(function () {
|
|
454
454
|
return Promise.resolve({
|
|
455
455
|
content: "\n* JobTerm start;\n" + fakeJobInit + "\n* JobTerm end;",
|
|
456
456
|
filePath: ''
|
|
457
457
|
});
|
|
458
458
|
});
|
|
459
|
-
return [4 /*yield*/, 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')],
|
|
459
|
+
return [4 /*yield*/, 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)];
|
|
460
460
|
case 1:
|
|
461
461
|
dependencies = _a.sent();
|
|
462
462
|
expect(dependencies).toStartWith(compiledVars('Job'));
|
|
@@ -477,19 +477,19 @@ describe('loadDependencies', function () {
|
|
|
477
477
|
return __generator(this, function (_a) {
|
|
478
478
|
switch (_a.label) {
|
|
479
479
|
case 0:
|
|
480
|
-
jest.spyOn(internalModule, '
|
|
480
|
+
jest.spyOn(internalModule, 'getInit').mockImplementation(function () {
|
|
481
481
|
return Promise.resolve({
|
|
482
482
|
content: "\n* ServiceInit start;\n" + fakeJobInit + "\n* ServiceInit end;",
|
|
483
483
|
filePath: ''
|
|
484
484
|
});
|
|
485
485
|
});
|
|
486
|
-
jest.spyOn(internalModule, '
|
|
486
|
+
jest.spyOn(internalModule, 'getTerm').mockImplementation(function () {
|
|
487
487
|
return Promise.resolve({
|
|
488
488
|
content: "\n* ServiceTerm start;\n" + fakeTerm2 + "\n* ServiceTerm end;",
|
|
489
489
|
filePath: ''
|
|
490
490
|
});
|
|
491
491
|
});
|
|
492
|
-
return [4 /*yield*/, 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')],
|
|
492
|
+
return [4 /*yield*/, 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)];
|
|
493
493
|
case 1:
|
|
494
494
|
dependencies = _a.sent();
|
|
495
495
|
expect(dependencies).toStartWith(compiledVars('Service'));
|
|
@@ -511,19 +511,19 @@ describe('loadDependencies', function () {
|
|
|
511
511
|
return __generator(this, function (_a) {
|
|
512
512
|
switch (_a.label) {
|
|
513
513
|
case 0:
|
|
514
|
-
jest.spyOn(internalModule, '
|
|
514
|
+
jest.spyOn(internalModule, 'getInit').mockImplementation(function () {
|
|
515
515
|
return Promise.resolve({
|
|
516
516
|
content: "\n* ServiceInit start;\n" + fakeInit2 + "\n* ServiceInit end;",
|
|
517
517
|
filePath: ''
|
|
518
518
|
});
|
|
519
519
|
});
|
|
520
|
-
jest.spyOn(internalModule, '
|
|
520
|
+
jest.spyOn(internalModule, 'getTerm').mockImplementation(function () {
|
|
521
521
|
return Promise.resolve({
|
|
522
522
|
content: "\n* ServiceTerm start;\n" + fakeJobInit + "\n* ServiceTerm end;",
|
|
523
523
|
filePath: ''
|
|
524
524
|
});
|
|
525
525
|
});
|
|
526
|
-
return [4 /*yield*/, 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')],
|
|
526
|
+
return [4 /*yield*/, 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)];
|
|
527
527
|
case 1:
|
|
528
528
|
dependencies = _a.sent();
|
|
529
529
|
expect(dependencies).toStartWith(compiledVars('Service'));
|
|
@@ -7,7 +7,10 @@ exports.reactAppFiles = {
|
|
|
7
7
|
{ fileName: 'package.json' },
|
|
8
8
|
{ fileName: 'package-lock.json' },
|
|
9
9
|
{ fileName: 'tsconfig.json' },
|
|
10
|
-
{ fileName: 'README.md' }
|
|
10
|
+
{ fileName: 'README.md' },
|
|
11
|
+
{ fileName: 'webpack.common.js' },
|
|
12
|
+
{ fileName: 'webpack.dev.js' },
|
|
13
|
+
{ fileName: 'webpack.prod.js' }
|
|
11
14
|
],
|
|
12
15
|
subFolders: [
|
|
13
16
|
{
|
|
@@ -36,12 +39,9 @@ exports.reactAppFiles = {
|
|
|
36
39
|
folderName: 'src',
|
|
37
40
|
files: [
|
|
38
41
|
{ fileName: 'App.scss' },
|
|
39
|
-
{ fileName: 'cached_data.ts' },
|
|
40
42
|
{ fileName: 'index.scss' },
|
|
41
43
|
{ fileName: 'index.tsx' },
|
|
42
|
-
{ fileName: 'logo.svg' }
|
|
43
|
-
{ fileName: 'react-app-env.d.ts' },
|
|
44
|
-
{ fileName: 'serviceWorker.ts' }
|
|
44
|
+
{ fileName: 'logo.svg' }
|
|
45
45
|
],
|
|
46
46
|
subFolders: [
|
|
47
47
|
{
|
|
@@ -93,7 +93,7 @@ function deploy(target, isLocal, sasjs) {
|
|
|
93
93
|
return __generator(this, function (_d) {
|
|
94
94
|
switch (_d.label) {
|
|
95
95
|
case 0:
|
|
96
|
-
deployScriptPath =
|
|
96
|
+
deployScriptPath = utils_2.getAbsolutePath(deployScript, process.projectDir);
|
|
97
97
|
if (!file_1.isSasFile(deployScript)) return [3 /*break*/, 7];
|
|
98
98
|
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.info("Processing SAS file " + path_1.default.basename(deployScript) + " ...");
|
|
99
99
|
return [4 /*yield*/, utils_2.readFile(deployScriptPath)
|
|
@@ -47,6 +47,7 @@ var build_1 = require("../../build/build");
|
|
|
47
47
|
var deploy_1 = require("../deploy");
|
|
48
48
|
var utils_2 = require("./utils");
|
|
49
49
|
var config_1 = require("../../../utils/config");
|
|
50
|
+
var utils_3 = require("../../../utils");
|
|
50
51
|
describe('sasjs cbd with server type SASJS', function () {
|
|
51
52
|
var target;
|
|
52
53
|
var appName;
|
|
@@ -77,7 +78,7 @@ describe('sasjs cbd with server type SASJS', function () {
|
|
|
77
78
|
});
|
|
78
79
|
}); });
|
|
79
80
|
it("should deploy compile and build to sasjs/server", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
80
|
-
var sasjs, customTarget;
|
|
81
|
+
var sasjs, customTarget, macroCorePath, mf_getuser, mp_jsonout, ms_webout, webout;
|
|
81
82
|
return __generator(this, function (_a) {
|
|
82
83
|
switch (_a.label) {
|
|
83
84
|
case 0:
|
|
@@ -108,6 +109,19 @@ describe('sasjs cbd with server type SASJS', function () {
|
|
|
108
109
|
return [4 /*yield*/, deploy_1.deploy(customTarget, true, sasjs)];
|
|
109
110
|
case 4:
|
|
110
111
|
_a.sent();
|
|
112
|
+
macroCorePath = process.sasjsConstants.macroCorePath;
|
|
113
|
+
return [4 /*yield*/, utils_1.readFile(macroCorePath + "/base/mf_getuser.sas")];
|
|
114
|
+
case 5:
|
|
115
|
+
mf_getuser = _a.sent();
|
|
116
|
+
return [4 /*yield*/, utils_1.readFile(macroCorePath + "/base/mp_jsonout.sas")];
|
|
117
|
+
case 6:
|
|
118
|
+
mp_jsonout = _a.sent();
|
|
119
|
+
return [4 /*yield*/, utils_1.readFile(macroCorePath + "/server/ms_webout.sas")];
|
|
120
|
+
case 7:
|
|
121
|
+
ms_webout = _a.sent();
|
|
122
|
+
webout = ' %macro webout(action,ds,dslabel=,fmt=);\n' +
|
|
123
|
+
' %ms_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt)\n' +
|
|
124
|
+
' %mend;\n';
|
|
111
125
|
expect(sasjs.deployToSASjs).toHaveBeenCalledWith({
|
|
112
126
|
members: [
|
|
113
127
|
{
|
|
@@ -121,12 +135,14 @@ describe('sasjs cbd with server type SASJS', function () {
|
|
|
121
135
|
{
|
|
122
136
|
name: 'appinit',
|
|
123
137
|
type: 'service',
|
|
124
|
-
code:
|
|
138
|
+
code: utils_3.removeComments("" + mf_getuser + mp_jsonout + ms_webout + webout +
|
|
139
|
+
'/* provide additional debug info */\n%global _program;\n%put &=syscc;\n%put user=%mf_getuser();\n%put pgm=&_program;\n%put timestamp=%sysfunc(datetime(),datetime19.);\n* Service Variables start;\n*Service Variables end;\n* Dependencies start;\n* Dependencies end;\n* Programs start;\n*Programs end;\n* Service start;\nproc sql;\ncreate table areas as select distinct area\n from sashelp.springs;\n%webout(OPEN)\n%webout(OBJ,areas)\n%webout(CLOSE)\n* Service end;')
|
|
125
140
|
},
|
|
126
141
|
{
|
|
127
142
|
name: 'getdata',
|
|
128
143
|
type: 'service',
|
|
129
|
-
code:
|
|
144
|
+
code: utils_3.removeComments("" + mf_getuser + mp_jsonout + ms_webout + webout +
|
|
145
|
+
'/* provide additional debug info */\n%global _program;\n%put &=syscc;\n%put user=%mf_getuser();\n%put pgm=&_program;\n%put timestamp=%sysfunc(datetime(),datetime19.);\n* Service Variables start;\n*Service Variables end;\n* Dependencies start;\n* Dependencies end;\n* Programs start;\n*Programs end;\n* Service start;\n%webout(FETCH)\nproc sql;\ncreate table springs as select * from sashelp.springs\n where area in (select area from work.areas);\n%webout(OPEN)\n%webout(OBJ,springs)\n%webout(CLOSE)\n* Service end;')
|
|
130
146
|
}
|
|
131
147
|
]
|
|
132
148
|
}
|
|
@@ -80,7 +80,6 @@ var utils_1 = require("@sasjs/utils");
|
|
|
80
80
|
var getFoldersForDocs_1 = require("./internal/getFoldersForDocs");
|
|
81
81
|
var createDotFiles_1 = require("./internal/createDotFiles");
|
|
82
82
|
var getDocConfig_1 = require("./internal/getDocConfig");
|
|
83
|
-
var logger_1 = require("@sasjs/utils/logger");
|
|
84
83
|
var utils_2 = require("../../utils");
|
|
85
84
|
/**
|
|
86
85
|
* Generates documentation(Doxygen)
|
|
@@ -129,7 +128,7 @@ function generateDocs(target, config, outDirectory) {
|
|
|
129
128
|
case 4:
|
|
130
129
|
doxyContent = __assign({ favIcon: 'favicon.ico', footer: 'new_footer.html', header: 'new_header.html', layout: 'DoxygenLayout.xml', logo: 'logo.png', readMe: '../../README.md', stylesheet: 'new_stylesheet.css', path: path_1.default.join(process.projectDir, 'sasjs', 'doxy') }, doxyContentFromConfig);
|
|
131
130
|
if (doxyContentFromConfig === null || doxyContentFromConfig === void 0 ? void 0 : doxyContentFromConfig.path)
|
|
132
|
-
doxyContent.path =
|
|
131
|
+
doxyContent.path = utils_1.getAbsolutePath(doxyContentFromConfig.path, process.projectDir);
|
|
133
132
|
doxyParams = setVariableCmd({
|
|
134
133
|
DOXY_HTML_OUTPUT: newOutDirectory,
|
|
135
134
|
DOXY_INPUT: "\"" + path_1.default.join(doxyContent.path, doxyContent.readMe) + "\" " + combinedFolders,
|
|
@@ -147,7 +146,7 @@ function generateDocs(target, config, outDirectory) {
|
|
|
147
146
|
doxyConfigPath = _f.sent();
|
|
148
147
|
(_b = process.logger) === null || _b === void 0 ? void 0 : _b.info("Using " + doxyConfigPath + " as Doxygen Configuration.");
|
|
149
148
|
spinner = ora_1.default(chalk_1.default.greenBright('Generating docs', chalk_1.default.cyanBright(newOutDirectory)));
|
|
150
|
-
if (process.env.LOG_LEVEL !==
|
|
149
|
+
if (process.env.LOG_LEVEL !== utils_1.LogLevel.Debug)
|
|
151
150
|
spinner.start();
|
|
152
151
|
return [4 /*yield*/, utils_1.fileExists(newOutDirectory)];
|
|
153
152
|
case 6:
|
|
@@ -161,9 +160,9 @@ function generateDocs(target, config, outDirectory) {
|
|
|
161
160
|
case 9:
|
|
162
161
|
_f.sent();
|
|
163
162
|
_e = shelljs_1.default.exec(doxyParams + " doxygen \"" + doxyConfigPath + "\"", {
|
|
164
|
-
silent: process.env.LOG_LEVEL !==
|
|
163
|
+
silent: process.env.LOG_LEVEL !== utils_1.LogLevel.Debug
|
|
165
164
|
}), stderr = _e.stderr, code = _e.code;
|
|
166
|
-
if (process.env.LOG_LEVEL !==
|
|
165
|
+
if (process.env.LOG_LEVEL !== utils_1.LogLevel.Debug)
|
|
167
166
|
spinner.stop();
|
|
168
167
|
if (code !== 0) {
|
|
169
168
|
if (stderr.startsWith('error: ')) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getFileInputs = void 0;
|
|
4
|
-
var
|
|
4
|
+
var utils_1 = require("@sasjs/utils");
|
|
5
5
|
/**
|
|
6
6
|
* Returns list of Inputs and populates Map of Nodes
|
|
7
7
|
* @param {string} fileName- Name of the file from which Inputs need to extract
|
|
@@ -9,7 +9,7 @@ var file_1 = require("../../../utils/file");
|
|
|
9
9
|
* @param {Map} paramNodes- Map for params(Inputs/Outputs)
|
|
10
10
|
*/
|
|
11
11
|
function getFileInputs(fileName, fileContent, paramNodes) {
|
|
12
|
-
var fileInputs =
|
|
12
|
+
var fileInputs = utils_1.getList('<h4> Data Inputs </h4>', fileContent)
|
|
13
13
|
.map(function (input) { return input.toUpperCase(); })
|
|
14
14
|
.filter(function (input) { return !input.endsWith('.DLL'); });
|
|
15
15
|
fileInputs.forEach(function (inputParam) {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getFileOutputs = void 0;
|
|
4
|
-
var
|
|
4
|
+
var utils_1 = require("@sasjs/utils");
|
|
5
5
|
/**
|
|
6
6
|
* Returns list of Outputs and populates Map of Nodes
|
|
7
7
|
* @param {string} fileContent- Contents of the file from which Outputs need to extract
|
|
8
8
|
* @param {Map} paramNodes- Map for params(Inputs/Outputs)
|
|
9
9
|
*/
|
|
10
10
|
function getFileOutputs(fileContent, paramNodes) {
|
|
11
|
-
var fileOutputs =
|
|
11
|
+
var fileOutputs = utils_1.getList('<h4> Data Outputs </h4>', 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,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getFoldersForDocs = void 0;
|
|
4
|
-
var utils_1 = require("
|
|
4
|
+
var utils_1 = require("@sasjs/utils");
|
|
5
5
|
/**
|
|
6
6
|
* Returns list of folders for documentation( macroCore / macros / SAS programs/ services / jobs )
|
|
7
7
|
* @param {Target} target- target for docs.
|
|
@@ -59,7 +59,7 @@ function runSasJob(target, isLocal, sasJobLocation, dataFilePath, configFilePath
|
|
|
59
59
|
if (dataFilePath.split('.').slice(-1)[0] !== 'json') {
|
|
60
60
|
throw new Error('Provided data file must be valid json.');
|
|
61
61
|
}
|
|
62
|
-
return [4 /*yield*/, utils_1.readFile(
|
|
62
|
+
return [4 /*yield*/, utils_1.readFile(utils_1.getAbsolutePath(dataFilePath, process.projectDir))];
|
|
63
63
|
case 1:
|
|
64
64
|
dataFile = _a.sent();
|
|
65
65
|
try {
|
|
@@ -74,7 +74,7 @@ function runSasJob(target, isLocal, sasJobLocation, dataFilePath, configFilePath
|
|
|
74
74
|
if (configFilePath.split('.').slice(-1)[0] !== 'json') {
|
|
75
75
|
throw new Error('Provided config file must be valid json.');
|
|
76
76
|
}
|
|
77
|
-
return [4 /*yield*/, utils_1.readFile(
|
|
77
|
+
return [4 /*yield*/, utils_1.readFile(utils_1.getAbsolutePath(configFilePath, process.projectDir))];
|
|
78
78
|
case 3:
|
|
79
79
|
configFile = _a.sent();
|
|
80
80
|
try {
|
|
@@ -113,7 +113,7 @@ function runSasCode(target, filePath, compile) {
|
|
|
113
113
|
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.success("File Compiled and placed at: " + filePath + " .");
|
|
114
114
|
_b.label = 4;
|
|
115
115
|
case 4:
|
|
116
|
-
sasFilePath =
|
|
116
|
+
sasFilePath = utils_1.getAbsolutePath(filePath, process.currentDir);
|
|
117
117
|
return [4 /*yield*/, utils_1.readFile(sasFilePath)];
|
|
118
118
|
case 5:
|
|
119
119
|
sasFileContent = _b.sent();
|
|
@@ -42,7 +42,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
42
42
|
exports.servicePackDeploy = void 0;
|
|
43
43
|
var path_1 = __importDefault(require("path"));
|
|
44
44
|
var displayResult_1 = require("../../utils/displayResult");
|
|
45
|
-
var utils_1 = require("
|
|
45
|
+
var utils_1 = require("@sasjs/utils");
|
|
46
46
|
var deployToSasViyaWithServicePack_1 = require("../shared/deployToSasViyaWithServicePack");
|
|
47
47
|
function servicePackDeploy(target, isLocal, jsonFilePath, isForced) {
|
|
48
48
|
var _a;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { JSDOM } from 'jsdom';
|
|
2
2
|
export declare const getScriptTags: (parsedHtml: JSDOM) => HTMLScriptElement[];
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const getStyleTags: (parsedHtml: JSDOM) => HTMLLinkElement[];
|
|
4
4
|
export declare const getFaviconTags: (parsedHtml: JSDOM) => HTMLLinkElement[];
|
|
5
|
+
export declare const getImgTags: (parsedHtml: JSDOM) => HTMLImageElement[];
|
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getFaviconTags = exports.
|
|
3
|
+
exports.getImgTags = exports.getFaviconTags = exports.getStyleTags = exports.getScriptTags = void 0;
|
|
4
4
|
var getScriptTags = function (parsedHtml) {
|
|
5
|
-
return Array.from(parsedHtml.window.document.
|
|
5
|
+
return Array.from(parsedHtml.window.document.getElementsByTagName('script'));
|
|
6
6
|
};
|
|
7
7
|
exports.getScriptTags = getScriptTags;
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
return linkTags;
|
|
8
|
+
var getStyleTags = function (parsedHtml) {
|
|
9
|
+
return Array.from(parsedHtml.window.document.getElementsByTagName('link')).filter(function (s) { return s.getAttribute('rel') === 'stylesheet'; });
|
|
11
10
|
};
|
|
12
|
-
exports.
|
|
11
|
+
exports.getStyleTags = getStyleTags;
|
|
13
12
|
var getFaviconTags = function (parsedHtml) {
|
|
14
|
-
|
|
15
|
-
return s.getAttribute('rel') &&
|
|
16
|
-
s.getAttribute('rel') &&
|
|
17
|
-
s.getAttribute('rel').includes('icon');
|
|
18
|
-
});
|
|
19
|
-
return linkTags;
|
|
13
|
+
return Array.from(parsedHtml.window.document.getElementsByTagName('link')).filter(function (s) { var _a; return (_a = s.getAttribute('rel')) === null || _a === void 0 ? void 0 : _a.includes('icon'); });
|
|
20
14
|
};
|
|
21
15
|
exports.getFaviconTags = getFaviconTags;
|
|
16
|
+
var getImgTags = function (parsedHtml) {
|
|
17
|
+
return Array.from(parsedHtml.window.document.getElementsByTagName('img')).filter(function (s) { return s.getAttribute('src'); });
|
|
18
|
+
};
|
|
19
|
+
exports.getImgTags = getImgTags;
|
|
@@ -38,7 +38,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.getWebServiceContent = void 0;
|
|
40
40
|
var utils_1 = require("@sasjs/utils");
|
|
41
|
-
var utils_2 = require("../../../utils");
|
|
42
41
|
var sasjsout_1 = require("./sasjsout");
|
|
43
42
|
var getWebServiceContent = function (contentBase64, type, serverType) {
|
|
44
43
|
if (type === void 0) { type = 'JS'; }
|
|
@@ -52,7 +51,7 @@ var getWebServiceContent = function (contentBase64, type, serverType) {
|
|
|
52
51
|
};
|
|
53
52
|
serviceContent = sasjsout_1.sasjsout + "\nfilename sasjs temp lrecl=99999999;\ndata _null_;\nfile sasjs;\n";
|
|
54
53
|
lines.forEach(function (line) {
|
|
55
|
-
var chunkedLines =
|
|
54
|
+
var chunkedLines = utils_1.chunk(line);
|
|
56
55
|
if (chunkedLines.length === 1) {
|
|
57
56
|
serviceContent += "put '" + chunkedLines[0].split("'").join("''") + "';\n";
|
|
58
57
|
}
|