@fabasoad/sarif-to-slack 1.1.0 → 1.2.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 (49) hide show
  1. package/dist/SarifToSlackClient.d.ts.map +1 -1
  2. package/dist/SarifToSlackClient.js +8 -10
  3. package/dist/index.cjs +141 -90
  4. package/dist/index.d.ts +12 -2
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +12 -3
  7. package/dist/model/Color.d.ts +5 -2
  8. package/dist/model/Color.d.ts.map +1 -1
  9. package/dist/model/Color.js +13 -14
  10. package/dist/model/Finding.js +3 -3
  11. package/dist/model/FindingArray.d.ts +2 -0
  12. package/dist/model/FindingArray.d.ts.map +1 -0
  13. package/dist/model/FindingArray.js +24 -0
  14. package/dist/model/SendIf.d.ts +116 -0
  15. package/dist/model/SendIf.d.ts.map +1 -0
  16. package/dist/model/SendIf.js +176 -0
  17. package/dist/model/SlackMessage.d.ts +23 -0
  18. package/dist/model/SlackMessage.d.ts.map +1 -0
  19. package/dist/model/SlackMessage.js +99 -0
  20. package/dist/representations/Representation.js +3 -3
  21. package/dist/sarif-to-slack.d.ts +14 -3
  22. package/dist/types.d.ts +1 -130
  23. package/dist/types.d.ts.map +1 -1
  24. package/dist/types.js +1 -117
  25. package/etc/sarif-to-slack.api.md +1 -0
  26. package/package.json +1 -1
  27. package/src/SarifToSlackClient.ts +7 -11
  28. package/src/index.ts +12 -4
  29. package/src/model/Color.ts +24 -21
  30. package/src/model/Finding.ts +3 -3
  31. package/src/model/{FindingsArray.ts → FindingArray.ts} +3 -3
  32. package/src/model/SendIf.ts +175 -0
  33. package/src/{SlackMessageBuilder.ts → model/SlackMessage.ts} +31 -6
  34. package/src/processors/CodeQLProcessor.ts +1 -1
  35. package/src/representations/CompactGroupByRepresentation.ts +1 -1
  36. package/src/representations/CompactGroupByRunRepresentation.ts +1 -1
  37. package/src/representations/CompactGroupBySarifRepresentation.ts +1 -1
  38. package/src/representations/CompactGroupByToolNameRepresentation.ts +1 -1
  39. package/src/representations/CompactTotalRepresentation.ts +1 -1
  40. package/src/representations/Representation.ts +4 -4
  41. package/src/types.ts +3 -134
  42. package/src/utils/Comparators.ts +1 -1
  43. package/tests/integration/SendSarifToSlack.spec.ts +1 -2
  44. package/dist/SlackMessageBuilder.d.ts +0 -2
  45. package/dist/SlackMessageBuilder.d.ts.map +0 -1
  46. package/dist/SlackMessageBuilder.js +0 -91
  47. package/dist/model/FindingsArray.d.ts +0 -2
  48. package/dist/model/FindingsArray.d.ts.map +0 -1
  49. package/dist/model/FindingsArray.js +0 -24
@@ -6,7 +6,7 @@ import { createProcessor } from '../processors/ProcessorFactory';
6
6
  * @internal
7
7
  */
8
8
  export function createFinding(opts) {
9
- return new SarifFinding(opts);
9
+ return new FindingImpl(opts);
10
10
  }
11
11
  /**
12
12
  * The only implementation of {@link Finding} interface. This class is private
@@ -14,7 +14,7 @@ export function createFinding(opts) {
14
14
  * create a new {@link Finding}.
15
15
  * @private
16
16
  */
