@fabasoad/sarif-to-slack 1.0.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.
- package/dist/SarifToSlackClient.d.ts.map +1 -1
- package/dist/SarifToSlackClient.js +8 -10
- package/dist/index.cjs +148 -111
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -3
- package/dist/model/Color.d.ts +18 -5
- package/dist/model/Color.d.ts.map +1 -1
- package/dist/model/Color.js +23 -37
- package/dist/model/Finding.js +3 -3
- package/dist/model/FindingArray.d.ts +2 -0
- package/dist/model/FindingArray.d.ts.map +1 -0
- package/dist/model/FindingArray.js +24 -0
- package/dist/model/SendIf.d.ts +116 -0
- package/dist/model/SendIf.d.ts.map +1 -0
- package/dist/model/SendIf.js +176 -0
- package/dist/model/SlackMessage.d.ts +23 -0
- package/dist/model/SlackMessage.d.ts.map +1 -0
- package/dist/model/SlackMessage.js +99 -0
- package/dist/representations/Representation.js +3 -3
- package/dist/sarif-to-slack.d.ts +28 -7
- package/dist/types.d.ts +3 -132
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -117
- package/etc/sarif-to-slack.api.md +3 -1
- package/package.json +1 -1
- package/src/SarifToSlackClient.ts +7 -11
- package/src/index.ts +12 -4
- package/src/model/Color.ts +43 -46
- package/src/model/Finding.ts +3 -3
- package/src/model/{FindingsArray.ts → FindingArray.ts} +3 -3
- package/src/model/SendIf.ts +175 -0
- package/src/{SlackMessageBuilder.ts → model/SlackMessage.ts} +31 -6
- package/src/processors/CodeQLProcessor.ts +1 -1
- package/src/representations/CompactGroupByRepresentation.ts +1 -1
- package/src/representations/CompactGroupByRunRepresentation.ts +1 -1
- package/src/representations/CompactGroupBySarifRepresentation.ts +1 -1
- package/src/representations/CompactGroupByToolNameRepresentation.ts +1 -1
- package/src/representations/CompactTotalRepresentation.ts +1 -1
- package/src/representations/Representation.ts +4 -4
- package/src/types.ts +5 -136
- package/src/utils/Comparators.ts +1 -1
- package/tests/integration/SendSarifToSlack.spec.ts +11 -12
- package/dist/SlackMessageBuilder.d.ts +0 -2
- package/dist/SlackMessageBuilder.d.ts.map +0 -1
- package/dist/SlackMessageBuilder.js +0 -91
- package/dist/model/FindingsArray.d.ts +0 -2
- package/dist/model/FindingsArray.d.ts.map +0 -1
- package/dist/model/FindingsArray.js +0 -24
package/dist/model/Color.js
CHANGED
|
@@ -16,7 +16,7 @@ export class Color {
|
|
|
16
16
|
*/
|
|
17
17
|
constructor(color) {
|
|
18
18
|
this._color = this.mapColor(color);
|
|
19
|
-
this.
|
|
19
|
+
this.assertHexColor();
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* Returns a valid string that represents a color in hex format, or undefined.
|
|
@@ -24,7 +24,7 @@ export class Color {
|
|
|
24
24
|
get value() {
|
|
25
25
|
return this._color;
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
assertHexColor() {
|
|
28
28
|
if (this._color != null) {
|
|
29
29
|
const hexColorRegex = /^#(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{4}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$/;
|
|
30
30
|
if (!hexColorRegex.test(this._color)) {
|
|
@@ -47,25 +47,16 @@ export class Color {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
function
|
|
51
|
-
return color != null && color instanceof Color;
|
|
52
|
-
}
|
|
53
|
-
function isColorOptions(color) {
|
|
54
|
-
return color != null;
|
|
55
|
-
}
|
|
56
|
-
function identifyColorCommon(findings, prop, none, unknown, color) {
|
|
50
|
+
function identifyColorCommon(findings, prop, none, unknown, color, defaultColor) {
|
|
57
51
|
if (color.none != null && findings.findByProperty(prop, none) != null) {
|
|
58
52
|
return color.none.value;
|
|
59
53
|
}
|
|
60
54
|
if (color.unknown != null && findings.findByProperty(prop, unknown) != null) {
|
|
61
55
|
return color.unknown.value;
|
|
62
56
|
}
|
|
63
|
-
|
|
64
|
-
return color.empty.value;
|
|
65
|
-
}
|
|
66
|
-
return undefined;
|
|
57
|
+
return defaultColor?.value;
|
|
67
58
|
}
|
|
68
|
-
function identifyColorBySeverity(findings, color) {
|
|
59
|
+
function identifyColorBySeverity(findings, color, defaultColor) {
|
|
69
60
|
if (color.critical != null && findings.findByProperty('severity', SecuritySeverity.Critical) != null) {
|
|
70
61
|
return color.critical.value;
|
|
71
62
|
}
|
|
@@ -78,9 +69,9 @@ function identifyColorBySeverity(findings, color) {
|
|
|
78
69
|
if (color.low != null && findings.findByProperty('severity', SecuritySeverity.Low) != null) {
|
|
79
70
|
return color.low.value;
|
|
80
71
|
}
|
|
81
|
-
return identifyColorCommon(findings, 'severity', SecuritySeverity.None, SecuritySeverity.Unknown, color);
|
|
72
|
+
return identifyColorCommon(findings, 'severity', SecuritySeverity.None, SecuritySeverity.Unknown, color, defaultColor);
|
|
82
73
|
}
|
|
83
|
-
function identifyColorByLevel(findings, color) {
|
|
74
|
+
function identifyColorByLevel(findings, color, defaultColor) {
|
|
84
75
|
if (color.error != null && findings.findByProperty('level', SecurityLevel.Error) != null) {
|
|
85
76
|
return color.error.value;
|
|
86
77
|
}
|
|
@@ -90,30 +81,25 @@ function identifyColorByLevel(findings, color) {
|
|
|
90
81
|
if (color.note != null && findings.findByProperty('level', SecurityLevel.Note) != null) {
|
|
91
82
|
return color.note.value;
|
|
92
83
|
}
|
|
93
|
-
return identifyColorCommon(findings, 'level', SecurityLevel.None, SecurityLevel.Unknown, color);
|
|
84
|
+
return identifyColorCommon(findings, 'level', SecurityLevel.None, SecurityLevel.Unknown, color, defaultColor);
|
|
94
85
|
}
|
|
95
86
|
/**
|
|
96
87
|
* Makes an ultimate decision on what color should be Slack message. The decision
|
|
97
|
-
* is based on the provided {@param
|
|
98
|
-
*
|
|
99
|
-
* @param
|
|
88
|
+
* is based on the provided {@param colorOpts} parameter and {@param findings}
|
|
89
|
+
* list.
|
|
90
|
+
* @param findings An instance of {@link FindingArray} object.
|
|
91
|
+
* @param colorOpts An instance of {@link ColorOptions} type.
|
|
100
92
|
* @internal
|
|
101
93
|
*/
|
|
102
|
-
export function identifyColor(findings,
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
if (color.byLevel != null) {
|
|
114
|
-
return identifyColorByLevel(findings, color.byLevel);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return undefined;
|
|
94
|
+
export function identifyColor(findings, colorOpts) {
|
|
95
|
+
let result = colorOpts?.bySeverity
|
|
96
|
+
? identifyColorBySeverity(findings, colorOpts.bySeverity, colorOpts.default)
|
|
97
|
+
: undefined;
|
|
98
|
+
result ??= colorOpts?.byLevel
|
|
99
|
+
? identifyColorByLevel(findings, colorOpts.byLevel, colorOpts.default)
|
|
100
|
+
: result;
|
|
101
|
+
result ??= findings.length === 0 ? colorOpts?.empty?.value : result;
|
|
102
|
+
result ??= colorOpts?.default?.value;
|
|
103
|
+
return result;
|
|
118
104
|
}
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvQ29sb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUkxRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sS0FBSztJQUNDLE1BQU0sQ0FBUztJQUVoQzs7Ozs7Ozs7T0FRRztJQUNILFlBQW1CLEtBQWM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDcEIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hCLE1BQU0sYUFBYSxHQUFHLG9FQUFvRSxDQUFDO1lBRTNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUN6RCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxRQUFRLENBQUMsSUFBYTtRQUM1QixRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFBO1lBQ2xCLEtBQUssU0FBUztnQkFDWixPQUFPLFNBQVMsQ0FBQTtZQUNsQixLQUFLLFdBQVc7Z0JBQ2QsT0FBTyxTQUFTLENBQUE7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFBO1lBQ2xCO2dCQUNFLE9BQU8sSUFBSSxDQUFBO1FBQ2YsQ0FBQztJQUNILENB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
|
package/dist/model/Finding.js
CHANGED
|
@@ -6,7 +6,7 @@ import { createProcessor } from '../processors/ProcessorFactory';
|
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
8
8
|
export function createFinding(opts) {
|
|
9
|
-
return new
|
|
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
|
|
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,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmluZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9GaW5kaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDbkUsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBRTlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQTBCaEU7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFvQjtJQUNoRCxPQUFPLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzlCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sV0FBVztJQUNFLFlBQVksQ0FBUztJQUNyQixPQUFPLENBQVE7SUFDZixVQUFVLENBQVE7SUFDbEIsS0FBSyxDQUFzQjtJQUMzQixVQUFVLENBQWlCO0lBRXBDLHdCQUF3QixHQUFZLEtBQUssQ0FBQTtJQUN6QyxlQUFlLEdBQXVCLFNBQVMsQ0FBQTtJQUUvQyxvQkFBb0IsR0FBWSxLQUFLLENBQUE7SUFDckMsV0FBVyxHQUE2QixTQUFTLENBQUE7SUFFekQsWUFBWSxJQUFvQjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFBO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQzVDLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxhQUFhLENB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
|
|
@@ -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
|
|
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
|
|
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,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwcmVzZW50YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVwcmVzZW50YXRpb25zL1JlcHJlc2VudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzlELE9BQU8sWUFBWSxNQUFNLHVCQUF1QixDQUFBO0FBRWhEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFnQixjQUFjO0lBQ3ZCLE1BQU0sQ0FBWTtJQUVyQyxZQUFtQixLQUFpQixFQUFFLGlCQUFnQyxPQUFPO1FBQzNFLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUs7YUFDekIsUUFBUTthQUNSLEdBQUcsQ0FBQyxDQUFDLENBQVUsRUFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3ZDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUM3QyxNQUFNLENBQUMsQ0FBQyxHQUFpQixFQUFFLENBQVUsRUFBZ0IsRUFBRTtZQUN0RCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ1gsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDLEVBQUUsSUFBSSxZQUFZLEVBQUUsQ0FBQyxDQUFBO0lBQzFCLENBQUM7SUFFUyxJQUFJLENBQUMsSUFBWTtRQUN6QixPQUFPLElBQUksSUFBSSxHQUFHLENBQUE7SUFDcEIsQ0FBQztJQUVTLE1BQU0sQ0FBQyxJQUFZO1FBQzNCLE9BQU8sSUFBSSxJQUFJLEdBQUcsQ0FBQTtJQUNwQixDQUFDO0NBR0YifQ==
|