@sasjs/lint 2.4.0 → 2.4.2

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 (103) hide show
  1. package/.all-contributorsrc +11 -1
  2. package/.github/dependabot.yml +1 -1
  3. package/.github/reviewer-lottery.yml +0 -2
  4. package/.github/workflows/assign-reviewer.yml +2 -2
  5. package/README.md +41 -37
  6. package/format/formatFile.d.ts +1 -1
  7. package/format/formatFile.js +24 -72
  8. package/format/formatFile.js.map +1 -1
  9. package/format/formatFolder.d.ts +1 -1
  10. package/format/formatFolder.js +36 -104
  11. package/format/formatFolder.js.map +1 -1
  12. package/format/formatProject.js +10 -45
  13. package/format/formatProject.js.map +1 -1
  14. package/format/formatText.d.ts +1 -1
  15. package/format/formatText.js +6 -46
  16. package/format/formatText.js.map +1 -1
  17. package/format/index.js +5 -1
  18. package/format/index.js.map +1 -1
  19. package/format/shared.js +16 -16
  20. package/format/shared.js.map +1 -1
  21. package/formatExample.js +10 -6
  22. package/formatExample.js.map +1 -1
  23. package/index.js +5 -1
  24. package/index.js.map +1 -1
  25. package/lint/index.js +5 -1
  26. package/lint/index.js.map +1 -1
  27. package/lint/lintFile.d.ts +1 -1
  28. package/lint/lintFile.js +12 -76
  29. package/lint/lintFile.js.map +1 -1
  30. package/lint/lintFolder.d.ts +1 -1
  31. package/lint/lintFolder.js +23 -114
  32. package/lint/lintFolder.js.map +1 -1
  33. package/lint/lintProject.js +10 -45
  34. package/lint/lintProject.js.map +1 -1
  35. package/lint/lintText.js +6 -40
  36. package/lint/lintText.js.map +1 -1
  37. package/lint/shared.js +24 -45
  38. package/lint/shared.js.map +1 -1
  39. package/lintExample.js +45 -5
  40. package/lintExample.js.map +1 -1
  41. package/package.json +3 -3
  42. package/rules/file/hasDoxygenHeader.js +29 -29
  43. package/rules/file/hasDoxygenHeader.js.map +1 -1
  44. package/rules/file/hasMacroNameInMend.js +59 -59
  45. package/rules/file/hasMacroNameInMend.js.map +1 -1
  46. package/rules/file/hasMacroParentheses.js +25 -27
  47. package/rules/file/hasMacroParentheses.js.map +1 -1
  48. package/rules/file/hasRequiredMacroOptions.js +20 -20
  49. package/rules/file/hasRequiredMacroOptions.js.map +1 -1
  50. package/rules/file/lineEndings.js +27 -27
  51. package/rules/file/lineEndings.js.map +1 -1
  52. package/rules/file/noNestedMacros.js +23 -23
  53. package/rules/file/noNestedMacros.js.map +1 -1
  54. package/rules/file/strictMacroDefinition.js +52 -57
  55. package/rules/file/strictMacroDefinition.js.map +1 -1
  56. package/rules/line/indentationMultiple.js +16 -16
  57. package/rules/line/indentationMultiple.js.map +1 -1
  58. package/rules/line/maxLineLength.js +16 -16
  59. package/rules/line/maxLineLength.js.map +1 -1
  60. package/rules/line/noEncodedPasswords.js +18 -18
  61. package/rules/line/noEncodedPasswords.js.map +1 -1
  62. package/rules/line/noGremlins.js +29 -69
  63. package/rules/line/noGremlins.js.map +1 -1
  64. package/rules/line/noTabs.js +19 -19
  65. package/rules/line/noTabs.js.map +1 -1
  66. package/rules/line/noTrailingSpaces.js +16 -16
  67. package/rules/line/noTrailingSpaces.js.map +1 -1
  68. package/rules/path/lowerCaseFileNames.js +15 -15
  69. package/rules/path/lowerCaseFileNames.js.map +1 -1
  70. package/rules/path/noSpacesInFileNames.js +15 -15
  71. package/rules/path/noSpacesInFileNames.js.map +1 -1
  72. package/types/LintConfig.js +28 -68
  73. package/types/LintConfig.js.map +1 -1
  74. package/types/index.js +5 -1
  75. package/types/index.js.map +1 -1
  76. package/utils/asyncForEach.js +4 -46
  77. package/utils/asyncForEach.js.map +1 -1
  78. package/utils/getColumnNumber.js +3 -3
  79. package/utils/getColumnNumber.js.map +1 -1
  80. package/utils/getDataSectionsDetail.js +16 -38
  81. package/utils/getDataSectionsDetail.js.map +1 -1
  82. package/utils/getHeaderLinesCount.js +8 -30
  83. package/utils/getHeaderLinesCount.js.map +1 -1
  84. package/utils/getIndicesOf.js +3 -4
  85. package/utils/getIndicesOf.js.map +1 -1
  86. package/utils/getLintConfig.js +14 -52
  87. package/utils/getLintConfig.js.map +1 -1
  88. package/utils/getProjectRoot.js +22 -59
  89. package/utils/getProjectRoot.js.map +1 -1
  90. package/utils/index.js +5 -1
  91. package/utils/index.js.map +1 -1
  92. package/utils/isIgnored.d.ts +1 -1
  93. package/utils/isIgnored.js +20 -67
  94. package/utils/isIgnored.js.map +1 -1
  95. package/utils/listSasFiles.js +5 -39
  96. package/utils/listSasFiles.js.map +1 -1
  97. package/utils/parseMacros.d.ts +1 -1
  98. package/utils/parseMacros.js +29 -50
  99. package/utils/parseMacros.js.map +1 -1
  100. package/utils/splitText.js +4 -4
  101. package/utils/splitText.js.map +1 -1
  102. package/utils/trimComments.js +8 -10
  103. package/utils/trimComments.js.map +1 -1
