@appland/scanner 1.56.0 → 1.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/built/algorithms/dataStructures/graph/Graph.js +53 -62
  3. package/built/algorithms/dataStructures/graph/GraphEdge.js +13 -16
  4. package/built/algorithms/dataStructures/graph/GraphVertex.js +37 -42
  5. package/built/algorithms/dataStructures/linked-list/LinkedList.js +33 -38
  6. package/built/algorithms/dataStructures/linked-list/LinkedListNode.js +6 -10
  7. package/built/algorithms/graph/depth-first-search/index.js +7 -8
  8. package/built/algorithms/graph/detect-cycle/index.js +15 -16
  9. package/built/algorithms/utils/Comparator.js +19 -21
  10. package/built/analyzer/recordSecrets.js +7 -30
  11. package/built/analyzer/secretsRegexes.js +8 -9
  12. package/built/appMapIndex.js +19 -21
  13. package/built/check.js +17 -21
  14. package/built/checkInstance.js +26 -48
  15. package/built/cli/ci/command.js +61 -156
  16. package/built/cli/ci/options.js +0 -1
  17. package/built/cli/codeVersionArgs.js +0 -1
  18. package/built/cli/exitCode.js +0 -1
  19. package/built/cli/fail.js +2 -3
  20. package/built/cli/merge/command.js +21 -63
  21. package/built/cli/merge/options.js +0 -1
  22. package/built/cli/reportUploadURL.js +2 -3
  23. package/built/cli/resolveAppId.js +34 -85
  24. package/built/cli/scan/command.js +52 -94
  25. package/built/cli/scan/formatReport.js +16 -89
  26. package/built/cli/scan/options.js +0 -1
  27. package/built/cli/scan/scanner.js +38 -117
  28. package/built/cli/scan/singleScan.js +61 -109
  29. package/built/cli/scan/watchScan.js +53 -85
  30. package/built/cli/scan.js +39 -132
  31. package/built/cli/scanArgs.js +0 -1
  32. package/built/cli/scanOptions.js +0 -1
  33. package/built/cli/updateCommitStatus.js +10 -47
  34. package/built/cli/upload/command.js +20 -64
  35. package/built/cli/upload/options.js +0 -1
  36. package/built/cli/upload/pruneAppMap.js +20 -0
  37. package/built/cli/upload.js +93 -172
  38. package/built/cli/validateFile.js +13 -52
  39. package/built/cli.js +34 -21
  40. package/built/configuration/configurationProvider.js +151 -233
  41. package/built/configuration/schema/options.json +76 -76
  42. package/built/configuration/types/checkConfig.js +0 -1
  43. package/built/configuration/types/configuration.js +0 -1
  44. package/built/configuration/types/matchEventConfig.js +0 -1
  45. package/built/configuration/types/matchPatternConfig.js +0 -1
  46. package/built/database/index.js +35 -128
  47. package/built/database/visit.js +20 -68
  48. package/built/errors.js +4 -30
  49. package/built/eventUtil.js +10 -35
  50. package/built/findings.js +3 -4
  51. package/built/integration/appland/app/exists.js +33 -76
  52. package/built/integration/appland/app/listFindingStatus.js +3 -36
  53. package/built/integration/appland/appMap/create.js +38 -89
  54. package/built/integration/appland/location.js +0 -1
  55. package/built/integration/appland/mapset/create.js +34 -85
  56. package/built/integration/appland/retry.js +10 -11
  57. package/built/integration/appland/retryOptions.js +0 -1
  58. package/built/integration/appland/scannerJob/create.js +34 -84
  59. package/built/integration/appland/scannerJob/merge.js +28 -74
  60. package/built/integration/appland/scannerJob.js +0 -1
  61. package/built/integration/github/commitStatus.js +3 -4
  62. package/built/integration/vars.js +1 -2
  63. package/built/openapi/index.js +39 -83
  64. package/built/report/appMapMetadata.js +0 -1
  65. package/built/report/findingSummary.js +0 -1
  66. package/built/report/findingsReport.js +14 -16
  67. package/built/report/scanResults.js +50 -72
  68. package/built/report/scanSummary.js +0 -1
  69. package/built/report/summaryReport.js +12 -13
  70. package/built/ruleChecker.js +146 -297
  71. package/built/rules/authzBeforeAuthn.js +25 -59
  72. package/built/rules/circularDependency.js +69 -101
  73. package/built/rules/deserializationOfUntrustedData.js +29 -63
  74. package/built/rules/execOfUntrustedCommand.js +28 -62
  75. package/built/rules/http-500/metadata.js +0 -1
  76. package/built/rules/http-500/rule.js +2 -3
  77. package/built/rules/illegalPackageDependency.js +16 -18
  78. package/built/rules/incompatibleHttpClientRequest.js +30 -69
  79. package/built/rules/insecureCompare.js +12 -13
  80. package/built/rules/jobNotCancelled.js +13 -45
  81. package/built/rules/lib/hasParameterOrReceiver.js +4 -7
  82. package/built/rules/lib/matchEvent.js +12 -13
  83. package/built/rules/lib/matchPattern.js +6 -7
  84. package/built/rules/lib/metadata.js +0 -1
  85. package/built/rules/lib/parseRuleDescription.js +5 -6
  86. package/built/rules/lib/precedingEvents.js +7 -75
  87. package/built/rules/lib/rpcWithoutProtection.js +5 -28
  88. package/built/rules/lib/sanitizesData.js +0 -1
  89. package/built/rules/lib/util.js +34 -73
  90. package/built/rules/logoutWithoutSessionReset.js +24 -58
  91. package/built/rules/missingAuthentication.js +28 -28
  92. package/built/rules/missingContentType.js +8 -9
  93. package/built/rules/nPlusOneQuery.js +35 -87
  94. package/built/rules/queryFromInvalidPackage.js +17 -19
  95. package/built/rules/queryFromView.js +13 -16
  96. package/built/rules/rpcWithoutCircuitBreaker.js +14 -84
  97. package/built/rules/saveWithoutValidation.js +8 -9
  98. package/built/rules/secretInLog.js +29 -92
  99. package/built/rules/slowFunctionCall.js +16 -20
  100. package/built/rules/slowHttpServerRequest.js +9 -11
  101. package/built/rules/slowQuery.js +9 -12
  102. package/built/rules/tooManyJoins.js +26 -51
  103. package/built/rules/tooManyUpdates.js +25 -105
  104. package/built/rules/unbatchedMaterializedQuery.js +26 -30
  105. package/built/rules/updateInGetRequest.js +30 -45
  106. package/built/scope/commandScope.js +24 -144
  107. package/built/scope/httpClientRequestScope.js +11 -98
  108. package/built/scope/httpServerRequestScope.js +11 -98
  109. package/built/scope/rootScope.js +11 -98
  110. package/built/scope/scopeImpl.js +10 -82
  111. package/built/scope/scopeIterator.js +6 -10
  112. package/built/scope/sqlTransactionScope.js +24 -122
  113. package/built/sqlWarning.js +9 -35
  114. package/built/telemetry.js +215 -0
  115. package/built/wellKnownLabels.js +0 -1
  116. package/package.json +7 -3
  117. package/built/algorithms/dataStructures/graph/Graph.js.map +0 -1
  118. package/built/algorithms/dataStructures/graph/GraphEdge.js.map +0 -1
  119. package/built/algorithms/dataStructures/graph/GraphVertex.js.map +0 -1
  120. package/built/algorithms/dataStructures/linked-list/LinkedList.js.map +0 -1
  121. package/built/algorithms/dataStructures/linked-list/LinkedListNode.js.map +0 -1
  122. package/built/algorithms/graph/depth-first-search/index.js.map +0 -1
  123. package/built/algorithms/graph/detect-cycle/index.js.map +0 -1
  124. package/built/algorithms/utils/Comparator.js.map +0 -1
  125. package/built/analyzer/recordSecrets.js.map +0 -1
  126. package/built/analyzer/secretsRegexes.js.map +0 -1
  127. package/built/appMapIndex.js.map +0 -1
  128. package/built/check.js.map +0 -1
  129. package/built/checkInstance.js.map +0 -1
  130. package/built/cli/ci/command.js.map +0 -1
  131. package/built/cli/ci/options.js.map +0 -1
  132. package/built/cli/codeVersionArgs.js.map +0 -1
  133. package/built/cli/exitCode.js.map +0 -1
  134. package/built/cli/fail.js.map +0 -1
  135. package/built/cli/merge/command.js.map +0 -1
  136. package/built/cli/merge/options.js.map +0 -1
  137. package/built/cli/reportUploadURL.js.map +0 -1
  138. package/built/cli/resolveAppId.js.map +0 -1
  139. package/built/cli/scan/command.js.map +0 -1
  140. package/built/cli/scan/formatReport.js.map +0 -1
  141. package/built/cli/scan/options.js.map +0 -1
  142. package/built/cli/scan/scanner.js.map +0 -1
  143. package/built/cli/scan/singleScan.js.map +0 -1
  144. package/built/cli/scan/watchScan.js.map +0 -1
  145. package/built/cli/scan.js.map +0 -1
  146. package/built/cli/scanArgs.js.map +0 -1
  147. package/built/cli/scanOptions.js.map +0 -1
  148. package/built/cli/updateCommitStatus.js.map +0 -1
  149. package/built/cli/upload/command.js.map +0 -1
  150. package/built/cli/upload/options.js.map +0 -1
  151. package/built/cli/upload.js.map +0 -1
  152. package/built/cli/validateFile.js.map +0 -1
  153. package/built/cli.js.map +0 -1
  154. package/built/configuration/configurationProvider.js.map +0 -1
  155. package/built/configuration/types/checkConfig.js.map +0 -1
  156. package/built/configuration/types/configuration.js.map +0 -1
  157. package/built/configuration/types/matchEventConfig.js.map +0 -1
  158. package/built/configuration/types/matchPatternConfig.js.map +0 -1
  159. package/built/database/index.js.map +0 -1
  160. package/built/database/visit.js.map +0 -1
  161. package/built/errors.js.map +0 -1
  162. package/built/eventUtil.js.map +0 -1
  163. package/built/findings.js.map +0 -1
  164. package/built/integration/appland/app/exists.js.map +0 -1
  165. package/built/integration/appland/app/listFindingStatus.js.map +0 -1
  166. package/built/integration/appland/appMap/create.js.map +0 -1
  167. package/built/integration/appland/location.js.map +0 -1
  168. package/built/integration/appland/mapset/create.js.map +0 -1
  169. package/built/integration/appland/retry.js.map +0 -1
  170. package/built/integration/appland/retryOptions.js.map +0 -1
  171. package/built/integration/appland/scannerJob/create.js.map +0 -1
  172. package/built/integration/appland/scannerJob/merge.js.map +0 -1
  173. package/built/integration/appland/scannerJob.js.map +0 -1
  174. package/built/integration/github/commitStatus.js.map +0 -1
  175. package/built/integration/vars.js.map +0 -1
  176. package/built/openapi/index.js.map +0 -1
  177. package/built/openapi/method.js +0 -120
  178. package/built/openapi/method.js.map +0 -1
  179. package/built/openapi/model.js +0 -49
  180. package/built/openapi/model.js.map +0 -1
  181. package/built/openapi/path.js +0 -36
  182. package/built/openapi/path.js.map +0 -1
  183. package/built/openapi/provider.js +0 -133
  184. package/built/openapi/provider.js.map +0 -1
  185. package/built/openapi/response.js +0 -59
  186. package/built/openapi/response.js.map +0 -1
  187. package/built/openapi/rpcRequest.js +0 -130
  188. package/built/openapi/rpcRequest.js.map +0 -1
  189. package/built/openapi/schema.js +0 -42
  190. package/built/openapi/schema.js.map +0 -1
  191. package/built/openapi/securitySchemes.js +0 -32
  192. package/built/openapi/securitySchemes.js.map +0 -1
  193. package/built/openapi/statusCodes.js +0 -68
  194. package/built/openapi/statusCodes.js.map +0 -1
  195. package/built/openapi/util.js +0 -91
  196. package/built/openapi/util.js.map +0 -1
  197. package/built/report/appMapMetadata.js.map +0 -1
  198. package/built/report/findingSummary.js.map +0 -1
  199. package/built/report/findingsReport.js.map +0 -1
  200. package/built/report/scanResults.js.map +0 -1
  201. package/built/report/scanSummary.js.map +0 -1
  202. package/built/report/summaryReport.js.map +0 -1
  203. package/built/ruleChecker.js.map +0 -1
  204. package/built/rules/authzBeforeAuthn.js.map +0 -1
  205. package/built/rules/circularDependency.js.map +0 -1
  206. package/built/rules/deserializationOfUntrustedData.js.map +0 -1
  207. package/built/rules/execOfUntrustedCommand.js.map +0 -1
  208. package/built/rules/http-500/metadata.js.map +0 -1
  209. package/built/rules/http-500/rule.js.map +0 -1
  210. package/built/rules/illegalPackageDependency.js.map +0 -1
  211. package/built/rules/incompatibleHttpClientRequest.js.map +0 -1
  212. package/built/rules/insecureCompare.js.map +0 -1
  213. package/built/rules/jobNotCancelled.js.map +0 -1
  214. package/built/rules/lib/hasParameterOrReceiver.js.map +0 -1
  215. package/built/rules/lib/matchEvent.js.map +0 -1
  216. package/built/rules/lib/matchPattern.js.map +0 -1
  217. package/built/rules/lib/metadata.js.map +0 -1
  218. package/built/rules/lib/parseRuleDescription.js.map +0 -1
  219. package/built/rules/lib/precedingEvents.js.map +0 -1
  220. package/built/rules/lib/rpcWithoutProtection.js.map +0 -1
  221. package/built/rules/lib/sanitizesData.js.map +0 -1
  222. package/built/rules/lib/util.js.map +0 -1
  223. package/built/rules/logoutWithoutSessionReset.js.map +0 -1
  224. package/built/rules/missingAuthentication.js.map +0 -1
  225. package/built/rules/missingContentType.js.map +0 -1
  226. package/built/rules/nPlusOneQuery.js.map +0 -1
  227. package/built/rules/queryFromInvalidPackage.js.map +0 -1
  228. package/built/rules/queryFromView.js.map +0 -1
  229. package/built/rules/rpcWithoutCircuitBreaker.js.map +0 -1
  230. package/built/rules/saveWithoutValidation.js.map +0 -1
  231. package/built/rules/secretInLog.js.map +0 -1
  232. package/built/rules/slowFunctionCall.js.map +0 -1
  233. package/built/rules/slowHttpServerRequest.js.map +0 -1
  234. package/built/rules/slowQuery.js.map +0 -1
  235. package/built/rules/tooManyJoins.js.map +0 -1
  236. package/built/rules/tooManyUpdates.js.map +0 -1
  237. package/built/rules/unbatchedMaterializedQuery.js.map +0 -1
  238. package/built/rules/updateInGetRequest.js.map +0 -1
  239. package/built/scope/commandScope.js.map +0 -1
  240. package/built/scope/httpClientRequestScope.js.map +0 -1
  241. package/built/scope/httpServerRequestScope.js.map +0 -1
  242. package/built/scope/rootScope.js.map +0 -1
  243. package/built/scope/scopeImpl.js.map +0 -1
  244. package/built/scope/scopeIterator.js.map +0 -1
  245. package/built/scope/sqlTransactionScope.js.map +0 -1
  246. package/built/sqlWarning.js.map +0 -1
  247. package/built/wellKnownLabels.js.map +0 -1
