@appland/scanner 1.33.1

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 (196) hide show
  1. package/LICENSE.txt +25 -0
  2. package/README.md +122 -0
  3. package/built/algorithms/dataStructures/graph/Graph.js +155 -0
  4. package/built/algorithms/dataStructures/graph/Graph.js.map +1 -0
  5. package/built/algorithms/dataStructures/graph/GraphEdge.js +27 -0
  6. package/built/algorithms/dataStructures/graph/GraphEdge.js.map +1 -0
  7. package/built/algorithms/dataStructures/graph/GraphVertex.js +79 -0
  8. package/built/algorithms/dataStructures/graph/GraphVertex.js.map +1 -0
  9. package/built/algorithms/dataStructures/linked-list/LinkedList.js +134 -0
  10. package/built/algorithms/dataStructures/linked-list/LinkedList.js.map +1 -0
  11. package/built/algorithms/dataStructures/linked-list/LinkedListNode.js +16 -0
  12. package/built/algorithms/dataStructures/linked-list/LinkedListNode.js.map +1 -0
  13. package/built/algorithms/graph/depth-first-search/index.js +49 -0
  14. package/built/algorithms/graph/depth-first-search/index.js.map +1 -0
  15. package/built/algorithms/graph/detect-cycle/index.js +77 -0
  16. package/built/algorithms/graph/detect-cycle/index.js.map +1 -0
  17. package/built/algorithms/utils/Comparator.js +35 -0
  18. package/built/algorithms/utils/Comparator.js.map +1 -0
  19. package/built/analyzer/recordSecrets.js +17 -0
  20. package/built/analyzer/recordSecrets.js.map +1 -0
  21. package/built/analyzer/secretsRegexes.js +13 -0
  22. package/built/analyzer/secretsRegexes.js.map +1 -0
  23. package/built/analyzer/secretsRegexesData.json +51 -0
  24. package/built/check.js +47 -0
  25. package/built/check.js.map +1 -0
  26. package/built/checkInstance.js +69 -0
  27. package/built/checkInstance.js.map +1 -0
  28. package/built/cli/ci/command.js +183 -0
  29. package/built/cli/ci/command.js.map +1 -0
  30. package/built/cli/ci/options.js +3 -0
  31. package/built/cli/ci/options.js.map +1 -0
  32. package/built/cli/exitCode.js +11 -0
  33. package/built/cli/exitCode.js.map +1 -0
  34. package/built/cli/progressReporter.js +16 -0
  35. package/built/cli/progressReporter.js.map +1 -0
  36. package/built/cli/resolveAppId.js +83 -0
  37. package/built/cli/resolveAppId.js.map +1 -0
  38. package/built/cli/scan/command.js +174 -0
  39. package/built/cli/scan/command.js.map +1 -0
  40. package/built/cli/scan/options.js +3 -0
  41. package/built/cli/scan/options.js.map +1 -0
  42. package/built/cli/scan/scanner.js +154 -0
  43. package/built/cli/scan/scanner.js.map +1 -0
  44. package/built/cli/scan.js +103 -0
  45. package/built/cli/scan.js.map +1 -0
  46. package/built/cli/scanArgs.js +26 -0
  47. package/built/cli/scanArgs.js.map +1 -0
  48. package/built/cli/scanOptions.js +3 -0
  49. package/built/cli/scanOptions.js.map +1 -0
  50. package/built/cli/upload/command.js +95 -0
  51. package/built/cli/upload/command.js.map +1 -0
  52. package/built/cli/upload/options.js +3 -0
  53. package/built/cli/upload/options.js.map +1 -0
  54. package/built/cli/validateFile.js +66 -0
  55. package/built/cli/validateFile.js.map +1 -0
  56. package/built/cli.js +32 -0
  57. package/built/cli.js.map +1 -0
  58. package/built/configuration/configurationProvider.js +169 -0
  59. package/built/configuration/configurationProvider.js.map +1 -0
  60. package/built/configuration/schema/match-pattern-config.json +32 -0
  61. package/built/configuration/schema/options.json +193 -0
  62. package/built/configuration/types/checkConfig.js +3 -0
  63. package/built/configuration/types/checkConfig.js.map +1 -0
  64. package/built/configuration/types/configuration.js +3 -0
  65. package/built/configuration/types/configuration.js.map +1 -0
  66. package/built/configuration/types/matchEventConfig.js +3 -0
  67. package/built/configuration/types/matchEventConfig.js.map +1 -0
  68. package/built/configuration/types/matchPatternConfig.js +3 -0
  69. package/built/configuration/types/matchPatternConfig.js.map +1 -0
  70. package/built/database/index.js +259 -0
  71. package/built/database/index.js.map +1 -0
  72. package/built/database/visit.js +80 -0
  73. package/built/database/visit.js.map +1 -0
  74. package/built/errors.js +35 -0
  75. package/built/errors.js.map +1 -0
  76. package/built/findings.js +15 -0
  77. package/built/findings.js.map +1 -0
  78. package/built/integration/appland/fetchStatus.js +51 -0
  79. package/built/integration/appland/fetchStatus.js.map +1 -0
  80. package/built/integration/appland/upload.js +193 -0
  81. package/built/integration/appland/upload.js.map +1 -0
  82. package/built/integration/github/commitStatus.js +19 -0
  83. package/built/integration/github/commitStatus.js.map +1 -0
  84. package/built/integration/vars.js +68 -0
  85. package/built/integration/vars.js.map +1 -0
  86. package/built/openapi/index.js +100 -0
  87. package/built/openapi/index.js.map +1 -0
  88. package/built/openapi/method.js +120 -0
  89. package/built/openapi/method.js.map +1 -0
  90. package/built/openapi/model.js +49 -0
  91. package/built/openapi/model.js.map +1 -0
  92. package/built/openapi/path.js +36 -0
  93. package/built/openapi/path.js.map +1 -0
  94. package/built/openapi/provider.js +133 -0
  95. package/built/openapi/provider.js.map +1 -0
  96. package/built/openapi/response.js +59 -0
  97. package/built/openapi/response.js.map +1 -0
  98. package/built/openapi/rpcRequest.js +130 -0
  99. package/built/openapi/rpcRequest.js.map +1 -0
  100. package/built/openapi/schema.js +42 -0
  101. package/built/openapi/schema.js.map +1 -0
  102. package/built/openapi/securitySchemes.js +32 -0
  103. package/built/openapi/securitySchemes.js.map +1 -0
  104. package/built/openapi/statusCodes.js +68 -0
  105. package/built/openapi/statusCodes.js.map +1 -0
  106. package/built/openapi/util.js +91 -0
  107. package/built/openapi/util.js.map +1 -0
  108. package/built/report/appMapMetadata.js +2 -0
  109. package/built/report/appMapMetadata.js.map +1 -0
  110. package/built/report/findingSummary.js +3 -0
  111. package/built/report/findingSummary.js.map +1 -0
  112. package/built/report/findingsReport.js +37 -0
  113. package/built/report/findingsReport.js.map +1 -0
  114. package/built/report/scanResults.js +103 -0
  115. package/built/report/scanResults.js.map +1 -0
  116. package/built/report/scanSummary.js +3 -0
  117. package/built/report/scanSummary.js.map +1 -0
  118. package/built/report/summaryReport.js +70 -0
  119. package/built/report/summaryReport.js.map +1 -0
  120. package/built/ruleChecker.js +260 -0
  121. package/built/ruleChecker.js.map +1 -0
  122. package/built/rules/authzBeforeAuthn.js +82 -0
  123. package/built/rules/authzBeforeAuthn.js.map +1 -0
  124. package/built/rules/circularDependency.js +227 -0
  125. package/built/rules/circularDependency.js.map +1 -0
  126. package/built/rules/http500.js +18 -0
  127. package/built/rules/http500.js.map +1 -0
  128. package/built/rules/illegalPackageDependency.js +38 -0
  129. package/built/rules/illegalPackageDependency.js.map +1 -0
  130. package/built/rules/incompatibleHttpClientRequest.js +96 -0
  131. package/built/rules/incompatibleHttpClientRequest.js.map +1 -0
  132. package/built/rules/insecureCompare.js +59 -0
  133. package/built/rules/insecureCompare.js.map +1 -0
  134. package/built/rules/jobNotCancelled.js +72 -0
  135. package/built/rules/jobNotCancelled.js.map +1 -0
  136. package/built/rules/lib/hasParameterOrReceiver.js +11 -0
  137. package/built/rules/lib/hasParameterOrReceiver.js.map +1 -0
  138. package/built/rules/lib/matchEvent.js +32 -0
  139. package/built/rules/lib/matchEvent.js.map +1 -0
  140. package/built/rules/lib/matchPattern.js +28 -0
  141. package/built/rules/lib/matchPattern.js.map +1 -0
  142. package/built/rules/lib/rpcWithoutProtection.js +40 -0
  143. package/built/rules/lib/rpcWithoutProtection.js.map +1 -0
  144. package/built/rules/missingAuthentication.js +65 -0
  145. package/built/rules/missingAuthentication.js.map +1 -0
  146. package/built/rules/missingContentType.js +27 -0
  147. package/built/rules/missingContentType.js.map +1 -0
  148. package/built/rules/nPlusOneQuery.js +84 -0
  149. package/built/rules/nPlusOneQuery.js.map +1 -0
  150. package/built/rules/queryFromInvalidPackage.js +37 -0
  151. package/built/rules/queryFromInvalidPackage.js.map +1 -0
  152. package/built/rules/queryFromView.js +29 -0
  153. package/built/rules/queryFromView.js.map +1 -0
  154. package/built/rules/rpcWithoutCircuitBreaker.js +97 -0
  155. package/built/rules/rpcWithoutCircuitBreaker.js.map +1 -0
  156. package/built/rules/saveWithoutValidation.js +27 -0
  157. package/built/rules/saveWithoutValidation.js.map +1 -0
  158. package/built/rules/secretInLog.js +76 -0
  159. package/built/rules/secretInLog.js.map +1 -0
  160. package/built/rules/slowFunctionCall.js +37 -0
  161. package/built/rules/slowFunctionCall.js.map +1 -0
  162. package/built/rules/slowHttpServerRequest.js +24 -0
  163. package/built/rules/slowHttpServerRequest.js.map +1 -0
  164. package/built/rules/slowQuery.js +23 -0
  165. package/built/rules/slowQuery.js.map +1 -0
  166. package/built/rules/tooManyJoins.js +77 -0
  167. package/built/rules/tooManyJoins.js.map +1 -0
  168. package/built/rules/tooManyUpdates.js +143 -0
  169. package/built/rules/tooManyUpdates.js.map +1 -0
  170. package/built/rules/unbatchedMaterializedQuery.js +65 -0
  171. package/built/rules/unbatchedMaterializedQuery.js.map +1 -0
  172. package/built/rules/updateInGetRequest.js +66 -0
  173. package/built/rules/updateInGetRequest.js.map +1 -0
  174. package/built/rules/util.js +102 -0
  175. package/built/rules/util.js.map +1 -0
  176. package/built/sampleConfig/bike_index.yml +10 -0
  177. package/built/sampleConfig/default.yml +19 -0
  178. package/built/sampleConfig/railsSampleApp6thEd.yml +29 -0
  179. package/built/sampleConfig/solidus.yml +31 -0
  180. package/built/scope/commandScope.js +156 -0
  181. package/built/scope/commandScope.js.map +1 -0
  182. package/built/scope/httpClientRequestScope.js +105 -0
  183. package/built/scope/httpClientRequestScope.js.map +1 -0
  184. package/built/scope/httpServerRequestScope.js +105 -0
  185. package/built/scope/httpServerRequestScope.js.map +1 -0
  186. package/built/scope/rootScope.js +105 -0
  187. package/built/scope/rootScope.js.map +1 -0
  188. package/built/scope/scopeImpl.js +88 -0
  189. package/built/scope/scopeImpl.js.map +1 -0
  190. package/built/scope/scopeIterator.js +21 -0
  191. package/built/scope/scopeIterator.js.map +1 -0
  192. package/built/scope/sqlTransactionScope.js +175 -0
  193. package/built/scope/sqlTransactionScope.js.map +1 -0
  194. package/built/wellKnownLabels.js +9 -0
  195. package/built/wellKnownLabels.js.map +1 -0
  196. package/package.json +89 -0
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rpcRequestForEvent = void 0;
4
+ var url_1 = require("url");
5
+ var util_1 = require("./util");
6
+ var ServerRPCRequest = /** @class */ (function () {
7
+ function ServerRPCRequest(event) {
8
+ this.event = event;
9
+ }
10
+ Object.defineProperty(ServerRPCRequest.prototype, "status", {
11
+ get: function () {
12
+ return this.event.httpServerResponse.status;
13
+ },
14
+ enumerable: false,
15
+ configurable: true
16
+ });
17
+ Object.defineProperty(ServerRPCRequest.prototype, "parameters", {
18
+ get: function () {
19
+ return this.event.parameters || [];
20
+ },
21
+ enumerable: false,
22
+ configurable: true
23
+ });
24
+ Object.defineProperty(ServerRPCRequest.prototype, "requestHeaders", {
25
+ get: function () {
26
+ var _a;
27
+ return ((_a = this.event.httpServerRequest) === null || _a === void 0 ? void 0 : _a.headers) || {};
28
+ },
29
+ enumerable: false,
30
+ configurable: true
31
+ });
32
+ Object.defineProperty(ServerRPCRequest.prototype, "responseHeaders", {
33
+ get: function () {
34
+ var _a;
35
+ return ((_a = this.event.httpServerResponse) === null || _a === void 0 ? void 0 : _a.headers) || {};
36
+ },
37
+ enumerable: false,
38
+ configurable: true
39
+ });
40
+ Object.defineProperty(ServerRPCRequest.prototype, "contentType", {
41
+ get: function () {
42
+ return (this.event.httpServerResponse.headers || {})['Content-Type'];
43
+ },
44
+ enumerable: false,
45
+ configurable: true
46
+ });
47
+ Object.defineProperty(ServerRPCRequest.prototype, "requestMethod", {
48
+ get: function () {
49
+ return this.event.httpServerRequest.request_method.toLowerCase();
50
+ },
51
+ enumerable: false,
52
+ configurable: true
53
+ });
54
+ Object.defineProperty(ServerRPCRequest.prototype, "requestPath", {
55
+ get: function () {
56
+ return (0, util_1.ensureString)(this.event.httpServerRequest.normalized_path_info || this.event.httpServerRequest.path_info);
57
+ },
58
+ enumerable: false,
59
+ configurable: true
60
+ });
61
+ return ServerRPCRequest;
62
+ }());
63
+ var ClientRPCRequest = /** @class */ (function () {
64
+ function ClientRPCRequest(event) {
65
+ this.event = event;
66
+ }
67
+ Object.defineProperty(ClientRPCRequest.prototype, "status", {
68
+ get: function () {
69
+ return this.event.httpClientResponse.status;
70
+ },
71
+ enumerable: false,
72
+ configurable: true
73
+ });
74
+ Object.defineProperty(ClientRPCRequest.prototype, "parameters", {
75
+ get: function () {
76
+ return this.event.parameters || [];
77
+ },
78
+ enumerable: false,
79
+ configurable: true
80
+ });
81
+ Object.defineProperty(ClientRPCRequest.prototype, "requestHeaders", {
82
+ get: function () {
83
+ var _a;
84
+ return ((_a = this.event.httpClientRequest) === null || _a === void 0 ? void 0 : _a.headers) || {};
85
+ },
86
+ enumerable: false,
87
+ configurable: true
88
+ });
89
+ Object.defineProperty(ClientRPCRequest.prototype, "responseHeaders", {
90
+ get: function () {
91
+ var _a;
92
+ return ((_a = this.event.httpClientResponse) === null || _a === void 0 ? void 0 : _a.headers) || {};
93
+ },
94
+ enumerable: false,
95
+ configurable: true
96
+ });
97
+ Object.defineProperty(ClientRPCRequest.prototype, "contentType", {
98
+ get: function () {
99
+ return (this.event.httpClientResponse.headers || {})['Content-Type'];
100
+ },
101
+ enumerable: false,
102
+ configurable: true
103
+ });
104
+ Object.defineProperty(ClientRPCRequest.prototype, "requestMethod", {
105
+ get: function () {
106
+ return this.event.httpClientRequest.request_method.toLowerCase();
107
+ },
108
+ enumerable: false,
109
+ configurable: true
110
+ });
111
+ Object.defineProperty(ClientRPCRequest.prototype, "requestPath", {
112
+ get: function () {
113
+ // TODO: Back-substitute query parameters into the URL.
114
+ return new url_1.URL(this.event.httpClientRequest.url).pathname;
115
+ },
116
+ enumerable: false,
117
+ configurable: true
118
+ });
119
+ return ClientRPCRequest;
120
+ }());
121
+ function rpcRequestForEvent(event) {
122
+ if (event.httpServerRequest && event.httpServerResponse) {
123
+ return new ServerRPCRequest(event);
124
+ }
125
+ else if (event.httpClientRequest && event.httpClientResponse) {
126
+ return new ClientRPCRequest(event);
127
+ }
128
+ }
129
+ exports.rpcRequestForEvent = rpcRequestForEvent;
130
+ //# sourceMappingURL=rpcRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcRequest.js","sourceRoot":"","sources":["../../src/openapi/rpcRequest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var util_1 = require("./util");
4
+ var Schema = /** @class */ (function () {
5
+ function Schema() {
6
+ this.examples = [];
7
+ }
8
+ Schema.prototype.addExample = function (message) {
9
+ if (!message.name) {
10
+ return;
11
+ }
12
+ this.examples.push(message);
13
+ };
14
+ Object.defineProperty(Schema.prototype, "empty", {
15
+ get: function () {
16
+ return this.examples.length > 0;
17
+ },
18
+ enumerable: false,
19
+ configurable: true
20
+ });
21
+ Schema.prototype.schema = function () {
22
+ var properties = {};
23
+ this.examples
24
+ .sort(function (a, b) { return a.name.localeCompare(b.name); })
25
+ .forEach(function (message) {
26
+ if (properties[message.name]) {
27
+ return;
28
+ }
29
+ properties[message.name] = (0, util_1.messageToOpenAPISchema)(message);
30
+ });
31
+ if (Object.keys(properties).length === 0) {
32
+ return null;
33
+ }
34
+ return {
35
+ type: 'object',
36
+ properties: properties,
37
+ };
38
+ };
39
+ return Schema;
40
+ }());
41
+ exports.default = Schema;
42
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/openapi/schema.ts"],"names":[],"mappings":";;AACA,+BAAgD;AAEhD;IAGE;QACE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,2BAAU,GAAV,UAAW,OAAwB;QACjC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACjB,OAAO;SACR;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,sBAAI,yBAAK;aAAT;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAClC,CAAC;;;OAAA;IAED,uBAAM,GAAN;QACE,IAAM,UAAU,GAAwB,EAAE,CAAC;QAC3C,IAAI,CAAC,QAAQ;aACV,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,IAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAK,CAAC,EAA9B,CAA8B,CAAC;aAC9C,OAAO,CAAC,UAAC,OAAO;YACf,IAAI,UAAU,CAAC,OAAO,CAAC,IAAK,CAAC,EAAE;gBAC7B,OAAO;aACR;YACD,UAAU,CAAC,OAAO,CAAC,IAAK,CAAC,GAAG,IAAA,6BAAsB,EAAC,OAAO,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QACL,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACxC,OAAO,IAAI,CAAC;SACb;QAED,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,YAAA;SACX,CAAC;IACJ,CAAC;IACH,aAAC;AAAD,CAAC,AArCD,IAqCC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var util_1 = require("./util");
4
+ var SecuritySchemes = /** @class */ (function () {
5
+ function SecuritySchemes() {
6
+ this.rpcRequests = [];
7
+ }
8
+ /**
9
+ * Adds an event to the security schemes, and assigns a security scheme id.
10
+ * If the event has no detectable security scheme, this function returns null.
11
+ *
12
+ * @returns the security scheme id for the event, or null.
13
+ */
14
+ SecuritySchemes.prototype.addRpcRequest = function (rpcRequest) {
15
+ this.rpcRequests.push(rpcRequest);
16
+ };
17
+ SecuritySchemes.prototype.openapi = function () {
18
+ return this.rpcRequests
19
+ .map(function (rpcRequest) { return rpcRequest.requestHeaders['Authorization']; })
20
+ .filter(function (authorization) { return authorization; })
21
+ .reduce(function (memo, authorization) {
22
+ var scheme = (0, util_1.parseScheme)(authorization);
23
+ if (!memo[scheme.schemeId]) {
24
+ memo[scheme.schemeId] = scheme.scheme;
25
+ }
26
+ return memo;
27
+ }, {});
28
+ };
29
+ return SecuritySchemes;
30
+ }());
31
+ exports.default = SecuritySchemes;
32
+ //# sourceMappingURL=securitySchemes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"securitySchemes.js","sourceRoot":"","sources":["../../src/openapi/securitySchemes.ts"],"names":[],"mappings":";;AAEA,+BAAqC;AAErC;IAAA;QACE,gBAAW,GAAiB,EAAE,CAAC;IAwBjC,CAAC;IAtBC;;;;;OAKG;IACH,uCAAa,GAAb,UAAc,UAAsB;QAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,iCAAO,GAAP;QACE,OAAO,IAAI,CAAC,WAAW;aACpB,GAAG,CAAC,UAAC,UAAU,IAAK,OAAA,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,EAA1C,CAA0C,CAAC;aAC/D,MAAM,CAAC,UAAC,aAAa,IAAK,OAAA,aAAa,EAAb,CAAa,CAAC;aACxC,MAAM,CAAC,UAAC,IAAI,EAAE,aAAa;YAC1B,IAAM,MAAM,GAAG,IAAA,kBAAW,EAAC,aAAa,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;aACvC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,EAAE,EAAoD,CAAC,CAAC;IAC7D,CAAC;IACH,sBAAC;AAAD,CAAC,AAzBD,IAyBC"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // https://github.com/nodejs/node/blob/f1653cc9b80b521ef5b129537ce1df9098bbdc1b/lib/_http_server.js#L18-L81
4
+ exports.default = {
5
+ 100: 'Continue',
6
+ 101: 'Switching Protocols',
7
+ 102: 'Processing',
8
+ 200: 'OK',
9
+ 201: 'Created',
10
+ 202: 'Accepted',
11
+ 203: 'Non-Authoritative Information',
12
+ 204: 'No Content',
13
+ 205: 'Reset Content',
14
+ 206: 'Partial Content',
15
+ 207: 'Multi-Status',
16
+ 208: 'Already Reported',
17
+ 226: 'IM Used',
18
+ 300: 'Multiple Choices',
19
+ 301: 'Moved Permanently',
20
+ 302: 'Found',
21
+ 303: 'See Other',
22
+ 304: 'Not Modified',
23
+ 305: 'Use Proxy',
24
+ 307: 'Temporary Redirect',
25
+ 308: 'Permanent Redirect',
26
+ 400: 'Bad Request',
27
+ 401: 'Unauthorized',
28
+ 402: 'Payment Required',
29
+ 403: 'Forbidden',
30
+ 404: 'Not Found',
31
+ 405: 'Method Not Allowed',
32
+ 406: 'Not Acceptable',
33
+ 407: 'Proxy Authentication Required',
34
+ 408: 'Request Timeout',
35
+ 409: 'Conflict',
36
+ 410: 'Gone',
37
+ 411: 'Length Required',
38
+ 412: 'Precondition Failed',
39
+ 413: 'Payload Too Large',
40
+ 414: 'URI Too Long',
41
+ 415: 'Unsupported Media Type',
42
+ 416: 'Range Not Satisfiable',
43
+ 417: 'Expectation Failed',
44
+ 418: "I'm a teapot",
45
+ 421: 'Misdirected Request',
46
+ 422: 'Unprocessable Entity',
47
+ 423: 'Locked',
48
+ 424: 'Failed Dependency',
49
+ 425: 'Unordered Collection',
50
+ 426: 'Upgrade Required',
51
+ 428: 'Precondition Required',
52
+ 429: 'Too Many Requests',
53
+ 431: 'Request Header Fields Too Large',
54
+ 451: 'Unavailable For Legal Reasons',
55
+ 500: 'Internal Server Error',
56
+ 501: 'Not Implemented',
57
+ 502: 'Bad Gateway',
58
+ 503: 'Service Unavailable',
59
+ 504: 'Gateway Timeout',
60
+ 505: 'HTTP Version Not Supported',
61
+ 506: 'Variant Also Negotiates',
62
+ 507: 'Insufficient Storage',
63
+ 508: 'Loop Detected',
64
+ 509: 'Bandwidth Limit Exceeded',
65
+ 510: 'Not Extended',
66
+ 511: 'Network Authentication Required',
67
+ };
68
+ //# sourceMappingURL=statusCodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statusCodes.js","sourceRoot":"","sources":["../../src/openapi/statusCodes.ts"],"names":[],"mappings":";;AAAA,2GAA2G;AAC3G,kBAAe;IACb,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,+BAA+B;IACpC,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,+BAA+B;IACpC,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,wBAAwB;IAC7B,GAAG,EAAE,uBAAuB;IAC5B,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,uBAAuB;IAC5B,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,iCAAiC;IACtC,GAAG,EAAE,+BAA+B;IACpC,GAAG,EAAE,uBAAuB;IAC5B,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,4BAA4B;IACjC,GAAG,EAAE,yBAAyB;IAC9B,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,0BAA0B;IAC/B,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,iCAAiC;CACb,CAAC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseScheme = exports.messageToOpenAPISchema = exports.ensureString = void 0;
4
+ function parseScheme(authorization) {
5
+ var tokens = authorization.split(/\s/);
6
+ if (tokens.length === 1) {
7
+ return {
8
+ schemeId: 'api_key',
9
+ scheme: {
10
+ type: 'apiKey',
11
+ name: 'authorization',
12
+ in: 'header',
13
+ },
14
+ };
15
+ }
16
+ var schemeId = tokens[0].toLowerCase();
17
+ return {
18
+ schemeId: schemeId,
19
+ scheme: {
20
+ type: 'http',
21
+ scheme: schemeId,
22
+ },
23
+ };
24
+ }
25
+ exports.parseScheme = parseScheme;
26
+ function classNameToOpenAPIType(className) {
27
+ var typeName = className;
28
+ if (!typeName || typeName === '') {
29
+ return 'string';
30
+ }
31
+ typeName = typeName.toLowerCase();
32
+ switch (typeName) {
33
+ case 'hash':
34
+ case 'activesupport::hashwithindifferentaccess':
35
+ return 'object';
36
+ case 'nilclass':
37
+ return 'string';
38
+ case 'trueclass':
39
+ case 'falseclass':
40
+ return 'boolean';
41
+ default:
42
+ return typeName;
43
+ }
44
+ }
45
+ function messageToOpenAPISchema(message) {
46
+ var type = classNameToOpenAPIType(message.class);
47
+ var result = { type: type };
48
+ /*
49
+ if (message.value) {
50
+ let example;
51
+ try {
52
+ example = JSON.parse(message.value);
53
+ } catch (e) {
54
+ example = message.value;
55
+ }
56
+ if (example && example !== '') {
57
+ result.example = example.toString();
58
+ }
59
+ }
60
+ */
61
+ if (type === 'array') {
62
+ // This is our best guess right now.
63
+ result.items = { type: 'string' };
64
+ }
65
+ else if (type === 'object' && message.properties) {
66
+ result.properties = message.properties.reduce(function (memo, msgProperty) {
67
+ var type = classNameToOpenAPIType(msgProperty.class);
68
+ if (type === 'array') {
69
+ // eslint-disable-next-line no-param-reassign
70
+ memo[msgProperty.name] = {};
71
+ }
72
+ else {
73
+ // eslint-disable-next-line no-param-reassign
74
+ memo[msgProperty.name] = {
75
+ type: type,
76
+ };
77
+ }
78
+ return memo;
79
+ }, {});
80
+ }
81
+ return result;
82
+ }
83
+ exports.messageToOpenAPISchema = messageToOpenAPISchema;
84
+ function ensureString(value) {
85
+ if (Array.isArray(value)) {
86
+ return value.join('');
87
+ }
88
+ return value.toString();
89
+ }
90
+ exports.ensureString = ensureString;
91
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/openapi/util.ts"],"names":[],"mappings":";;;AAQA,SAAS,WAAW,CAAC,aAAqB;IACxC,IAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,eAAe;gBACrB,EAAE,EAAE,QAAQ;aACqB;SACpC,CAAC;KACH;IAED,IAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACzC,OAAO;QACL,QAAQ,UAAA;QACR,MAAM,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,QAAQ;SACe;KAClC,CAAC;AACJ,CAAC;AAsE8C,kCAAW;AApE1D,SAAS,sBAAsB,CAC7B,SAAiB;IAEjB,IAAI,QAAQ,GAAG,SAAS,CAAC;IACzB,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,EAAE,EAAE;QAChC,OAAO,QAAQ,CAAC;KACjB;IACD,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAElC,QAAQ,QAAQ,EAAE;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,0CAA0C;YAC7C,OAAO,QAAQ,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC;QAClB,KAAK,WAAW,CAAC;QACjB,KAAK,YAAY;YACf,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,QAAgF,CAAC;KAC3F;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAwB;IACtD,IAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnD,IAAM,MAAM,GAAG,EAAE,IAAI,MAAA,EAAS,CAAC;IAC/B;;;;;;;;;;;;MAYE;IACF,IAAI,IAAI,KAAK,OAAO,EAAE;QACpB,oCAAoC;QACpC,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;KACnC;SAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE;QAClD,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,UAAC,IAAI,EAAE,WAA8B;YACjF,IAAM,IAAI,GAAG,sBAAsB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,IAAI,KAAK,OAAO,EAAE;gBACpB,6CAA6C;gBAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAiC,CAAC;aAC5D;iBAAM;gBACL,6CAA6C;gBAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG;oBACvB,IAAI,MAAA;iBAC6B,CAAC;aACrC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,EAAE,EAAkF,CAAC,CAAC;KACxF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AASsB,wDAAsB;AAP7C,SAAS,YAAY,CAAC,KAAU;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACvB;IACD,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC1B,CAAC;AAEQ,oCAAY"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=appMapMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appMapMetadata.js","sourceRoot":"","sources":["../../src/report/appMapMetadata.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=findingSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findingSummary.js","sourceRoot":"","sources":["../../src/report/findingSummary.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var chalk_1 = __importDefault(require("chalk"));
7
+ var util_1 = require("../rules/util");
8
+ function writeln(text) {
9
+ if (text === void 0) { text = ''; }
10
+ process.stdout.write(text);
11
+ process.stdout.write('\n');
12
+ }
13
+ function default_1(findings, appMapMetadata, ide) {
14
+ if (findings.length === 0) {
15
+ return;
16
+ }
17
+ console.log();
18
+ findings.forEach(function (finding) {
19
+ var filePath = ide && finding.appMapFile
20
+ ? (0, util_1.ideLink)(finding.appMapFile, ide, finding.event.id)
21
+ : finding.appMapFile;
22
+ var eventMsg = "\tEvent:\t" + finding.event.id + " - " + finding.event.toString();
23
+ if (finding.event.elapsedTime !== undefined) {
24
+ eventMsg += " (" + finding.event.elapsedTime + "s)";
25
+ }
26
+ var message = finding.message;
27
+ writeln(chalk_1.default.magenta(message));
28
+ writeln("\tLink:\t" + chalk_1.default.blue(filePath));
29
+ writeln("\tRule:\t" + finding.ruleId);
30
+ writeln("\tAppMap name:\t" + appMapMetadata[finding.appMapFile].name);
31
+ writeln(eventMsg);
32
+ writeln("\tScope:\t" + finding.scope.id + " - " + finding.scope.toString());
33
+ writeln();
34
+ });
35
+ }
36
+ exports.default = default_1;
37
+ //# sourceMappingURL=findingsReport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findingsReport.js","sourceRoot":"","sources":["../../src/report/findingsReport.ts"],"names":[],"mappings":";;;;;AACA,gDAA0B;AAC1B,sCAAwC;AAGxC,SAAS,OAAO,CAAC,IAAS;IAAT,qBAAA,EAAA,SAAS;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,mBACE,QAAmB,EACnB,cAAwC,EACxC,GAAY;IAEZ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACzB,OAAO;KACR;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO;QACvB,IAAM,QAAQ,GACZ,GAAG,IAAI,OAAO,CAAC,UAAU;YACvB,CAAC,CAAC,IAAA,cAAO,EAAC,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QACzB,IAAI,QAAQ,GAAG,eAAa,OAAO,CAAC,KAAK,CAAC,EAAE,WAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAI,CAAC;QAC7E,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE;YAC3C,QAAQ,IAAI,OAAK,OAAO,CAAC,KAAK,CAAC,WAAW,OAAI,CAAC;SAChD;QAED,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,OAAO,CAAC,eAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAChC,OAAO,CAAC,cAAY,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,cAAY,OAAO,CAAC,MAAQ,CAAC,CAAC;QACtC,OAAO,CAAC,qBAAmB,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAM,CAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClB,OAAO,CAAC,eAAa,OAAO,CAAC,KAAK,CAAC,EAAE,WAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAI,CAAC,CAAC;QACvE,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AA5BD,4BA4BC"}
@@ -0,0 +1,103 @@
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, 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
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.ScanResults = void 0;
29
+ 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); });
50
+ }
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: [],
69
+ testStatuses: [],
70
+ exceptions: [],
71
+ });
72
+ }
73
+ /**
74
+ * ScannerSummary summarizes the results of the entire scan.
75
+ * It's used for printing a user-friendly summary report, it's not used for machine-readable program output.
76
+ */
77
+ var ScanResults = /** @class */ (function () {
78
+ function ScanResults(configuration, appMapMetadata, findings, checks) {
79
+ this.summary = {
80
+ numAppMaps: Object.keys(appMapMetadata).length,
81
+ numChecks: checks.length * Object.keys(appMapMetadata).length,
82
+ rules: __spreadArray([], __read(new Set(checks.map(function (check) { return check.rule.id; }))), false).sort(),
83
+ ruleLabels: __spreadArray([], __read(new Set(checks.map(function (check) { return check.rule.labels || []; }).flat())), false).sort(),
84
+ numFindings: findings.length,
85
+ appMapMetadata: collectMetadata(Object.values(appMapMetadata)),
86
+ };
87
+ this.configuration = configuration;
88
+ var appMapFiles = new Set(findings.map(function (finding) { return finding.appMapFile; }));
89
+ this.appMaps = __spreadArray([], __read(appMapFiles), false).reduce(function (memo, appMapFile) {
90
+ memo[appMapFile] = appMapMetadata[appMapFile];
91
+ return memo;
92
+ }, {});
93
+ this.findings = findings;
94
+ this.appMapMetadata = appMapMetadata;
95
+ this.checks = checks;
96
+ }
97
+ ScanResults.prototype.withFindings = function (findings) {
98
+ return new ScanResults(this.configuration, this.appMapMetadata, findings, this.checks);
99
+ };
100
+ return ScanResults;
101
+ }());
102
+ exports.ScanResults = ScanResults;
103
+ //# sourceMappingURL=scanResults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanResults.js","sourceRoot":"","sources":["../../src/report/scanResults.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=scanSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanSummary.js","sourceRoot":"","sources":["../../src/report/scanSummary.ts"],"names":[],"mappings":""}
@@ -0,0 +1,70 @@
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, 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
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ var __importDefault = (this && this.__importDefault) || function (mod) {
28
+ return (mod && mod.__esModule) ? mod : { "default": mod };
29
+ };
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ var chalk_1 = __importDefault(require("chalk"));
32
+ function summarizeFindings(findings) {
33
+ var result = findings.reduce(function (memo, finding) {
34
+ var findingSummary = memo[finding.ruleId];
35
+ if (findingSummary) {
36
+ findingSummary.findingTotal += 1;
37
+ findingSummary.messages.add(finding.message);
38
+ }
39
+ else {
40
+ findingSummary = {
41
+ ruleId: finding.ruleId,
42
+ ruleTitle: finding.ruleTitle,
43
+ findingTotal: 1,
44
+ messages: new Set([finding.message]),
45
+ };
46
+ memo[finding.ruleId] = findingSummary;
47
+ }
48
+ return memo;
49
+ }, {});
50
+ return Object.values(result);
51
+ }
52
+ function default_1(summary, colorize) {
53
+ var matchedStr = summary.summary.numFindings + " finding" + (summary.summary.numFindings === 1 ? '' : 's');
54
+ var colouredMatchedStr = colorize ? chalk_1.default.stderr.magenta(matchedStr) : matchedStr;
55
+ console.log();
56
+ console.log(summary.summary.numChecks + " checks (" + [colouredMatchedStr].join(', ') + ")");
57
+ summarizeFindings(summary.findings)
58
+ .sort(function (a, b) { return a.ruleTitle.localeCompare(b.ruleTitle); })
59
+ .forEach(function (finding) {
60
+ var casesStr = "\t- " + finding.ruleTitle + " (" + finding.ruleId + ") : " + finding.findingTotal + " case(s)";
61
+ console.log(colorize ? chalk_1.default.stderr.magenta(casesStr) : casesStr);
62
+ var uniqueMessages = __spreadArray([], __read(new Set(finding.messages)), false).sort();
63
+ uniqueMessages.forEach(function (message) {
64
+ var messageStr = "\t\t" + message;
65
+ console.log(colorize ? chalk_1.default.stderr.magenta(messageStr) : messageStr);
66
+ });
67
+ });
68
+ }
69
+ exports.default = default_1;
70
+ //# sourceMappingURL=summaryReport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summaryReport.js","sourceRoot":"","sources":["../../src/report/summaryReport.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAK1B,SAAS,iBAAiB,CAAC,QAAmB;IAC5C,IAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAC,IAAI,EAAE,OAAO;QAC3C,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,cAAc,EAAE;YAClB,cAAc,CAAC,YAAY,IAAI,CAAC,CAAC;YACjC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SAC9C;aAAM;YACL,cAAc,GAAG;gBACf,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,YAAY,EAAE,CAAC;gBACf,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aACnB,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC;SACvC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,EAAoC,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,mBAAyB,OAAoB,EAAE,QAAiB;IAC9D,IAAM,UAAU,GAAM,OAAO,CAAC,OAAO,CAAC,WAAW,iBAC/C,OAAO,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAC5C,CAAC;IACH,IAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAEpF,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAI,OAAO,CAAC,OAAO,CAAC,SAAS,iBAAY,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAG,CAAC,CAAC;IAExF,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC;SAChC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,EAAtC,CAAsC,CAAC;SACtD,OAAO,CAAC,UAAC,OAAO;QACf,IAAM,QAAQ,GAAG,SAAO,OAAO,CAAC,SAAS,UAAK,OAAO,CAAC,MAAM,YAAO,OAAO,CAAC,YAAY,aAAU,CAAC;QAClG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAClE,IAAM,cAAc,GAAG,yBAAI,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAE,IAAI,EAAE,CAAC;QAC7D,cAAc,CAAC,OAAO,CAAC,UAAC,OAAO;YAC7B,IAAM,UAAU,GAAG,SAAO,OAAS,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AApBD,4BAoBC"}