@sasjs/cli 3.25.0 → 3.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1,7 @@
1
1
  export declare function init(): Promise<void>;
2
+ /**
3
+ * Creates a SASjs configuration file.
4
+ * Its name will be of the form 'sasjsconfig.json'
5
+ * @param {string} parentFolderName- the name of the project folder.
6
+ */
7
+ export declare const createConfigFile: (parentFolderName: string) => Promise<void>;
@@ -39,11 +39,10 @@ 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.init = void 0;
42
+ exports.createConfigFile = exports.init = void 0;
43
43
  var path_1 = __importDefault(require("path"));
44
44
  var utils_1 = require("../../utils/utils");
45
45
  var utils_2 = require("@sasjs/utils");
46
- var createConfigFile_1 = require("../shared/createConfigFile");
47
46
  var createLintConfigFile_1 = require("../shared/createLintConfigFile");
48
47
  function init() {
49
48
  var _a;
@@ -63,7 +62,7 @@ function init() {
63
62
  return [4 /*yield*/, (0, utils_1.setupDoxygen)(parentFolderName)];
64
63
  case 3:
65
64
  _b.sent();
66
- return [4 /*yield*/, (0, createConfigFile_1.createConfigFile)(parentFolderName)];
65
+ return [4 /*yield*/, (0, exports.createConfigFile)(parentFolderName)];
67
66
  case 4:
68
67
  _b.sent();
69
68
  lintConfigPath = path_1.default.join(process.projectDir, parentFolderName, '.sasjslint');
@@ -80,3 +79,35 @@ function init() {
80
79
  });
81
80
  }
82
81
  exports.init = init;