package/lint/lintText.js CHANGED
@@ -8,52 +8,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
11
  Object.defineProperty(exports, "__esModule", { value: true });
39
12
  exports.lintText = void 0;
40
- var getLintConfig_1 = require("../utils/getLintConfig");
41
- var shared_1 = require("./shared");
13
+ const getLintConfig_1 = require("../utils/getLintConfig");
14
+ const shared_1 = require("./shared");
42
15
  /**
43
16
  * Analyses and produces a set of diagnostics for the given text content.
44
17
  * @param {string} text - the text content to be linted.
45
18
  * @returns {Diagnostic[]} array of diagnostic objects, each containing a warning, line number and column number.
46
19
  */
47
- var lintText = function (text) { return __awaiter(void 0, void 0, void 0, function () {
48
- var config;
49
- return __generator(this, function (_a) {
50
- switch (_a.label) {
51
- case 0: return [4 /*yield*/, getLintConfig_1.getLintConfig()];
52
- case 1:
53
- config = _a.sent();
54
- return [2 /*return*/, shared_1.processText(text, config)];
55
- }
56
- });
57
- }); };
20
+ const lintText = (text) => __awaiter(void 0, void 0, void 0, function* () {
21
+ const config = yield (0, getLintConfig_1.getLintConfig)();
22
+ return (0, shared_1.processText)(text, config);
23
+ });
58
24
  exports.lintText = lintText;
59
25
  //# sourceMappingURL=lintText.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lintText.js","sourceRoot":"","sources":["../../src/lint/lintText.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wDAAsD;AACtD,mCAAsC;AAEtC;;;;GAIG;AACI,IAAM,QAAQ,GAAG,UAAO,IAAY;;;;oBAC1B,qBAAM,6BAAa,EAAE,EAAA;;gBAA9B,MAAM,GAAG,SAAqB;gBACpC,sBAAO,oBAAW,CAAC,IAAI,EAAE,MAAM,CAAC,EAAA;;;KACjC,CAAA;AAHY,QAAA,QAAQ,YAGpB"}
1
+ {"version":3,"file":"lintText.js","sourceRoot":"","sources":["../../src/lint/lintText.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0DAAsD;AACtD,qCAAsC;AAEtC;;;;GAIG;AACI,MAAM,QAAQ,GAAG,CAAO,IAAY,EAAE,EAAE;IAC7C,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAa,GAAE,CAAA;IACpC,OAAO,IAAA,oBAAW,EAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AAClC,CAAC,CAAA,CAAA;AAHY,QAAA,QAAQ,YAGpB"}
package/lint/shared.js CHANGED
@@ -1,62 +1,41 @@
1
1
  "use strict";
2
- var __read = (this && this.__read) || function (o, n) {
3
- var m = typeof Symbol === "function" && o[Symbol.iterator];
4
- if (!m) return o;
5
- var i = m.call(o), r, ar = [], e;
6
- try {
7
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
- }
9
- catch (error) { e = { error: error }; }
10
- finally {
11
- try {
12
- if (r && !r.done && (m = i["return"])) m.call(i);
13
- }
14
- finally { if (e) throw e.error; }
15
- }
16
- return ar;
17
- };
18
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
19
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
20
- to[j] = from[i];
21
- return to;
22
- };
23
2
  Object.defineProperty(exports, "__esModule", { value: true });
24
3
  exports.processLine = exports.processFile = exports.processText = void 0;