17
- class SarifFinding {
17
+ class FindingImpl {
18
18
  _runMetadata;
19
19
  _result;
20
20
  _sarifPath;
@@ -90,4 +90,4 @@ class SarifFinding {
90
90
  return SecuritySeverity.None;
91
91
  }
92
92
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmluZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9GaW5kaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDbkUsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBRTlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQTBCaEU7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFvQjtJQUNoRCxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQy9CLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sWUFBWTtJQUNDLFlBQVksQ0FBUztJQUNyQixPQUFPLENBQVE7SUFDZixVQUFVLENBQVE7SUFDbEIsS0FBSyxDQUFzQjtJQUMzQixVQUFVLENBQWlCO0lBRXBDLHdCQUF3QixHQUFZLEtBQUssQ0FBQTtJQUN6QyxlQUFlLEdBQXVCLFNBQVMsQ0FBQTtJQUUvQyxvQkFBb0IsR0FBWSxLQUFLLENBQUE7SUFDckMsV0FBVyxHQUE2QixTQUFTLENBQUE7SUFFekQsWUFBWSxJQUFvQjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFBO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQzVDLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxhQUFhLENB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
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmluZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9GaW5kaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDbkUsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBRTlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQTBCaEU7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFvQjtJQUNoRCxPQUFPLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzlCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sV0FBVztJQUNFLFlBQVksQ0FBUztJQUNyQixPQUFPLENBQVE7SUFDZixVQUFVLENBQVE7SUFDbEIsS0FBSyxDQUFzQjtJQUMzQixVQUFVLENBQWlCO0lBRXBDLHdCQUF3QixHQUFZLEtBQUssQ0FBQTtJQUN6QyxlQUFlLEdBQXVCLFNBQVMsQ0FBQTtJQUUvQyxvQkFBb0IsR0FBWSxLQUFLLENBQUE7SUFDckMsV0FBVyxHQUE2QixTQUFTLENBQUE7SUFFekQsWUFBWSxJQUFvQjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFBO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQzVDLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxhQUFhLENB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
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=FindingArray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FindingArray.d.ts","sourceRoot":"","sources":["../../src/model/FindingArray.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import { SecurityLevel, SecuritySeverity } from '../types';
2
+ import ExtendedArray from '../utils/ExtendedArray';
3
+ /**
4
+ * This class represents an array of {@link Finding} objects and adds additional
5
+ * useful methods to it.
6
+ * @internal
7
+ */
8
+ export default class FindingArray extends ExtendedArray {
9
+ hasSeverityOrHigher(severity) {
10
+ return Object
11
+ .values(SecuritySeverity)
12
+ .filter((v) => typeof v === 'number')
13
+ .filter((v) => v >= severity)
14
+ .some((v) => this.findByProperty('severity', v) != null);
15
+ }
16
+ hasLevelOrHigher(level) {
17
+ return Object
18
+ .values(SecurityLevel)
19
+ .filter((v) => typeof v === 'number')
20
+ .filter((v) => v >= level)
21
+ .some((v) => this.findByProperty('level', v) != null);
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmluZGluZ0FycmF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL0ZpbmRpbmdBcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzFELE9BQU8sYUFBYSxNQUFNLHdCQUF3QixDQUFBO0FBRWxEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLFlBQWEsU0FBUSxhQUFzQjtJQUV2RCxtQkFBbUIsQ0FBQyxRQUEwQjtRQUNuRCxPQUFPLE1BQU07YUFDVixNQUFNLENBQUMsZ0JBQWdCLENBQUM7YUFDeEIsTUFBTSxDQUFDLENBQUMsQ0FBNEIsRUFBeUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQzthQUN0RixNQUFNLENBQUMsQ0FBQyxDQUFtQixFQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDO2FBQ3ZELElBQUksQ0FBQyxDQUFDLENBQW1CLEVBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFBO0lBQ3ZGLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFvQjtRQUMxQyxPQUFPLE1BQU07YUFDVixNQUFNLENBQUMsYUFBYSxDQUFDO2FBQ3JCLE1BQU0sQ0FBQyxDQUFDLENBQXlCLEVBQXNCLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUM7YUFDaEYsTUFBTSxDQUFDLENBQUMsQ0FBZ0IsRUFBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQzthQUNqRCxJQUFJLENBQUMsQ0FBQyxDQUFnQixFQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQTtJQUNqRixDQUFDO0NBQ0YifQ==
@@ -0,0 +1,116 @@
1
+ /**
2
+ * This enum represents the condition on when message should be sent. If this
3
+ * condition is satisfied then message is sent, otherwise - message is not sent.
4
+ * @public
5
+ */
6
+ export declare enum SendIf {
7
+ /**
8
+ * Send message only if there is at least one finding with "Critical" severity.
9
+ * Since it is the higher possible severity, it is the same as "Critical" or
10
+ * higher.
11
+ */
12
+ SeverityCritical = 0,
13
+ /**
14
+ * Send message only if there is at least one finding with "High" severity.
15
+ */
16
+ SeverityHigh = 1,
17
+ /**
18
+ * Send message only if there is at least one finding with "High" severity or
19
+ * higher, that includes "High" and "Critical".
20
+ */
21
+ SeverityHighOrHigher = 2,
22
+ /**
23
+ * Send message only if there is at least one finding with "Medium" severity.
24
+ */
25
+ SeverityMedium = 3,
26
+ /**
27
+ * Send message only if there is at least one finding with "Medium" severity
28
+ * or higher, that includes "Medium", "High" and "Critical".
29
+ */
30
+ SeverityMediumOrHigher = 4,
31
+ /**
32
+ * Send message only if there is at least one finding with "Low" severity.
33
+ */
34
+ SeverityLow = 5,
35
+ /**
36
+ * Send message only if there is at least one finding with "Low" severity or
37
+ * higher, that includes "Low", "Medium", "High" and "Critical".
38
+ */
39
+ SeverityLowOrHigher = 6,
40
+ /**
41
+ * Send message only if there is at least one finding with "None" severity.
42
+ */
43
+ SeverityNone = 7,
44
+ /**
45
+ * Send message only if there is at least one finding with "None" severity or
46
+ * higher, that includes "None", "Low", "Medium", "High" and "Critical".
47
+ */
48
+ SeverityNoneOrHigher = 8,
49
+ /**
50
+ * Send message only if there is at least one finding with "Unknown" severity.
51
+ */
52
+ SeverityUnknown = 9,
53
+ /**
54
+ * Send message only if there is at least one finding with "Unknown" severity
55
+ * or higher, that includes "Unknown", "None", "Low", "Medium", "High" and "Critical".
56
+ */
57
+ SeverityUnknownOrHigher = 10,
58
+ /**
59
+ * Send message only if there is at least one finding with "Error" level.
60
+ * Since it is the higher possible level, it is the same as "Error" or higher.
61
+ */
62
+ LevelError = 11,
63
+ /**
64
+ * Send message only if there is at least one finding with "Warning" level.
65
+ */
66
+ LevelWarning = 12,
67
+ /**
68
+ * Send message only if there is at least one finding with "Warning" level or
69
+ * higher, that includes "Warning" and "Error".
70
+ */
71
+ LevelWarningOrHigher = 13,
72
+ /**
73
+ * Send message only if there is at least one finding with "Note" level.
74
+ */
75
+ LevelNote = 14,
76
+ /**
77
+ * Send message only if there is at least one finding with "Note" level or
78
+ * higher, that includes "Note", "Warning" and "Error.
79
+ */
80
+ LevelNoteOrHigher = 15,
81
+ /**
82
+ * Send message only if there is at least one finding with "None" level.
83
+ */
84
+ LevelNone = 16,
85
+ /**
86
+ * Send message only if there is at least one finding with "None" level or
87
+ * higher, that includes "None", "Note", "Warning" and "Error.
88
+ */
89
+ LevelNoneOrHigher = 17,
90
+ /**
91
+ * Send message only if there is at least one finding with "Unknown" level.
92
+ */
93
+ LevelUnknown = 18,
94
+ /**
95
+ * Send message only if there is at least one finding with "Unknown" level or
96
+ * higher, that includes "Unknown", "None", "Note", "Warning" and "Error.
97
+ */
98
+ LevelUnknownOrHigher = 19,
99
+ /**
100
+ * Always send a message.
101
+ */
102
+ Always = 20,
103
+ /**
104
+ * Send a message if at least 1 vulnerability is found.
105
+ */
106
+ Some = 21,
107
+ /**
108
+ * Send a message only if no vulnerabilities are found.
109
+ */
110
+ Empty = 22,
111
+ /**
112
+ * Never send a message.
113
+ */
114
+ Never = 23
115
+ }
116
+ //# sourceMappingURL=SendIf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SendIf.d.ts","sourceRoot":"","sources":["../../src/model/SendIf.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oBAAY,MAAM;IAChB;;;;OAIG;IACH,gBAAgB,IAAA;IAChB;;OAEG;IACH,YAAY,IAAA;IACZ;;;OAGG;IACH,oBAAoB,IAAA;IACpB;;OAEG;IACH,cAAc,IAAA;IACd;;;OAGG;IACH,sBAAsB,IAAA;IACtB;;OAEG;IACH,WAAW,IAAA;IACX;;;OAGG;IACH,mBAAmB,IAAA;IACnB;;OAEG;IACH,YAAY,IAAA;IACZ;;;OAGG;IACH,oBAAoB,IAAA;IACpB;;OAEG;IACH,eAAe,IAAA;IACf;;;OAGG;IACH,uBAAuB,KAAA;IACvB;;;OAGG;IACH,UAAU,KAAA;IACV;;OAEG;IACH,YAAY,KAAA;IACZ;;;OAGG;IACH,oBAAoB,KAAA;IACpB;;OAEG;IACH,SAAS,KAAA;IACT;;;OAGG;IACH,iBAAiB,KAAA;IACjB;;OAEG;IACH,SAAS,KAAA;IACT;;;OAGG;IACH,iBAAiB,KAAA;IACjB;;OAEG;IACH,YAAY,KAAA;IACZ;;;OAGG;IACH,oBAAoB,KAAA;IACpB;;OAEG;IACH,MAAM,KAAA;IACN;;OAEG;IACH,IAAI,KAAA;IACJ;;OAEG;IACH,KAAK,KAAA;IACL;;OAEG;IACH,KAAK,KAAA;CACN"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * This enum represents the condition on when message should be sent. If this
3
+ * condition is satisfied then message is sent, otherwise - message is not sent.
4
+ * @public
5
+ */
6
+ export var SendIf;
7
+ (function (SendIf) {
8
+ /**
9
+ * Send message only if there is at least one finding with "Critical" severity.
10
+ * Since it is the higher possible severity, it is the same as "Critical" or
11
+ * higher.
12
+ */
13
+ SendIf[SendIf["SeverityCritical"] = 0] = "SeverityCritical";
14
+ /**
15
+ * Send message only if there is at least one finding with "High" severity.
16
+ */
17
+ SendIf[SendIf["SeverityHigh"] = 1] = "SeverityHigh";
18
+ /**
19
+ * Send message only if there is at least one finding with "High" severity or
20
+ * higher, that includes "High" and "Critical".
21
+ */
22
+ SendIf[SendIf["SeverityHighOrHigher"] = 2] = "SeverityHighOrHigher";
23
+ /**
24
+ * Send message only if there is at least one finding with "Medium" severity.
25
+ */
26
+ SendIf[SendIf["SeverityMedium"] = 3] = "SeverityMedium";
27
+ /**
28
+ * Send message only if there is at least one finding with "Medium" severity
29
+ * or higher, that includes "Medium", "High" and "Critical".
30
+ */
31
+ SendIf[SendIf["SeverityMediumOrHigher"] = 4] = "SeverityMediumOrHigher";
32
+ /**
33
+ * Send message only if there is at least one finding with "Low" severity.
34
+ */
35
+ SendIf[SendIf["SeverityLow"] = 5] = "SeverityLow";
36
+ /**
37
+ * Send message only if there is at least one finding with "Low" severity or
38
+ * higher, that includes "Low", "Medium", "High" and "Critical".
39
+ */
40
+ SendIf[SendIf["SeverityLowOrHigher"] = 6] = "SeverityLowOrHigher";
41
+ /**
42
+ * Send message only if there is at least one finding with "None" severity.
43
+ */
44
+ SendIf[SendIf["SeverityNone"] = 7] = "SeverityNone";
45
+ /**
46
+ * Send message only if there is at least one finding with "None" severity or
47
+ * higher, that includes "None", "Low", "Medium", "High" and "Critical".
48
+ */
49
+ SendIf[SendIf["SeverityNoneOrHigher"] = 8] = "SeverityNoneOrHigher";
50
+ /**
51
+ * Send message only if there is at least one finding with "Unknown" severity.
52
+ */
53
+ SendIf[SendIf["SeverityUnknown"] = 9] = "SeverityUnknown";
54
+ /**
55
+ * Send message only if there is at least one finding with "Unknown" severity
56
+ * or higher, that includes "Unknown", "None", "Low", "Medium", "High" and "Critical".
57
+ */
58
+ SendIf[SendIf["SeverityUnknownOrHigher"] = 10] = "SeverityUnknownOrHigher";
59
+ /**
60
+ * Send message only if there is at least one finding with "Error" level.
61
+ * Since it is the higher possible level, it is the same as "Error" or higher.
62
+ */
63
+ SendIf[SendIf["LevelError"] = 11] = "LevelError";
64
+ /**
65
+ * Send message only if there is at least one finding with "Warning" level.
66
+ */
67
+ SendIf[SendIf["LevelWarning"] = 12] = "LevelWarning";
68
+ /**
69
+ * Send message only if there is at least one finding with "Warning" level or
70
+ * higher, that includes "Warning" and "Error".
71
+ */
72
+ SendIf[SendIf["LevelWarningOrHigher"] = 13] = "LevelWarningOrHigher";
73
+ /**
74
+ * Send message only if there is at least one finding with "Note" level.
75
+ */
76
+ SendIf[SendIf["LevelNote"] = 14] = "LevelNote";
77
+ /**
78
+ * Send message only if there is at least one finding with "Note" level or
79
+ * higher, that includes "Note", "Warning" and "Error.
80
+ */
81
+ SendIf[SendIf["LevelNoteOrHigher"] = 15] = "LevelNoteOrHigher";
82
+ /**
83
+ * Send message only if there is at least one finding with "None" level.
84
+ */
85
+ SendIf[SendIf["LevelNone"] = 16] = "LevelNone";
86
+ /**
87
+ * Send message only if there is at least one finding with "None" level or
88
+ * higher, that includes "None", "Note", "Warning" and "Error.
89
+ */
90
+ SendIf[SendIf["LevelNoneOrHigher"] = 17] = "LevelNoneOrHigher";
91
+ /**
92
+ * Send message only if there is at least one finding with "Unknown" level.
93
+ */
94
+ SendIf[SendIf["LevelUnknown"] = 18] = "LevelUnknown";
95
+ /**
96
+ * Send message only if there is at least one finding with "Unknown" level or
97
+ * higher, that includes "Unknown", "None", "Note", "Warning" and "Error.
98
+ */
99
+ SendIf[SendIf["LevelUnknownOrHigher"] = 19] = "LevelUnknownOrHigher";
100
+ /**
101
+ * Always send a message.
102
+ */
103
+ SendIf[SendIf["Always"] = 20] = "Always";
104
+ /**
105
+ * Send a message if at least 1 vulnerability is found.
106
+ */
107
+ SendIf[SendIf["Some"] = 21] = "Some";
108
+ /**
109
+ * Send a message only if no vulnerabilities are found.
110
+ */
111
+ SendIf[SendIf["Empty"] = 22] = "Empty";
112
+ /**
113
+ * Never send a message.
114
+ */
115
+ SendIf[SendIf["Never"] = 23] = "Never";
116
+ })(SendIf || (SendIf = {}));
117
+ /**
118
+ * Returns log message based on the provided {@param sendIf} parameter.
119
+ * @param sendIf An instance of {@link SendIf} enum.
120
+ * @internal
121
+ */
122
+ export function sendIfLogMessage(sendIf) {
123
+ switch (sendIf) {
124
+ case SendIf.SeverityCritical:
125
+ return 'No message sent: no findings with "Critical" severity.';
126
+ case SendIf.SeverityHigh:
127
+ return 'No message sent: no findings with "High" severity.';
128
+ case SendIf.SeverityHighOrHigher:
129
+ return 'No message sent: no findings with "High" or higher severity.';
130
+ case SendIf.SeverityMedium:
131
+ return 'No message sent: no findings with "Medium" severity.';
132
+ case SendIf.SeverityMediumOrHigher:
133
+ return 'No message sent: no findings with "Medium" or higher severity.';
134
+ case SendIf.SeverityLow:
135
+ return 'No message sent: no findings with "Low" severity.';
136
+ case SendIf.SeverityLowOrHigher:
137
+ return 'No message sent: no findings with "Low" or higher severity.';
138
+ case SendIf.SeverityNone:
139
+ return 'No message sent: no findings with "None" severity.';
140
+ case SendIf.SeverityNoneOrHigher:
141
+ return 'No message sent: no findings with "None" or higher severity.';
142
+ case SendIf.SeverityUnknown:
143
+ return 'No message sent: no findings with "Unknown" severity.';
144
+ case SendIf.SeverityUnknownOrHigher:
145
+ return 'No message sent: no findings with "Unknown" or higher severity.';
146
+ case SendIf.LevelError:
147
+ return 'No message sent: no findings with "Error" level.';
148
+ case SendIf.LevelWarning:
149
+ return 'No message sent: no findings with "Warning" level.';
150
+ case SendIf.LevelWarningOrHigher:
151
+ return 'No message sent: no findings with "Warning" or higher level.';
152
+ case SendIf.LevelNote:
153
+ return 'No message sent: no findings with "Note" level.';
154
+ case SendIf.LevelNoteOrHigher:
155
+ return 'No message sent: no findings with "Note" or higher level.';
156
+ case SendIf.LevelNone:
157
+ return 'No message sent: no findings with "None" level.';
158
+ case SendIf.LevelNoneOrHigher:
159
+ return 'No message sent: no findings with "None" or higher level.';
160
+ case SendIf.LevelUnknown:
161
+ return 'No message sent: no findings with "Unknown" level.';
162
+ case SendIf.LevelUnknownOrHigher:
163
+ return 'No message sent: no findings with "Unknown" or higher level.';
164
+ case SendIf.Always:
165
+ return 'Message always sent.';
166
+ case SendIf.Some:
167
+ return 'No message sent: findings are not found.';
168
+ case SendIf.Empty:
169
+ return 'No message sent: some findings are found.';
170
+ case SendIf.Never:
171
+ return 'No message sent: sending is disabled.';
172
+ default:
173
+ return 'Unknown SendIf value.';
174
+ }
175
+ }
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VuZElmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL1NlbmRJZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFOLElBQVksTUE2R1g7QUE3R0QsV0FBWSxNQUFNO0lBQ2hCOzs7O09BSUc7SUFDSCwyREFBZ0IsQ0FBQTtJQUNoQjs7T0FFRztJQUNILG1EQUFZLENBQUE7SUFDWjs7O09BR0c7SUFDSCxtRUFBb0IsQ0FBQTtJQUNwQjs7T0FFRztJQUNILHVEQUFjLENBQUE7SUFDZDs7O09BR0c7SUFDSCx1RUFBc0IsQ0FBQTtJQUN0Qjs7T0FFRztJQUNILGlEQUFXLENBQUE7SUFDWDs7O09BR0c7SUFDSCxpRUFBbUIsQ0FBQTtJQUNuQjs7T0FFRztJQUNILG1EQUFZLENBQUE7SUFDWjs7O09BR0c7SUFDSCxtRUFBb0IsQ0FBQTtJQUNwQjs7T0FFRztJQUNILHlEQUFlLENBQUE7SUFDZjs7O09BR0c7SUFDSCwwRUFBdUIsQ0FBQTtJQUN2Qjs7O09BR0c7SUFDSCxnREFBVSxDQUFBO0lBQ1Y7O09BRUc7SUFDSCxvREFBWSxDQUFBO0lBQ1o7OztPQUdHO0lBQ0gsb0VBQW9CLENBQUE7SUFDcEI7O09BRUc7SUFDSCw4Q0FBUyxDQUFBO0lBQ1Q7OztPQUdHO0lBQ0gsOERBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCw4Q0FBUyxDQUFBO0lBQ1Q7OztPQUdHO0lBQ0gsOERBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCxvREFBWSxDQUFBO0lBQ1o7OztPQUdHO0lBQ0gsb0VBQW9CLENBQUE7SUFDcEI7O09BRUc7SUFDSCx3Q0FBTSxDQUFBO0lBQ047O09BRUc7SUFDSCxvQ0FBSSxDQUFBO0lBQ0o7O09BRUc7SUFDSCxzQ0FBSyxDQUFBO0lBQ0w7O09BRUc7SUFDSCxzQ0FBSyxDQUFBO0FBQ1AsQ0FBQyxFQTdHVyxNQUFNLEtBQU4sTUFBTSxRQTZHakI7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE1BQWM7SUFDN0MsUUFBUSxNQUFNLEVBQUUsQ0FBQztRQUNmLEtBQUssTUFBTSxDQUFDLGdCQUFnQjtZQUMxQixPQUFPLHdEQUF3RCxDQUFBO1FBQ2pFLEtBQUssTUFBTSxDQUFDLFlBQVk7WUFDdEIsT0FBTyxvREFBb0QsQ0FBQTtRQUM3RCxLQUFLLE1BQU0sQ0FBQyxvQkFBb0I7WUFDOUIsT0FBTyw4REFBOEQsQ0FBQTtRQUN2RSxLQUFLLE1BQU0sQ0FBQyxjQUFjO1lBQ3hCLE9BQU8sc0RBQXNELENBQUE7UUFDL0QsS0FBSyxNQUFNLENBQUMsc0JBQXNCO1lBQ2hDLE9BQU8sZ0VBQWdFLENBQUE7UUFDekUsS0FBSyxNQUFNLENBQUMsV0FBVztZQUNyQixPQUFPLG1EQUFtRCxDQUFBO1FBQzVELEtBQUssTUFBTSxDQUFDLG1CQUFtQjtZQUM3QixPQUFPLDZEQUE2RCxDQUFBO1FBQ3RFLEtBQUssTUFBTSxDQUFDLFlBQVk7WUFDdEIsT0FBTyxvREFBb0QsQ0FBQTtRQUM3RCxLQUFLLE1BQU0sQ0FBQyxvQkFBb0I7WUFDOUIsT0FBTyw4REFBOEQsQ0FBQTtRQUN2RSxLQUFLLE1BQU0sQ0FBQyxlQUFlO1lBQ3pCLE9BQU8sdURBQXVELENBQUE7UUFDaEUsS0FBSyxNQUFNLENBQUMsdUJBQXVCO1lBQ2pDLE9BQU8saUVBQWlFLENBQUE7UUFDMUUsS0FBSyxNQUFNLENBQUMsVUFBVTtZQUNwQixPQUFPLGtEQUFrRCxDQUFBO1FBQzNELEtBQUssTUFBTSxDQUFDLFlBQVk7WUFDdEIsT0FBTyxvREFBb0QsQ0FBQTtRQUM3RCxLQUFLLE1BQU0sQ0FBQyxvQkFBb0I7WUFDOUIsT0FBTyw4REFBOEQsQ0FBQTtRQUN2RSxLQUFLLE1BQU0sQ0FBQyxTQUFTO1lBQ25CLE9BQU8saURBQWlELENBQUE7UUFDMUQsS0FBSyxNQUFNLENBQUMsaUJBQWlCO1lBQzNCLE9BQU8sMkRBQTJELENBQUE7UUFDcEUsS0FBSyxNQUFNLENBQUMsU0FBUztZQUNuQixPQUFPLGlEQUFpRCxDQUFBO1FBQzFELEtBQUssTUFBTSxDQUFDLGlCQUFpQjtZQUMzQixPQUFPLDJEQUEyRCxDQUFBO1FBQ3BFLEtBQUssTUFBTSxDQUFDLFlBQVk7WUFDdEIsT0FBTyxvREFBb0QsQ0FBQTtRQUM3RCxLQUFLLE1BQU0sQ0FBQyxvQkFBb0I7WUFDOUIsT0FBTyw4REFBOEQsQ0FBQTtRQUN2RSxLQUFLLE1BQU0sQ0FBQyxNQUFNO1lBQ2hCLE9BQU8sc0JBQXNCLENBQUE7UUFDL0IsS0FBSyxNQUFNLENBQUMsSUFBSTtZQUNkLE9BQU8sMENBQTBDLENBQUE7UUFDbkQsS0FBSyxNQUFNLENBQUMsS0FBSztZQUNmLE9BQU8sMkNBQTJDLENBQUE7UUFDcEQsS0FBSyxNQUFNLENBQUMsS0FBSztZQUNmLE9BQU8sdUNBQXVDLENBQUE7UUFDaEQ7WUFDRSxPQUFPLHVCQUF1QixDQUFBO0lBQ2xDLENBQUM7QUFDSCxDQUFDIn0=
@@ -0,0 +1,23 @@
1
+ import { FooterType } from '../types';
2
+ /**
3
+ * Interface for a Slack message that can be sent.
4
+ * @public
5
+ */
6
+ export interface SlackMessage {
7
+ /**
8
+ * Sends the Slack message.
9
+ * @returns A promise that resolves to the response from the Slack webhook.
10
+ */
11
+ send: () => Promise<string>;
12
+ withActor(actor?: string): void;
13
+ withFooter(text?: string, type?: FooterType): void;
14
+ withHeader(header?: string): void;
15
+ withRun(): void;
16
+ }
17
+ /**
18
+ * Creates a new instance of {@link SlackMessage} class.
19
+ * @param url Slack webhook URL
20
+ * @param opts An instance of {@link SlackMessageOptions} type.
21
+ */
22
+ export declare function createSlackMessage(url: string, opts: SlackMessageOptions): SlackMessage;
23
+ //# sourceMappingURL=SlackMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlackMessage.d.ts","sourceRoot":"","sources":["../../src/model/SlackMessage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAerC;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3B,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAClD,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAEvF"}
@@ -0,0 +1,99 @@
1
+ import { IncomingWebhook } from '@slack/webhook';
2
+ import { FooterType } from '../types';
3
+ import { version } from '../metadata.json';
4
+ /**
5
+ * Creates a new instance of {@link SlackMessage} class.
6
+ * @param url Slack webhook URL
7
+ * @param opts An instance of {@link SlackMessageOptions} type.
8
+ */
9
+ export function createSlackMessage(url, opts) {
10
+ return new SlackMessageImpl(url, opts);
11
+ }
12
+ /**
13
+ * Class for building and sending Slack messages based on SARIF logs.
14
+ * @internal
15
+ */
16
+ class SlackMessageImpl {
17
+ _webhook;
18
+ _gitHubServerUrl;
19
+ _color;
20
+ _representation;
21
+ _header;
22
+ _footer;
23
+ _actor;
24
+ _runId;
25
+ constructor(url, opts) {
26
+ this._webhook = new IncomingWebhook(url, {
27
+ username: opts.username || 'SARIF results',
28
+ icon_url: opts.iconUrl
29
+ });
30
+ this._gitHubServerUrl = process.env.GITHUB_SERVER_URL || 'https://github.com';
31
+ this._color = opts.color;
32
+ this._representation = opts.representation;
33
+ }
34
+ withHeader(header) {
35
+ this._header = {
36
+ type: 'header',
37
+ text: {
38
+ type: 'plain_text',
39
+ text: header || process.env.GITHUB_REPOSITORY || 'SARIF results'
40
+ }
41
+ };
42
+ }
43
+ withActor(actor) {
44
+ this._actor = actor || process.env.GITHUB_ACTOR;
45
+ }
46
+ withRun() {
47
+ this._runId = process.env.GITHUB_RUN_ID;
48
+ }
49
+ withFooter(text, type) {
50
+ const repoName = 'fabasoad/sarif-to-slack';
51
+ const element = text
52
+ ? { type: type || FooterType.PlainText, text }
53
+ : { type: FooterType.Markdown, text: `Generated by <${this._gitHubServerUrl}/${repoName}|@${repoName}@${version}>` };
54
+ this._footer = {
55
+ type: 'context',
56
+ elements: [element],
57
+ };
58
+ }
59
+ async send() {
60
+ const blocks = [];
61
+ if (this._header) {
62
+ blocks.push(this._header);
63
+ }
64
+ blocks.push({
65
+ type: 'section',
66
+ text: {
67
+ type: 'mrkdwn',
68
+ text: this.buildText(),
69
+ }
70
+ });
71
+ if (this._footer) {
72
+ blocks.push(this._footer);
73
+ }
74
+ const { text } = await this._webhook.send({
75
+ attachments: [{ color: this._color, blocks }]
76
+ });
77
+ return text;
78
+ }
79
+ buildText() {
80
+ const text = [];
81
+ if (this._actor) {
82
+ const actorUrl = `${this._gitHubServerUrl}/${this._actor}`;
83
+ text.push(`_Triggered by <${actorUrl}|${this._actor}>_`);
84
+ }
85
+ text.push(this._representation.compose());
86
+ if (this._runId) {
87
+ let runText = 'Job ';
88
+ if (process.env.GITHUB_REPOSITORY) {
89
+ runText += `<${this._gitHubServerUrl}/${process.env.GITHUB_REPOSITORY}/actions/runs/${this._runId}|#${this._runId}>`;
90
+ }
91
+ else {
92
+ runText += `#${this._runId}`;
93
+ }
94
+ text.push(runText);
95
+ }
96
+ return text.join('\n\n');
97
+ }
98
+ }
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2xhY2tNZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL1NsYWNrTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUVyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUE2QjFDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBVyxFQUFFLElBQXlCO0lBQ3ZFLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDeEMsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sZ0JBQWdCO0lBQ0gsUUFBUSxDQUFpQjtJQUN6QixnQkFBZ0IsQ0FBUTtJQUN4QixNQUFNLENBQVM7SUFDZixlQUFlLENBQWdCO0lBRXhDLE9BQU8sQ0FBYztJQUNyQixPQUFPLENBQWU7SUFDdEIsTUFBTSxDQUFTO0lBQ2YsTUFBTSxDQUFTO0lBRXZCLFlBQVksR0FBVyxFQUFFLElBQXlCO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLGVBQWU7WUFDMUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3ZCLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLG9CQUFvQixDQUFBO1FBQzdFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUE7SUFDNUMsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFlO1FBQ3hCLElBQUks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
@@ -1,5 +1,5 @@
1
1
  import { findingsComparatorByKey } from '../utils/Comparators';
2
- import FindingsArray from '../model/FindingsArray';
2
+ import FindingArray from '../model/FindingArray';
3
3
  /**
4
4
  * The most base abstract class for the representation. Every representation class
5
5
  * must be derived from this class implicitly or explicitly.
@@ -16,7 +16,7 @@ export default class Representation {
16
16
  .reduce((arr, f) => {
17
17
  arr.push(f);
18
18
  return arr;
19
- }, new FindingsArray());
19
+ }, new FindingArray());
20
20
  }
21
21
  bold(text) {
22
22
  return `*${text}*`;
@@ -25,4 +25,4 @@ export default class Representation {
25
25
  return `_${text}_`;
26
26
  }
27
27
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwcmVzZW50YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVwcmVzZW50YXRpb25zL1JlcHJlc2VudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzlELE9BQU8sYUFBYSxNQUFNLHdCQUF3QixDQUFBO0FBRWxEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFnQixjQUFjO0lBQ3ZCLE1BQU0sQ0FBWTtJQUVyQyxZQUFtQixLQUFpQixFQUFFLGlCQUFnQyxPQUFPO1FBQzNFLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUs7YUFDekIsUUFBUTthQUNSLEdBQUcsQ0FBQyxDQUFDLENBQVUsRUFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3ZDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUM3QyxNQUFNLENBQUMsQ0FBQyxHQUFrQixFQUFFLENBQVUsRUFBaUIsRUFBRTtZQUN4RCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ1gsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDLEVBQUUsSUFBSSxhQUFhLEVBQUUsQ0FBQyxDQUFBO0lBQzNCLENBQUM7SUFFUyxJQUFJLENBQUMsSUFBWTtRQUN6QixPQUFPLElBQUksSUFBSSxHQUFHLENBQUE7SUFDcEIsQ0FBQztJQUVTLE1BQU0sQ0FBQyxJQUFZO1FBQzNCLE9BQU8sSUFBSSxJQUFJLEdBQUcsQ0FBQTtJQUNwQixDQUFDO0NBR0YifQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwcmVzZW50YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVwcmVzZW50YXRpb25zL1JlcHJlc2VudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzlELE9BQU8sWUFBWSxNQUFNLHVCQUF1QixDQUFBO0FBRWhEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFnQixjQUFjO0lBQ3ZCLE1BQU0sQ0FBWTtJQUVyQyxZQUFtQixLQUFpQixFQUFFLGlCQUFnQyxPQUFPO1FBQzNFLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUs7YUFDekIsUUFBUTthQUNSLEdBQUcsQ0FBQyxDQUFDLENBQVUsRUFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3ZDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUM3QyxNQUFNLENBQUMsQ0FBQyxHQUFpQixFQUFFLENBQVUsRUFBZ0IsRUFBRTtZQUN0RCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ1gsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDLEVBQUUsSUFBSSxZQUFZLEVBQUUsQ0FBQyxDQUFBO0lBQzFCLENBQUM7SUFFUyxJQUFJLENBQUMsSUFBWTtRQUN6QixPQUFPLElBQUksSUFBSSxHQUFHLENBQUE7SUFDcEIsQ0FBQztJQUVTLE1BQU0sQ0FBQyxJQUFZO1FBQzNCLE9BQU8sSUFBSSxJQUFJLEdBQUcsQ0FBQTtJQUNwQixDQUFDO0NBR0YifQ==
@@ -21,6 +21,8 @@
21
21
  * username: 'SARIF to Slack Bot',
22
22
  * iconUrl: 'https://example.com/icon.png',
23
23
  * color: {
24
+ * default: new Color('failure'),
25
+ * empty: new Color('success'),
24
26
  * bySeverity: {
25
27
  * critical: new Color('#ff0000'),
26
28
  * high: new Color('#ff4500'),
@@ -28,7 +30,13 @@
28
30
  * low: new Color('#ffff00'),
29
31
  * none: new Color('#808080'),
30
32
  * unknown: new Color('#800080'),
31
- * empty: new Color('#d3d3d3'),
33
+ * },
34
+ * byLevel: {
35
+ * error: new Color('#ff0000'),
36
+ * warning: new Color('#ffa500'),
37
+ * note: new Color('#ffff00'),
38
+ * none: new Color('#808080'),
39
+ * unknown: new Color('#800080'),
32
40
  * },
33
41
  * },
34
42
  * sarif: {
@@ -88,7 +96,7 @@ export declare class Color {
88
96
  * Returns a valid string that represents a color in hex format, or undefined.
89
97
  */
90
98
  get value(): string | undefined;
91
- private validateHexColor;
99
+ private assertHexColor;
92
100
  private mapColor;
93
101
  }
94
102
 
@@ -127,7 +135,6 @@ export declare type ColorGroupBySeverity = ColorGroupCommon & {
127
135
  declare type ColorGroupCommon = {
128
136
  none?: Color;
129
137
  unknown?: Color;
130
- empty?: Color;
131
138
  };
132
139
 
133
140
  /**
@@ -149,6 +156,10 @@ export declare type ColorOptions = {
149
156
  * Color scheme for the findings where certain severity is presented.
150
157
  */
151
158
  bySeverity?: ColorGroupBySeverity;
159
+ /**
160
+ * Color when no findings are found.
161
+ */
162
+ empty?: Color;
152
163
  };
153
164
 
154
165
  /**