82
+ /**
83
+ * Creates a SASjs configuration file.
84
+ * Its name will be of the form 'sasjsconfig.json'
85
+ * @param {string} parentFolderName- the name of the project folder.
86
+ */
87
+ var createConfigFile = function (parentFolderName) { return __awaiter(void 0, void 0, void 0, function () {
88
+ var config, configDestinationPath;
89
+ return __generator(this, function (_a) {
90
+ switch (_a.label) {
91
+ case 0:
92
+ config = {
93
+ $schema: 'https://cli.sasjs.io/sasjsconfig-schema.json',
94
+ macroFolders: ['sasjs/macros'],
95
+ defaultTarget: 'mytarget',
96
+ targets: [
97
+ {
98
+ name: 'mytarget',
99
+ serverType: 'SASJS',
100
+ serverUrl: ' ',
101
+ appLoc: '/Public/apps/myapp'
102
+ }
103
+ ]
104
+ };
105
+ configDestinationPath = path_1.default.join(process.projectDir, parentFolderName, 'sasjs', 'sasjsconfig.json');
106
+ return [4 /*yield*/, (0, utils_2.createFile)(configDestinationPath, JSON.stringify(config, null, 2))];
107
+ case 1:
108
+ _a.sent();
109
+ return [2 /*return*/];
110
+ }
111
+ });
112
+ }); };
113
+ exports.createConfigFile = createConfigFile;
@@ -148,8 +148,8 @@ var verifyInit = function () { return __awaiter(void 0, void 0, void 0, function
148
148
  return [4 /*yield*/, (0, utils_1.readFile)(gitIgnoreFilePath)];
149
149
  case 2:
150
150
  gitIgnoreContent = _a.sent();
151
- expect(gitIgnoreContent.match(/^sasjsbuild\//gm).length).toEqual(1);
152
- expect(gitIgnoreContent.match(/^node_modules\//gm).length).toEqual(1);
151
+ expect(gitIgnoreContent.match(/^sasjsbuild/gm).length).toEqual(1);
152
+ expect(gitIgnoreContent.match(/^node_modules/gm).length).toEqual(1);
153
153
  return [2 /*return*/];
154
154
  }
155
155
  });
@@ -42,7 +42,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.deployToSasViyaWithServicePack = void 0;
43
43
  var node_1 = __importDefault(require("@sasjs/adapter/node"));
44
44
  var utils_1 = require("@sasjs/utils");
45
- var js_base64_1 = require("js-base64");
46
45
  var utils_2 = require("../../utils");
47
46
  function deployToSasViyaWithServicePack(jsonFilePath, target, isLocal, isForced) {
48
47
  if (isForced === void 0) { isForced = false; }
@@ -91,7 +90,7 @@ var populateCodeInServicePack = function (json) {
91
90
  var _a;
92
91
  return (_a = json === null || json === void 0 ? void 0 : json.members) === null || _a === void 0 ? void 0 : _a.forEach(function (member) {
93
92
  if (member.type === utils_1.MemberType.file)
94
- member.code = (0, js_base64_1.decode)(member.code);
93
+ member.code = Buffer.from(member.code, 'base64');
95
94
  if (member.type === utils_1.MemberType.folder)
96
95
  populateCodeInServicePack(member);
97
96
  });
@@ -1,4 +1,5 @@
1
1
  import { JSDOM } from 'jsdom';
2
+ export declare const getSasjsTags: (parsedHtml: JSDOM) => Element[];
2
3
  export declare const getScriptTags: (parsedHtml: JSDOM) => HTMLScriptElement[];
3
4
  export declare const getStyleInPageTags: (parsedHtml: JSDOM) => HTMLStyleElement[];
4
5
  export declare const getStyleTags: (parsedHtml: JSDOM) => HTMLLinkElement[];
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSourceTags = exports.getImgTags = exports.getFaviconTags = exports.getStyleTags = exports.getStyleInPageTags = exports.getScriptTags = void 0;
3
+ exports.getSourceTags = exports.getImgTags = exports.getFaviconTags = exports.getStyleTags = exports.getStyleInPageTags = exports.getScriptTags = exports.getSasjsTags = void 0;
4
+ var getSasjsTags = function (parsedHtml) {
5
+ return Array.from(parsedHtml.window.document.getElementsByTagName('sasjs'));
6
+ };
7
+ exports.getSasjsTags = getSasjsTags;
4
8
  var getScriptTags = function (parsedHtml) {
5
9
  return Array.from(parsedHtml.window.document.getElementsByTagName('script'));
6
10
  };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @jest-environment jsdom
3
+ */
4
+ export {};
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /**
3
+ * @jest-environment jsdom
4
+ */
5
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
6
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7
+ return new (P || (P = Promise))(function (resolve, reject) {
8
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
9
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
11
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
12
+ });
13
+ };
14
+ var __generator = (this && this.__generator) || function (thisArg, body) {
15
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
16
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
17
+ function verb(n) { return function (v) { return step([n, v]); }; }
18
+ function step(op) {
19
+ if (f) throw new TypeError("Generator is already executing.");
20
+ while (_) try {
21
+ 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;
22
+ if (y = 0, t) op = [op[0] & 2, t.value];
23
+ switch (op[0]) {
24
+ case 0: case 1: t = op; break;
25
+ case 4: _.label++; return { value: op[1], done: false };
26
+ case 5: _.label++; y = op[1]; op = [0]; continue;
27
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
28
+ default:
29
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
30
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
31
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
32
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
33
+ if (t[2]) _.ops.pop();
34
+ _.trys.pop(); continue;
35
+ }
36
+ op = body.call(thisArg, _);
37
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
38
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
39
+ }
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ var utils_1 = require("@sasjs/utils");
43
+ var updateSasjsTag_1 = require("../updateSasjsTag");
44
+ describe('updateSasjsTag', function () {
45
+ it("should update links in js script", function () { return __awaiter(void 0, void 0, void 0, function () {
46
+ var target, tag;
47
+ return __generator(this, function (_a) {
48
+ target = {
49
+ serverType: utils_1.ServerType.Sasjs,
50
+ appLoc: '/public/app/test'
51
+ };
52
+ tag = document.createElement('sasjs');
53
+ tag.setAttribute('appLoc', 'need/to/update');
54
+ tag.setAttribute('serverType', 'sas');
55
+ (0, updateSasjsTag_1.updateSasjsTag)(tag, target);
56
+ expect(tag.getAttribute('appLoc')).toEqual('/public/app/test');
57
+ expect(tag.getAttribute('serverType')).toEqual(utils_1.ServerType.Sasjs);
58
+ return [2 /*return*/];
59
+ });
60
+ }); });
61
+ });
@@ -1,5 +1,5 @@
1
1
  import { JSDOM } from 'jsdom';
2
- import { ServerType } from '@sasjs/utils';
2
+ import { ServerType, Target } from '@sasjs/utils';
3
3
  import { AssetPathMap } from './createAssetServices';
4
4
  interface paramsType {
5
5
  webSourcePathFull: string;
@@ -12,5 +12,5 @@ interface paramsType {
12
12
  * Also updates contents to update included asset references
13
13
  * @param {JSDOM} parsedHtml- DOMWindow for index.html
14
14
  */
15
- export declare const updateAllTags: (parsedHtml: JSDOM, { webSourcePathFull, destinationPath, serverType, assetPathMap }: paramsType) => Promise<void>;
15
+ export declare const updateAllTags: (parsedHtml: JSDOM, target: Target, { webSourcePathFull, destinationPath, serverType, assetPathMap }: paramsType) => Promise<void>;
16
16
  export {};
@@ -67,19 +67,24 @@ var getTags_1 = require("./getTags");
67
67
  var updateScriptTag_1 = require("./updateScriptTag");
68
68
  var updateLinkTag_1 = require("./updateLinkTag");
69
69
  var updateStyleTag_1 = require("./updateStyleTag");
70
+ var updateSasjsTag_1 = require("./updateSasjsTag");
70
71
  /**
71
72
  * Updates HTML Tags with correct link.
72
73
  * Also updates contents to update included asset references
73
74
  * @param {JSDOM} parsedHtml- DOMWindow for index.html
74
75
  */
75
- var updateAllTags = function (parsedHtml, _a) {
76
+ var updateAllTags = function (parsedHtml, target, _a) {
76
77
  var webSourcePathFull = _a.webSourcePathFull, destinationPath = _a.destinationPath, serverType = _a.serverType, assetPathMap = _a.assetPathMap;
77
78
  return __awaiter(void 0, void 0, void 0, function () {
78
- var assetsNotFound, scriptTags, styleExternalTags, styleInPageTags, styleTags, faviconTags, imgTags, sourceTags, srcTags, notFoundErrors;
79
+ var assetsNotFound, sasjsTags, scriptTags, styleExternalTags, styleInPageTags, styleTags, faviconTags, imgTags, sourceTags, srcTags, notFoundErrors;
79
80
  return __generator(this, function (_b) {
80
81
  switch (_b.label) {
81
82
  case 0:
82
83
  assetsNotFound = [];
84
+ sasjsTags = (0, getTags_1.getSasjsTags)(parsedHtml);
85
+ if (sasjsTags.length) {
86
+ (0, updateSasjsTag_1.updateSasjsTag)(sasjsTags[0], target);
87
+ }
83
88
  scriptTags = (0, getTags_1.getScriptTags)(parsedHtml);
84
89
  return [4 /*yield*/, (0, utils_1.asyncForEach)(scriptTags, function (tag) { return __awaiter(void 0, void 0, void 0, function () {
85
90
  return __generator(this, function (_a) {
@@ -0,0 +1,5 @@
1
+ import { Target } from '@sasjs/utils';
2
+ /**
3
+ * Updates sasjs adapter's config in index.html if present.
4
+ */
5
+ export declare const updateSasjsTag: (tag: Element, target: Target) => void;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateSasjsTag = void 0;
4
+ /**
5
+ * Updates sasjs adapter's config in index.html if present.
6
+ */
7
+ var updateSasjsTag = function (tag, target) {
8
+ tag.setAttribute('appLoc', target.appLoc);
9
+ tag.setAttribute('serverType', target.serverType);
10
+ };
11
+ exports.updateSasjsTag = updateSasjsTag;
@@ -98,7 +98,7 @@ function createWebAppServices(target) {
98
98
  return [4 /*yield*/, (0, utils_1.readFile)(indexHtmlPath).then(function (content) { return new jsdom_1.default.JSDOM(content); })];
99
99
  case 8:
100
100
  indexHtml = _e.sent();
101
- return [4 /*yield*/, (0, updateAllTags_1.updateAllTags)(indexHtml, {
101
+ return [4 /*yield*/, (0, updateAllTags_1.updateAllTags)(indexHtml, target, {
102
102
  webSourcePathFull: webSourcePathFull,
103
103
  destinationPath: destinationPath,
104
104
  serverType: target.serverType,
@@ -182,7 +182,7 @@ describe('utils', function () {
182
182
  return [4 /*yield*/, (0, utils_2.readFile)(gitFilePath)];
183
183
  case 3:
184
184
  gitIgnoreContent = _a.sent();
185
- expect(gitIgnoreContent.includes('sasjsbuild/')).toEqual(true);
185
+ expect(gitIgnoreContent.includes('sasjsbuild')).toEqual(true);
186
186
  return [4 /*yield*/, (0, utils_2.deleteFile)(gitFilePath)];
187
187
  case 4:
188
188
  _a.sent();
@@ -202,7 +202,7 @@ describe('utils', function () {
202
202
  return [4 /*yield*/, expect((0, utils_1.setupGitIgnore)(folderPath)).toResolve()];
203
203
  case 2:
204
204
  _a.sent();
205
- regExp = new RegExp("^node_modules/\nsasjsbuild/\n", 'gm');
205
+ regExp = new RegExp("^node_modules/\nsasjsbuild\n", 'gm');
206
206
  return [4 /*yield*/, (0, utils_2.readFile)(gitFilePath)];
207
207
  case 3:
208
208
  gitIgnoreContent = _a.sent();
@@ -221,7 +221,7 @@ describe('utils', function () {
221
221
  return [4 /*yield*/, expect((0, utils_1.setupGitIgnore)(folderPath)).toResolve()];
222
222
  case 2:
223
223
  _a.sent();
224
- regExp = new RegExp("^sasjsbuild/", 'gm');
224
+ regExp = new RegExp("^sasjsbuild", 'gm');
225
225
  expect(gitIgnoreContent.match(regExp)).toBeTruthy();
226
226
  expect(gitIgnoreContent.match(regExp).length).toEqual(1);
227
227
  return [4 /*yield*/, (0, utils_2.deleteFile)(gitFilePath)];
@@ -295,7 +295,7 @@ function setupNpmProject(folderName) {
295
295
  var _a, _b, _c;
296
296
  return __generator(this, function (_d) {
297
297
  switch (_d.label) {
298
- case 0: return [4 /*yield*/, inExistingProject(folderPath)];
298
+ case 0: return [4 /*yield*/, inExistingProject(folderName)];
299
299
  case 1:
300
300
  isExistingProject = _d.sent();
301
301
  if (!isExistingProject) {
@@ -322,7 +322,7 @@ exports.setupNpmProject = setupNpmProject;
322
322
  function setupGitIgnore(folderName) {
323
323
  var _a, _b;
324
324
  return __awaiter(this, void 0, void 0, function () {
325
- var gitIgnoreFilePath, gitIgnoreExists, gitIgnoreContent, newgitIgnoreContent, regExpSasjsBuild, regExpSasjsResults, regExpNodeModules;
325
+ var gitIgnoreFilePath, gitIgnoreExists, gitIgnoreContent, newgitIgnoreContent, regExpSasjsBuild, regExpSasjsResults, regExpNodeModules, regExpEnv;
326
326
  return __generator(this, function (_c) {
327
327
  switch (_c.label) {
328
328
  case 0:
@@ -335,18 +335,27 @@ function setupGitIgnore(folderName) {
335
335
  case 2:
336
336
  gitIgnoreContent = _c.sent();
337
337
  newgitIgnoreContent = gitIgnoreContent;
338
- regExpSasjsBuild = new RegExp("^sasjsbuild/", 'gm');
339
- newgitIgnoreContent = newgitIgnoreContent.match(regExpSasjsBuild)
340
- ? newgitIgnoreContent
341
- : "".concat(newgitIgnoreContent ? newgitIgnoreContent + '\n' : '', "sasjsbuild/\n");
342
- regExpSasjsResults = new RegExp("^sasjsresults/", 'gm');
343
- newgitIgnoreContent = newgitIgnoreContent.match(regExpSasjsResults)
344
- ? newgitIgnoreContent
345
- : "".concat(newgitIgnoreContent ? newgitIgnoreContent + '\n' : '', "sasjsresults/\n");
346
- regExpNodeModules = new RegExp("^node_modules/", 'gm');
347
- newgitIgnoreContent = newgitIgnoreContent.match(regExpNodeModules)
348
- ? newgitIgnoreContent
349
- : "".concat(newgitIgnoreContent + '\n', "node_modules/\n");
338
+ regExpSasjsBuild = new RegExp("^sasjsbuild", 'gm');
339
+ regExpSasjsResults = new RegExp("^sasjsresults", 'gm');
340
+ regExpNodeModules = new RegExp("^node_modules", 'gm');
341
+ regExpEnv = new RegExp("^.env*", 'gm');
342
+ if (newgitIgnoreContent) {
343
+ if (!regExpSasjsBuild.test(newgitIgnoreContent)) {
344
+ newgitIgnoreContent += '\nsasjsbuild';
345
+ }
346
+ if (!regExpSasjsResults.test(newgitIgnoreContent)) {
347
+ newgitIgnoreContent += '\nsasjsresults';
348
+ }
349
+ if (!regExpNodeModules.test(newgitIgnoreContent)) {
350
+ newgitIgnoreContent += '\nnode_modules';
351
+ }
352
+ if (!regExpEnv.test(newgitIgnoreContent)) {
353
+ newgitIgnoreContent += '\n.env*';
354
+ }
355
+ }
356
+ else {
357
+ newgitIgnoreContent = 'node_modules\nsasjsbuild\nsasjsresults\n.env*\n';
358
+ }
350
359
  if (!(gitIgnoreContent !== newgitIgnoreContent)) return [3 /*break*/, 4];
351
360
  return [4 /*yield*/, (0, utils_1.createFile)(gitIgnoreFilePath, newgitIgnoreContent)];
352
361
  case 3:
@@ -354,7 +363,7 @@ function setupGitIgnore(folderName) {
354
363
  (_a = process.logger) === null || _a === void 0 ? void 0 : _a.success('Existing .gitignore has been updated.');
355
364
  _c.label = 4;
356
365
  case 4: return [3 /*break*/, 7];
357
- case 5: return [4 /*yield*/, (0, utils_1.createFile)(gitIgnoreFilePath, 'node_modules/\nsasjsbuild/\nsasjsresults/\n.env*\n')];
366
+ case 5: return [4 /*yield*/, (0, utils_1.createFile)(gitIgnoreFilePath, 'node_modules\nsasjsbuild\nsasjsresults\n.env*\n')];
358
367
  case 6:
359
368
  _c.sent();
360
369
  (_b = process.logger) === null || _b === void 0 ? void 0 : _b.success('.gitignore file has been created.');
package/package.json CHANGED
@@ -52,7 +52,7 @@
52
52
  "dependencies": {
53
53
  "@sasjs/adapter": "4.1.0",
54
54
  "@sasjs/core": "4.45.4",
55
- "@sasjs/lint": "2.1.3",
55
+ "@sasjs/lint": "2.2.0",
56
56
  "@sasjs/utils": "2.52.0",
57
57
  "adm-zip": "0.5.9",
58
58
  "chalk": "4.1.2",
@@ -101,5 +101,5 @@
101
101
  "typescript": "4.5.4",
102
102
  "util": "0.12.4"
103
103
  },
104
- "version": "3.25.0"
104
+ "version": "3.27.0"
105
105
  }
package/CHANGELOG.md DELETED
@@ -1,30 +0,0 @@
1
- # Change Log
2
-
3
- Since March 7th, 2020, the changelog is managed by github releases. See [https://github.com/sasjs/cli/releases](https://github.com/sasjs/cli/releases).
4
-
5
- ## Changes Prior to March 7th 2020
6
-
7
- All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
8
-
9
- <a name="1.0.4"></a>
10
- ## [1.0.4](https://gitlab.com/macropeople/sasjs-cli/compare/v1.0.3...v1.0.4) (2020-03-07)
11
-
12
-
13
- ### Bug Fixes
14
-
15
- * redo comment stripping logic ([84a1a91](https://gitlab.com/macropeople/sasjs-cli/commit/84a1a91))
16
-
17
-
18
-
19
- <a name="1.0.3"></a>
20
- ## [1.0.3](https://gitlab.com/macropeople/sasjs-cli/compare/v1.0.2...v1.0.3) (2020-03-07)
21
-
22
-
23
-
24
- <a name="1.0.2"></a>
25
- ## [1.0.2](https://gitlab.com/macropeople/sasjs-cli/compare/v1.0.1...v1.0.2) (2020-03-07)
26
-
27
-
28
-
29
- <a name="1.0.1"></a>
30
- ## 1.0.1 (2020-03-07)