25
- var utils_1 = require("../utils");
26
- var utils_2 = require("../utils");
27
- var processText = function (text, config) {
28
- var lines = utils_1.splitText(text, config);
29
- var headerLinesCount = utils_1.getHeaderLinesCount(text, config);
30
- var dataSections = utils_2.getDataSectionsDetail(text, config);
31
- var diagnostics = [];
32
- diagnostics.push.apply(diagnostics, __spreadArray([], __read(processContent(config, text))));
33
- lines.forEach(function (line, index) {
34
- var isHeaderLine = index + 1 <= headerLinesCount;
35
- var isDataLine = utils_2.checkIsDataLine(dataSections, index);
36
- diagnostics.push.apply(diagnostics, __spreadArray([], __read(exports.processLine(config, line, index + 1, { isHeaderLine: isHeaderLine, isDataLine: isDataLine }))));
4
+ const utils_1 = require("../utils");
5
+ const utils_2 = require("../utils");
6
+ const processText = (text, config) => {
7
+ const lines = (0, utils_1.splitText)(text, config);
8
+ const headerLinesCount = (0, utils_1.getHeaderLinesCount)(text, config);
9
+ const dataSections = (0, utils_2.getDataSectionsDetail)(text, config);
10
+ const diagnostics = [];
11
+ diagnostics.push(...processContent(config, text));
12
+ lines.forEach((line, index) => {
13
+ const isHeaderLine = index + 1 <= headerLinesCount;
14
+ const isDataLine = (0, utils_2.checkIsDataLine)(dataSections, index);
15
+ diagnostics.push(...(0, exports.processLine)(config, line, index + 1, { isHeaderLine, isDataLine }));
37
16
  });
38
17
  return diagnostics;
39
18
  };
40
19
  exports.processText = processText;
41
- var processFile = function (filePath, config) {
42
- var diagnostics = [];
43
- config.pathLintRules.forEach(function (rule) {
44
- diagnostics.push.apply(diagnostics, __spreadArray([], __read(rule.test(filePath, config))));
20
+ const processFile = (filePath, config) => {
21
+ const diagnostics = [];
22
+ config.pathLintRules.forEach((rule) => {
23
+ diagnostics.push(...rule.test(filePath, config));
45
24
  });
46
25
  return diagnostics;
47
26
  };
48
27
  exports.processFile = processFile;
49
- var processContent = function (config, content) {
50
- var diagnostics = [];
51
- config.fileLintRules.forEach(function (rule) {
52
- diagnostics.push.apply(diagnostics, __spreadArray([], __read(rule.test(content, config))));
28
+ const processContent = (config, content) => {
29
+ const diagnostics = [];
30
+ config.fileLintRules.forEach((rule) => {
31
+ diagnostics.push(...rule.test(content, config));
53
32
  });
54
33
  return diagnostics;
55
34
  };
56
- var processLine = function (config, line, lineNumber, options) {
57
- var diagnostics = [];
58
- config.lineLintRules.forEach(function (rule) {
59
- diagnostics.push.apply(diagnostics, __spreadArray([], __read(rule.test(line, lineNumber, config, options))));
35
+ const processLine = (config, line, lineNumber, options) => {
36
+ const diagnostics = [];
37
+ config.lineLintRules.forEach((rule) => {
38
+ diagnostics.push(...rule.test(line, lineNumber, config, options));
60
39
  });
61
40
  return diagnostics;
62
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/lint/shared.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AACA,kCAAyD;AACzD,kCAAiE;AAE1D,IAAM,WAAW,GAAG,UAAC,IAAY,EAAE,MAAkB;IAC1D,IAAM,KAAK,GAAG,iBAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACrC,IAAM,gBAAgB,GAAG,2BAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC1D,IAAM,YAAY,GAAG,6BAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACxD,IAAM,WAAW,GAAiB,EAAE,CAAA;IACpC,WAAW,CAAC,IAAI,OAAhB,WAAW,2BAAS,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,IAAC;IACjD,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,KAAK;QACxB,IAAM,YAAY,GAAG,KAAK,GAAG,CAAC,IAAI,gBAAgB,CAAA;QAClD,IAAM,UAAU,GAAG,uBAAe,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;QACvD,WAAW,CAAC,IAAI,OAAhB,WAAW,2BACN,mBAAW,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,YAAY,cAAA,EAAE,UAAU,YAAA,EAAE,CAAC,IACtE;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAfY,QAAA,WAAW,eAevB;AAEM,IAAM,WAAW,GAAG,UACzB,QAAgB,EAChB,MAAkB;IAElB,IAAM,WAAW,GAAiB,EAAE,CAAA;IACpC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,UAAC,IAAI;QAChC,WAAW,CAAC,IAAI,OAAhB,WAAW,2BAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAC;IAClD,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAVY,QAAA,WAAW,eAUvB;AAED,IAAM,cAAc,GAAG,UAAC,MAAkB,EAAE,OAAe;IACzD,IAAM,WAAW,GAAiB,EAAE,CAAA;IACpC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,UAAC,IAAI;QAChC,WAAW,CAAC,IAAI,OAAhB,WAAW,2BAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAC;IACjD,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAEM,IAAM,WAAW,GAAG,UACzB,MAAkB,EAClB,IAAY,EACZ,UAAkB,EAClB,OAA4B;IAE5B,IAAM,WAAW,GAAiB,EAAE,CAAA;IACpC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,UAAC,IAAI;QAChC,WAAW,CAAC,IAAI,OAAhB,WAAW,2BAAS,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,IAAC;IACnE,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAZY,QAAA,WAAW,eAYvB"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/lint/shared.ts"],"names":[],"mappings":";;;AACA,oCAAyD;AACzD,oCAAiE;AAE1D,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,MAAkB,EAAE,EAAE;IAC9D,MAAM,KAAK,GAAG,IAAA,iBAAS,EAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACrC,MAAM,gBAAgB,GAAG,IAAA,2BAAmB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC1D,MAAM,YAAY,GAAG,IAAA,6BAAqB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACxD,MAAM,WAAW,GAAiB,EAAE,CAAA;IACpC,WAAW,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IACjD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,MAAM,YAAY,GAAG,KAAK,GAAG,CAAC,IAAI,gBAAgB,CAAA;QAClD,MAAM,UAAU,GAAG,IAAA,uBAAe,EAAC,YAAY,EAAE,KAAK,CAAC,CAAA;QACvD,WAAW,CAAC,IAAI,CACd,GAAG,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CACtE,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAfY,QAAA,WAAW,eAevB;AAEM,MAAM,WAAW,GAAG,CACzB,QAAgB,EAChB,MAAkB,EACJ,EAAE;IAChB,MAAM,WAAW,GAAiB,EAAE,CAAA;IACpC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACpC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAVY,QAAA,WAAW,eAUvB;AAED,MAAM,cAAc,GAAG,CAAC,MAAkB,EAAE,OAAe,EAAgB,EAAE;IAC3E,MAAM,WAAW,GAAiB,EAAE,CAAA;IACpC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACpC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAEM,MAAM,WAAW,GAAG,CACzB,MAAkB,EAClB,IAAY,EACZ,UAAkB,EAClB,OAA4B,EACd,EAAE;IAChB,MAAM,WAAW,GAAiB,EAAE,CAAA;IACpC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACpC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAZY,QAAA,WAAW,eAYvB"}
package/lintExample.js CHANGED
@@ -3,17 +3,57 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var lint_1 = require("./lint");
7
- var path_1 = __importDefault(require("path"));
6
+ const lint_1 = require("./lint");
7
+ const path_1 = __importDefault(require("path"));
8
8
  /**
9
9
  * Example which tests a piece of text with all known violations.
10
10
  */
11
- var text = "/**\n @file\n @brief Returns an unused libref\n @details Use as follows:\n \n libname mclib0 (work);\n libname mclib1 (work);\n libname mclib2 (work);\n \n %let libref=%mf_getuniquelibref({SAS001});\n %put &=libref;\n \n which returns:\n \n > mclib3\n \n @param prefix= first part of libref. Remember that librefs can only be 8 characters,\n so a 7 letter prefix would mean that maxtries should be 10.\n @param maxtries= the last part of the libref. Provide an integer value.\n \n @version 9.2\n @author Allan Bowe\n **/\n \n \n%macro mf_getuniquelibref(prefix=mclib,maxtries=1000);\n %local x libref;\n %let x={SAS002};\n %do x=0 %to &maxtries;\n\t%if %sysfunc(libref(&prefix&x)) ne 0 %then %do;\n %let libref=&prefix&x;\n %let rc=%sysfunc(libname(&libref,%sysfunc(pathname(work))));\n %if &rc %then %put %sysfunc(sysmsg());\n &prefix&x\n %*put &sysmacroname: Libref &libref assigned as WORK and returned;\n %return;\n %end;\n %end;\n %put unable to find available libref in range &prefix.0-&maxtries;\n %mend;\n";
12
- lint_1.lintText(text).then(function (diagnostics) {
11
+ const text = `/**
12
+ @file
13
+ @brief Returns an unused libref
14
+ @details Use as follows:
15
+
16
+ libname mclib0 (work);
17
+ libname mclib1 (work);
18
+ libname mclib2 (work);
19
+
20
+ %let libref=%mf_getuniquelibref({SAS001});
21
+ %put &=libref;
22
+
23
+ which returns:
24
+
25
+ > mclib3
26
+
27
+ @param prefix= first part of libref. Remember that librefs can only be 8 characters,
28
+ so a 7 letter prefix would mean that maxtries should be 10.
29
+ @param maxtries= the last part of the libref. Provide an integer value.
30
+
31
+ @version 9.2
32
+ @author Allan Bowe
33
+ **/
34
+
35
+
36
+ %macro mf_getuniquelibref(prefix=mclib,maxtries=1000);
37
+ %local x libref;
38
+ %let x={SAS002};
39
+ %do x=0 %to &maxtries;
40
+ %if %sysfunc(libref(&prefix&x)) ne 0 %then %do;
41
+ %let libref=&prefix&x;
42
+ %let rc=%sysfunc(libname(&libref,%sysfunc(pathname(work))));
43
+ %if &rc %then %put %sysfunc(sysmsg());
44
+ &prefix&x
45
+ %*put &sysmacroname: Libref &libref assigned as WORK and returned;
46
+ %return;
47
+ %end;
48
+ %end;
49
+ %put unable to find available libref in range &prefix.0-&maxtries;
50
+ %mend;
51
+ `;
52
+ (0, lint_1.lintText)(text).then((diagnostics) => {
13
53
  console.log('Text lint results:');
14
54
  console.table(diagnostics);
15
55
  });
16
- lint_1.lintFile(path_1.default.join(__dirname, 'Example File.sas')).then(function (diagnostics) {
56
+ (0, lint_1.lintFile)(path_1.default.join(__dirname, 'Example File.sas')).then((diagnostics) => {
17
57
  console.log('File lint results:');
18
58
  console.table(diagnostics);
19
59
  });
@@ -1 +1 @@
1
- {"version":3,"file":"lintExample.js","sourceRoot":"","sources":["../src/lintExample.ts"],"names":[],"mappings":";;;;;AAAA,+BAA2C;AAC3C,8CAAuB;AAEvB;;GAEG;AAEH,IAAM,IAAI,GAAG,mjCAwCZ,CAAA;AAED,eAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAC,WAAW;IAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IACjC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEF,eAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAC,WAAW;IAClE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IACjC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"lintExample.js","sourceRoot":"","sources":["../src/lintExample.ts"],"names":[],"mappings":";;;;;AAAA,iCAA2C;AAC3C,gDAAuB;AAEvB;;GAEG;AAEH,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCZ,CAAA;AAED,IAAA,eAAQ,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;IAClC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IACjC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEF,IAAA,eAAQ,EAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;IACtE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IACjC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -43,13 +43,13 @@
43
43
  "@types/node": "18.11.18",
44
44
  "all-contributors-cli": "6.24.0",
45
45
  "jest": "29.3.1",
46
- "rimraf": "^3.0.2",
46
+ "rimraf": "^5.0.10",
47
47
  "ts-jest": "29.0.3",
48
48
  "typescript": "^4.3.2"
49
49
  },
50
50
  "dependencies": {
51
- "@sasjs/utils": "2.52.0",
51
+ "@sasjs/utils": "3.5.0",
52
52
  "ignore": "5.2.4"
53
53
  },
54
- "version": "2.4.0"
54
+ "version": "2.4.2"
55
55
  }
@@ -1,24 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.hasDoxygenHeader = void 0;
4
- var types_1 = require("../../types");
5
- var LineEndings_1 = require("../../types/LineEndings");
6
- var LintRuleType_1 = require("../../types/LintRuleType");
7
- var Severity_1 = require("../../types/Severity");
8
- var getLintConfig_1 = require("../../utils/getLintConfig");
9
- var name = 'hasDoxygenHeader';
10
- var description = 'Enforce the presence of a Doxygen header at the start of each file.';
11
- var message = 'File missing Doxygen header';
12
- var messageForSingleAsterisk = 'File not following Doxygen header style, use double asterisks';
13
- var test = function (value, config) {
4
+ const types_1 = require("../../types");
5
+ const LineEndings_1 = require("../../types/LineEndings");
6
+ const LintRuleType_1 = require("../../types/LintRuleType");
7
+ const Severity_1 = require("../../types/Severity");
8
+ const getLintConfig_1 = require("../../utils/getLintConfig");
9
+ const name = 'hasDoxygenHeader';
10
+ const description = 'Enforce the presence of a Doxygen header at the start of each file.';
11
+ const message = 'File missing Doxygen header';
12
+ const messageForSingleAsterisk = 'File not following Doxygen header style, use double asterisks';
13
+ const test = (value, config) => {
14
14
  var _a;
15
- var lineEnding = (config === null || config === void 0 ? void 0 : config.lineEndings) === LineEndings_1.LineEndings.CRLF ? '\r\n' : '\n';
16
- var severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) || Severity_1.Severity.Warning;
15
+ const lineEnding = (config === null || config === void 0 ? void 0 : config.lineEndings) === LineEndings_1.LineEndings.CRLF ? '\r\n' : '\n';
16
+ const severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) || Severity_1.Severity.Warning;
17
17
  try {
18
- var hasFileHeader = value.trimStart().startsWith('/**');
18
+ const hasFileHeader = value.trimStart().startsWith('/**');
19
19
  if (hasFileHeader)
20
20
  return [];
21
- var hasFileHeaderWithSingleAsterisk = value.trimStart().startsWith('/*');
21
+ const hasFileHeaderWithSingleAsterisk = value.trimStart().startsWith('/*');
22
22
  if (hasFileHeaderWithSingleAsterisk)
23
23
  return [
24
24
  {
@@ -27,52 +27,52 @@ var test = function (value, config) {
27
27
  .length + 1,
28
28
  startColumnNumber: 1,
29
29
  endColumnNumber: 1,
30
- severity: severity
30
+ severity
31
31
  }
32
32
  ];
33
33
  return [
34
34
  {
35
- message: message,
35
+ message,
36
36
  lineNumber: 1,
37
37
  startColumnNumber: 1,
38
38
  endColumnNumber: 1,
39
- severity: severity
39
+ severity
40
40
  }
41
41
  ];
42
42
  }
43
43
  catch (e) {
44
44
  return [
45
45
  {
46
- message: message,
46
+ message,
47
47
  lineNumber: 1,
48
48
  startColumnNumber: 1,
49
49
  endColumnNumber: 1,
50
- severity: severity
50
+ severity
51
51
  }
52
52
  ];
53
53
  }
54
54
  };
55
- var fix = function (value, config) {
56
- var result = test(value, config);
55
+ const fix = (value, config) => {
56
+ const result = test(value, config);
57
57
  if (result.length === 0) {
58
58
  return value;
59
59
  }
60
60
  else if (result[0].message == messageForSingleAsterisk)
61
61
  return value.replace('/*', '/**');
62
62
  config = config || new types_1.LintConfig(getLintConfig_1.DefaultLintConfiguration);
63
- var lineEndingConfig = (config === null || config === void 0 ? void 0 : config.lineEndings) || LineEndings_1.LineEndings.LF;
64
- var lineEnding = lineEndingConfig === LineEndings_1.LineEndings.LF ? '\n' : '\r\n';
65
- return "" + (config === null || config === void 0 ? void 0 : config.defaultHeader.replace(/{lineEnding}/g, lineEnding)) + lineEnding + value;
63
+ const lineEndingConfig = (config === null || config === void 0 ? void 0 : config.lineEndings) || LineEndings_1.LineEndings.LF;
64
+ const lineEnding = lineEndingConfig === LineEndings_1.LineEndings.LF ? '\n' : '\r\n';
65
+ return `${config === null || config === void 0 ? void 0 : config.defaultHeader.replace(/{lineEnding}/g, lineEnding)}${lineEnding}${value}`;
66
66
  };
67
67
  /**
68
68
  * Lint rule that checks for the presence of a Doxygen header in a given file.
69
69
  */
70
70
  exports.hasDoxygenHeader = {
71
71
  type: LintRuleType_1.LintRuleType.File,
72
- name: name,
73
- description: description,
74
- message: message,
75
- test: test,
76
- fix: fix
72
+ name,
73
+ description,
74
+ message,
75
+ test,
76
+ fix
77
77
  };
78
78
  //# sourceMappingURL=hasDoxygenHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasDoxygenHeader.js","sourceRoot":"","sources":["../../../src/rules/file/hasDoxygenHeader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hasDoxygenHeader.js","sourceRoot":"","sources":["../../../src/rules/file/hasDoxygenHeader.ts"],"names":[],"mappings":"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"}
@@ -1,78 +1,78 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.hasMacroNameInMend = void 0;
4
- var LintRuleType_1 = require("../../types/LintRuleType");
5
- var Severity_1 = require("../../types/Severity");
6
- var getColumnNumber_1 = require("../../utils/getColumnNumber");
7
- var LineEndings_1 = require("../../types/LineEndings");
8
- var parseMacros_1 = require("../../utils/parseMacros");
9
- var name = 'hasMacroNameInMend';
10
- var description = 'Enforces the presence of the macro name in each %mend statement.';
11
- var message = '%mend statement has missing or incorrect macro name';
12
- var test = function (value, config) {
13
- var lineEnding = (config === null || config === void 0 ? void 0 : config.lineEndings) === LineEndings_1.LineEndings.CRLF ? '\r\n' : '\n';
14
- var lines = value ? value.split(lineEnding) : [];
15
- var macros = parseMacros_1.parseMacros(value, config);
16
- var severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) || Severity_1.Severity.Warning;
17
- var diagnostics = [];
18
- macros.forEach(function (macro) {
4
+ const LintRuleType_1 = require("../../types/LintRuleType");
5
+ const Severity_1 = require("../../types/Severity");
6
+ const getColumnNumber_1 = require("../../utils/getColumnNumber");
7
+ const LineEndings_1 = require("../../types/LineEndings");
8
+ const parseMacros_1 = require("../../utils/parseMacros");
9
+ const name = 'hasMacroNameInMend';
10
+ const description = 'Enforces the presence of the macro name in each %mend statement.';
11
+ const message = '%mend statement has missing or incorrect macro name';
12
+ const test = (value, config) => {
13
+ const lineEnding = (config === null || config === void 0 ? void 0 : config.lineEndings) === LineEndings_1.LineEndings.CRLF ? '\r\n' : '\n';
14
+ const lines = value ? value.split(lineEnding) : [];
15
+ const macros = (0, parseMacros_1.parseMacros)(value, config);
16
+ const severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) || Severity_1.Severity.Warning;
17
+ const diagnostics = [];
18
+ macros.forEach((macro) => {
19
19
  if (macro.startLineNumbers.length === 0 && macro.endLineNumber !== null) {
20
- var endLine = lines[macro.endLineNumber - 1];
20
+ const endLine = lines[macro.endLineNumber - 1];
21
21
  diagnostics.push({
22
- message: "%mend statement is redundant",
22
+ message: `%mend statement is redundant`,
23
23
  lineNumber: macro.endLineNumber,
24
- startColumnNumber: getColumnNumber_1.getColumnNumber(endLine, '%mend'),
25
- endColumnNumber: getColumnNumber_1.getColumnNumber(endLine, '%mend') + macro.termination.length,
26
- severity: severity
24
+ startColumnNumber: (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend'),
25
+ endColumnNumber: (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend') + macro.termination.length,
26
+ severity
27
27
  });
28
28
  }
29
29
  else if (macro.endLineNumber === null &&
30
30
  macro.startLineNumbers.length !== 0) {
31
31
  diagnostics.push({
32
- message: "Missing %mend statement for macro - " + macro.name,
32
+ message: `Missing %mend statement for macro - ${macro.name}`,
33
33
  lineNumber: macro.startLineNumbers[0],
34
34
  startColumnNumber: 1,
35
35
  endColumnNumber: 1,
36
- severity: severity
36
+ severity
37
37
  });
38
38
  }
39
39
  else if (macro.mismatchedMendMacroName) {
40
- var endLine = lines[macro.endLineNumber - 1];
40
+ const endLine = lines[macro.endLineNumber - 1];
41
41
  diagnostics.push({
42
- message: "%mend statement has mismatched macro name, it should be '" + macro.name + "'",
42
+ message: `%mend statement has mismatched macro name, it should be '${macro.name}'`,
43
43
  lineNumber: macro.endLineNumber,
44
- startColumnNumber: getColumnNumber_1.getColumnNumber(endLine, macro.mismatchedMendMacroName),
45
- endColumnNumber: getColumnNumber_1.getColumnNumber(endLine, macro.mismatchedMendMacroName) +
44
+ startColumnNumber: (0, getColumnNumber_1.getColumnNumber)(endLine, macro.mismatchedMendMacroName),
45
+ endColumnNumber: (0, getColumnNumber_1.getColumnNumber)(endLine, macro.mismatchedMendMacroName) +
46
46
  macro.mismatchedMendMacroName.length -
47
47
  1,
48
- severity: severity
48
+ severity
49
49
  });
50
50
  }
51
51
  else if (!macro.hasMacroNameInMend) {
52
- var endLine = lines[macro.endLineNumber - 1];
52
+ const endLine = lines[macro.endLineNumber - 1];
53
53
  diagnostics.push({
54
- message: "%mend statement is missing macro name - " + macro.name,
54
+ message: `%mend statement is missing macro name - ${macro.name}`,
55
55
  lineNumber: macro.endLineNumber,
56
- startColumnNumber: getColumnNumber_1.getColumnNumber(endLine, '%mend'),
57
- endColumnNumber: getColumnNumber_1.getColumnNumber(endLine, '%mend') + 6,
58
- severity: severity
56
+ startColumnNumber: (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend'),
57
+ endColumnNumber: (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend') + 6,
58
+ severity
59
59
  });
60
60
  }
61
61
  });
62
62
  return diagnostics;
63
63
  };
64
- var fix = function (value, config) {
65
- var lineEnding = (config === null || config === void 0 ? void 0 : config.lineEndings) === LineEndings_1.LineEndings.CRLF ? '\r\n' : '\n';
66
- var lines = value ? value.split(lineEnding) : [];
67
- var macros = parseMacros_1.parseMacros(value, config);
68
- macros.forEach(function (macro) {
64
+ const fix = (value, config) => {
65
+ const lineEnding = (config === null || config === void 0 ? void 0 : config.lineEndings) === LineEndings_1.LineEndings.CRLF ? '\r\n' : '\n';
66
+ const lines = value ? value.split(lineEnding) : [];
67
+ const macros = (0, parseMacros_1.parseMacros)(value, config);
68
+ macros.forEach((macro) => {
69
69
  if (macro.startLineNumbers.length === 0 && macro.endLineNumber !== null) {
70
70
  // %mend statement is redundant
71
- var endLine = lines[macro.endLineNumber - 1];
72
- var startColumnNumber = getColumnNumber_1.getColumnNumber(endLine, '%mend');
73
- var endColumnNumber = getColumnNumber_1.getColumnNumber(endLine, '%mend') + macro.termination.length;
74
- var beforeStatement = endLine.slice(0, startColumnNumber - 1);
75
- var afterStatement = endLine.slice(endColumnNumber);
71
+ const endLine = lines[macro.endLineNumber - 1];
72
+ const startColumnNumber = (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend');
73
+ const endColumnNumber = (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend') + macro.termination.length;
74
+ const beforeStatement = endLine.slice(0, startColumnNumber - 1);
75
+ const afterStatement = endLine.slice(endColumnNumber);
76
76
  lines[macro.endLineNumber - 1] = beforeStatement + afterStatement;
77
77
  }
78
78
  else if (macro.endLineNumber === null &&
@@ -81,28 +81,28 @@ var fix = function (value, config) {
81
81
  }
82
82
  else if (macro.mismatchedMendMacroName) {
83
83
  // mismatched macro name
84
- var endLine = lines[macro.endLineNumber - 1];
85
- var startColumnNumber = getColumnNumber_1.getColumnNumber(endLine, macro.mismatchedMendMacroName);
86
- var endColumnNumber = getColumnNumber_1.getColumnNumber(endLine, macro.mismatchedMendMacroName) +
84
+ const endLine = lines[macro.endLineNumber - 1];
85
+ const startColumnNumber = (0, getColumnNumber_1.getColumnNumber)(endLine, macro.mismatchedMendMacroName);
86
+ const endColumnNumber = (0, getColumnNumber_1.getColumnNumber)(endLine, macro.mismatchedMendMacroName) +
87
87
  macro.mismatchedMendMacroName.length -
88
88
  1;
89
- var beforeMacroName = endLine.slice(0, startColumnNumber - 1);
90
- var afterMacroName = endLine.slice(endColumnNumber);
89
+ const beforeMacroName = endLine.slice(0, startColumnNumber - 1);
90
+ const afterMacroName = endLine.slice(endColumnNumber);
91
91
  lines[macro.endLineNumber - 1] =
92
92
  beforeMacroName + macro.name + afterMacroName;
93
93
  }
94
94
  else if (!macro.hasMacroNameInMend) {
95
95
  // %mend statement is missing macro name
96
- var endLine = lines[macro.endLineNumber - 1];
97
- var startColumnNumber = getColumnNumber_1.getColumnNumber(endLine, '%mend');
98
- var endColumnNumber = getColumnNumber_1.getColumnNumber(endLine, '%mend') + 4;
99
- var beforeStatement = endLine.slice(0, startColumnNumber - 1);
100
- var afterStatement = endLine.slice(endColumnNumber);
96
+ const endLine = lines[macro.endLineNumber - 1];
97
+ const startColumnNumber = (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend');
98
+ const endColumnNumber = (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend') + 4;
99
+ const beforeStatement = endLine.slice(0, startColumnNumber - 1);
100
+ const afterStatement = endLine.slice(endColumnNumber);
101
101
  lines[macro.endLineNumber - 1] =
102
- beforeStatement + ("%mend " + macro.name) + afterStatement;
102
+ beforeStatement + `%mend ${macro.name}` + afterStatement;
103
103
  }
104
104
  });
105
- var formattedText = lines.join(lineEnding);
105
+ const formattedText = lines.join(lineEnding);
106
106
  return formattedText;
107
107
  };
108
108
  /**
@@ -110,10 +110,10 @@ var fix = function (value, config) {
110
110
  */
111
111
  exports.hasMacroNameInMend = {
112
112
  type: LintRuleType_1.LintRuleType.File,
113
- name: name,
114
- description: description,
115
- message: message,
116
- test: test,
117
- fix: fix
113
+ name,
114
+ description,
115
+ message,
116
+ test,
117
+ fix
118
118
  };
119
119
  //# sourceMappingURL=hasMacroNameInMend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasMacroNameInMend.js","sourceRoot":"","sources":["../../../src/rules/file/hasMacroNameInMend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hasMacroNameInMend.js","sourceRoot":"","sources":["../../../src/rules/file/hasMacroNameInMend.ts"],"names":[],"mappings":"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"}