@@ -1,81 +1,61 @@
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);
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScanResults = void 0;
4
+ class DistinctItems {
5
+ constructor() {
6
+ this.members = {};
8
7
  }
9
- catch (error) { e = { error: error }; }
10
- finally {
11
- try {
12
- if (r && !r.done && (m = i["return"])) m.call(i);
8
+ push(...items) {
9
+ for (const item of items) {
10
+ if (item === undefined)
11
+ continue;
12
+ const key = JSON.stringify(item);
13
+ if (!(key in this.members))
14
+ this.members[key] = item;
13
15
  }
14
- finally { if (e) throw e.error; }
15
16
  }
16
- return ar;
17
- };
18
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
- if (ar || !(i in from)) {
21
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
- ar[i] = from[i];
23
- }
17
+ [Symbol.iterator]() {
18
+ return Object.values(this.members)[Symbol.iterator]();
24
19
  }
25
- return to.concat(ar || Array.prototype.slice.call(from));
26
- };
27
- Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.ScanResults = void 0;
20
+ }
29
21
  function collectMetadata(metadata) {
30
- var uniqueApps = new Set();
31
- var uniqueLabels = new Set();
32
- var uniqueClients = new Set();
33
- var uniqueFrameworks = new Set();
34
- var uniqueGit = new Set();
35
- var uniqueLanguages = new Set();
36
- var uniqueRecorders = new Set();
37
- var uniqueExceptions = new Set();
38
- function pushDistinctItem(unique, members, item) {
39
- if (item === undefined) {
40
- return;
41
- }
42
- var key = JSON.stringify(item);
43
- if (!unique.has(key)) {
44
- unique.add(key);
45
- members.push(item);
46
- }
47
- }
48
- function pushDistinctItems(unique, members, items) {
49
- (items || []).forEach(function (item) { return pushDistinctItem(unique, members, item); });
22
+ var _a, _b;
23
+ const uniqueApps = new DistinctItems();
24
+ const uniqueLabels = new DistinctItems();
25
+ const uniqueClients = new DistinctItems();
26
+ const uniqueFrameworks = new DistinctItems();
27
+ const uniqueGit = new DistinctItems();
28
+ const uniqueLanguages = new DistinctItems();
29
+ const uniqueRecorders = new DistinctItems();
30
+ const uniqueExceptions = new DistinctItems();
31
+ for (const item of metadata) {
32
+ uniqueApps.push(item.app);
33
+ uniqueLabels.push(...((_a = item.labels) !== null && _a !== void 0 ? _a : []));
34
+ uniqueClients.push(item.client);
35
+ uniqueFrameworks.push(...((_b = item.frameworks) !== null && _b !== void 0 ? _b : []));
36
+ uniqueGit.push(item.git);
37
+ uniqueLanguages.push(item.language);
38
+ uniqueRecorders.push(item.recorder);
39
+ uniqueExceptions.push(item.exception);
50
40
  }
51
- return metadata.reduce(function (memo, appMapMetadata) {
52
- pushDistinctItem(uniqueApps, memo.apps, appMapMetadata.app);
53
- pushDistinctItems(uniqueLabels, memo.labels, appMapMetadata.labels);
54
- pushDistinctItem(uniqueClients, memo.clients, appMapMetadata.client);
55
- pushDistinctItems(uniqueFrameworks, memo.frameworks, appMapMetadata.frameworks);
56
- pushDistinctItem(uniqueGit, memo.git, appMapMetadata.git);
57
- pushDistinctItem(uniqueLanguages, memo.languages, appMapMetadata.language);
58
- pushDistinctItem(uniqueRecorders, memo.recorders, appMapMetadata.recorder);
59
- pushDistinctItem(uniqueExceptions, memo.recorders, appMapMetadata.exception);
60
- return memo;
61
- }, {
62
- labels: [],
63
- apps: [],
64
- clients: [],
65
- frameworks: [],
66
- git: [],
67
- languages: [],
68
- recorders: [],
41
+ return {
42
+ labels: [...uniqueLabels],
43
+ apps: [...uniqueApps],
44
+ clients: [...uniqueClients],
45
+ frameworks: [...uniqueFrameworks],
46
+ git: [...uniqueGit],
47
+ languages: [...uniqueLanguages],
48
+ recorders: [...uniqueRecorders],
69
49
  testStatuses: [],
70
- exceptions: [],
71
- });
50
+ exceptions: [...uniqueExceptions],
51
+ };
72
52
  }
73
53
  /**
74
54
  * ScannerSummary summarizes the results of the entire scan.
75
55
  * It's used for printing a user-friendly summary report, it's not used for machine-readable program output.
76
56
  */
77
- var ScanResults = /** @class */ (function () {
78
- function ScanResults(configuration, appMapMetadata, findings, checks) {
57
+ class ScanResults {
58
+ constructor(configuration, appMapMetadata, findings, checks) {
79
59
  this.configuration = configuration;
80
60
  this.appMapMetadata = appMapMetadata;
81
61
  this.findings = findings;
@@ -83,16 +63,14 @@ var ScanResults = /** @class */ (function () {
83
63
  this.summary = {
84
64
  numAppMaps: Object.keys(appMapMetadata).length,
85
65
  numChecks: checks.length * Object.keys(appMapMetadata).length,
86
- rules: __spreadArray([], __read(new Set(checks.map(function (check) { return check.rule.id; }))), false).sort(),
87
- ruleLabels: __spreadArray([], __read(new Set(checks.map(function (check) { return check.rule.labels || []; }).flat())), false).sort(),
66
+ rules: [...new Set(checks.map((check) => check.rule.id))].sort(),
67
+ ruleLabels: [...new Set(checks.map((check) => check.rule.labels || []).flat())].sort(),
88
68
  numFindings: findings.length,
89
69
  appMapMetadata: collectMetadata(Object.values(appMapMetadata)),
90
70
  };
91
71
  }
92
- ScanResults.prototype.withFindings = function (findings) {
72
+ withFindings(findings) {
93
73
  return new ScanResults(this.configuration, this.appMapMetadata, findings, this.checks);
94
- };
95
- return ScanResults;
96
- }());
74
+ }
75
+ }
97
76
  exports.ScanResults = ScanResults;
98
- //# sourceMappingURL=scanResults.js.map
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=scanSummary.js.map
@@ -3,11 +3,11 @@ 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 chalk_1 = __importDefault(require("chalk"));
7
- var util_1 = require("../rules/lib/util");
6
+ const chalk_1 = __importDefault(require("chalk"));
7
+ const util_1 = require("../rules/lib/util");
8
8
  function summarizeFindings(findings) {
9
- var result = findings.reduce(function (memo, finding) {
10
- var findingSummary = memo[finding.ruleId];
9
+ const result = findings.reduce((memo, finding) => {
10
+ let findingSummary = memo[finding.ruleId];
11
11
  if (findingSummary) {
12
12
  findingSummary.findingTotal += 1;
13
13
  if (!findingSummary.findingHashes.has(finding.hash)) {
@@ -27,24 +27,23 @@ function summarizeFindings(findings) {
27
27
  }
28
28
  return memo;
29
29
  }, {});
30
- Object.values(result).forEach(function (findingSummary) { return (findingSummary.messages = findingSummary.messages.sort()); });
30
+ Object.values(result).forEach((findingSummary) => (findingSummary.messages = findingSummary.messages.sort()));
31
31
  return Object.values(result);
32
32
  }
33
33
  function default_1(summary, colorize) {
34
- var matchedStr = "".concat(summary.summary.numFindings, " ").concat((0, util_1.pluralize)('finding', summary.summary.numFindings), " (").concat(new Set(summary.findings.map(function (finding) { return finding.hash; })).size, " unique)");
35
- var colouredMatchedStr = colorize ? chalk_1.default.stderr.magenta(matchedStr) : matchedStr;
34
+ const matchedStr = `${summary.summary.numFindings} ${(0, util_1.pluralize)('finding', summary.summary.numFindings)} (${new Set(summary.findings.map((finding) => finding.hash)).size} unique)`;
35
+ const colouredMatchedStr = colorize ? chalk_1.default.stderr.magenta(matchedStr) : matchedStr;
36
36
  console.log();
37
37
  console.log(colouredMatchedStr);
38
38
  summarizeFindings(summary.findings)
39
- .sort(function (a, b) { return a.ruleTitle.localeCompare(b.ruleTitle); })
40
- .forEach(function (finding) {
41
- var casesStr = "\t- ".concat(finding.ruleTitle, " (").concat(finding.ruleId, ") : ").concat(finding.findingTotal, " ").concat((0, util_1.pluralize)('case', finding.findingTotal), " (").concat(finding.findingHashes.size, " unique)");
39
+ .sort((a, b) => a.ruleTitle.localeCompare(b.ruleTitle))
40
+ .forEach((finding) => {
41
+ const casesStr = `\t- ${finding.ruleTitle} (${finding.ruleId}) : ${finding.findingTotal} ${(0, util_1.pluralize)('case', finding.findingTotal)} (${finding.findingHashes.size} unique)`;
42
42
  console.log(colorize ? chalk_1.default.stderr.magenta(casesStr) : casesStr);
43
- finding.messages.forEach(function (message) {
44
- var messageStr = "\t\t".concat(message);
43
+ finding.messages.forEach((message) => {
44
+ const messageStr = `\t\t${message}`;
45
45
  console.log(colorize ? chalk_1.default.stderr.magenta(messageStr) : messageStr);
46
46
  });
47
47
  });
48
48
  }
49
49
  exports.default = default_1;
50
- //# sourceMappingURL=summaryReport.js.map