@fabasoad/sarif-to-slack 1.0.0 → 1.1.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/index.cjs CHANGED
@@ -156,13 +156,7 @@ var Color = class {
156
156
  }
157
157
  }
158
158
  };
159
- function isColor(color) {
160
- return color != null && color instanceof Color;
161
- }
162
- function isColorOptions(color) {
163
- return color != null;
164
- }
165
- function identifyColorCommon(findings, prop, none, unknown, color) {
159
+ function identifyColorCommon(findings, prop, none, unknown, color, defaultColor) {
166
160
  if (color.none != null && findings.findByProperty(prop, none) != null) {
167
161
  return color.none.value;
168
162
  }
@@ -172,9 +166,9 @@ function identifyColorCommon(findings, prop, none, unknown, color) {
172
166
  if (color.empty != null && findings.length === 0) {
173
167
  return color.empty.value;
174
168
  }
175
- return void 0;
169
+ return defaultColor?.value;
176
170
  }
177
- function identifyColorBySeverity(findings, color) {
171
+ function identifyColorBySeverity(findings, color, defaultColor) {
178
172
  if (color.critical != null && findings.findByProperty("severity", 5 /* Critical */) != null) {
179
173
  return color.critical.value;
180
174
  }
@@ -187,9 +181,9 @@ function identifyColorBySeverity(findings, color) {
187
181
  if (color.low != null && findings.findByProperty("severity", 2 /* Low */) != null) {
188
182
  return color.low.value;
189
183
  }
190
- return identifyColorCommon(findings, "severity", 1 /* None */, 0 /* Unknown */, color);
184
+ return identifyColorCommon(findings, "severity", 1 /* None */, 0 /* Unknown */, color, defaultColor);
191
185
  }
192
- function identifyColorByLevel(findings, color) {
186
+ function identifyColorByLevel(findings, color, defaultColor) {
193
187
  if (color.error != null && findings.findByProperty("level", 4 /* Error */) != null) {
194
188
  return color.error.value;
195
189
  }
@@ -199,24 +193,16 @@ function identifyColorByLevel(findings, color) {
199
193
  if (color.note != null && findings.findByProperty("level", 2 /* Note */) != null) {
200
194
  return color.note.value;
201
195
  }
202
- return identifyColorCommon(findings, "level", 1 /* None */, 0 /* Unknown */, color);
196
+ return identifyColorCommon(findings, "level", 1 /* None */, 0 /* Unknown */, color, defaultColor);
203
197
  }
204
- function identifyColor(findings, color) {
205
- if (color == null) {
206
- return void 0;
198
+ function identifyColor(findings, colorOpts) {
199
+ if (colorOpts?.bySeverity != null) {
200
+ return identifyColorBySeverity(findings, colorOpts.bySeverity, colorOpts.default);
207
201
  }
208
- if (isColor(color)) {
209
- return color.value;
210
- }
211
- if (isColorOptions(color)) {
212
- if (color.bySeverity != null) {
213
- return identifyColorBySeverity(findings, color.bySeverity);
214
- }
215
- if (color.byLevel != null) {
216
- return identifyColorByLevel(findings, color.byLevel);
217
- }
202
+ if (colorOpts?.byLevel != null) {
203
+ return identifyColorByLevel(findings, colorOpts.byLevel, colorOpts.default);
218
204
  }
219
- return void 0;
205
+ return colorOpts?.default?.value;
220
206
  }
221
207
 
222
208
  // src/SarifToSlackClient.ts
@@ -259,9 +245,9 @@ var Logger = class _Logger {
259
245
  var import_webhook = require("@slack/webhook");
260
246
 
261
247
  // src/metadata.json
262
- var version = "1.0.0";
263
- var sha = "ecb376dd9ebf5c0364498348436504722dc73e74";
264
- var buildAt = "2025-08-15T04:39:16Z";
248
+ var version = "1.1.0";
249
+ var sha = "cf8ff099965ca704d7e58bd11f6d4481f69e3125";
250
+ var buildAt = "2025-08-15T05:22:37Z";
265
251
 
266
252
  // src/SlackMessageBuilder.ts
267
253
  var SlackMessageBuilder = class {
@@ -57,13 +57,23 @@ export type ColorGroupBySeverity = ColorGroupCommon & {
57
57
  low?: Color;
58
58
  };
59
59
  /**
60
- * Represents configuration of the color scheme. {@link ColorOptions.byLevel} has
61
- * color scheme for the findings where certain level presented. {@link ColorOptions.bySeverity}
62
- * has color scheme for the findings where certain severity presented.
60
+ * Represents configuration of the color scheme. If both {@link ColorOptions.byLevel}
61
+ * and {@link ColorOptions.bySeverity} are defined, then {@link ColorOptions.bySeverity}
62
+ * takes precedence.
63
63
  * @public
64
64
  */
65
65
  export type ColorOptions = {
66
+ /**
67
+ * Default color if specific color was not found. It is a fallback option.
68
+ */
69
+ default?: Color;
70
+ /**
71
+ * Color scheme for the findings where certain level is presented.
72
+ */
66
73
  byLevel?: ColorGroupByLevel;
74
+ /**
75
+ * Color scheme for the findings where certain severity is presented.
76
+ */
67
77
  bySeverity?: ColorGroupBySeverity;
68
78
  };
69
79
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"Color.d.ts","sourceRoot":"","sources":["../../src/model/Color.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAEhC;;;;;;;;OAQG;gBACgB,KAAK,CAAC,EAAE,MAAM;IAKjC;;OAEG;IACH,IAAW,KAAK,IAAI,MAAM,GAAG,SAAS,CAErC;IAED,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,QAAQ;CAcjB;AAED;;;;GAIG;AACH,KAAK,gBAAgB,GAAG;IACtB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG;IACjD,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IACpD,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,GAAG,CAAC,EAAE,KAAK,CAAC;CACb,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,UAAU,CAAC,EAAE,oBAAoB,CAAC;CACnC,CAAA"}
1
+ {"version":3,"file":"Color.d.ts","sourceRoot":"","sources":["../../src/model/Color.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAEhC;;;;;;;;OAQG;gBACgB,KAAK,CAAC,EAAE,MAAM;IAKjC;;OAEG;IACH,IAAW,KAAK,IAAI,MAAM,GAAG,SAAS,CAErC;IAED,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,QAAQ;CAcjB;AAED;;;;GAIG;AACH,KAAK,gBAAgB,GAAG;IACtB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG;IACjD,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IACpD,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,GAAG,CAAC,EAAE,KAAK,CAAC;CACb,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;OAEG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC;CACnC,CAAA"}
@@ -47,13 +47,7 @@ export class Color {
47
47
  }
48
48
  }
49
49
  }
50
- function isColor(color) {
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
  }
@@ -63,9 +57,9 @@ function identifyColorCommon(findings, prop, none, unknown, color) {
63
57
  if (color.empty != null && findings.length === 0) {
64
58
  return color.empty.value;
65
59
  }
66
- return undefined;
60
+ return defaultColor?.value;
67
61
  }
68
- function identifyColorBySeverity(findings, color) {
62
+ function identifyColorBySeverity(findings, color, defaultColor) {
69
63
  if (color.critical != null && findings.findByProperty('severity', SecuritySeverity.Critical) != null) {
70
64
  return color.critical.value;
71
65
  }
@@ -78,9 +72,9 @@ function identifyColorBySeverity(findings, color) {
78
72
  if (color.low != null && findings.findByProperty('severity', SecuritySeverity.Low) != null) {
79
73
  return color.low.value;
80
74
  }
81
- return identifyColorCommon(findings, 'severity', SecuritySeverity.None, SecuritySeverity.Unknown, color);
75
+ return identifyColorCommon(findings, 'severity', SecuritySeverity.None, SecuritySeverity.Unknown, color, defaultColor);
82
76
  }
83
- function identifyColorByLevel(findings, color) {
77
+ function identifyColorByLevel(findings, color, defaultColor) {
84
78
  if (color.error != null && findings.findByProperty('level', SecurityLevel.Error) != null) {
85
79
  return color.error.value;
86
80
  }
@@ -90,30 +84,23 @@ function identifyColorByLevel(findings, color) {
90
84
  if (color.note != null && findings.findByProperty('level', SecurityLevel.Note) != null) {
91
85
  return color.note.value;
92
86
  }
93
- return identifyColorCommon(findings, 'level', SecurityLevel.None, SecurityLevel.Unknown, color);
87
+ return identifyColorCommon(findings, 'level', SecurityLevel.None, SecurityLevel.Unknown, color, defaultColor);
94
88
  }
95
89
  /**
96
90
  * Makes an ultimate decision on what color should be Slack message. The decision
97
- * is based on the provided {@param color} parameter and {@param findings} list.
91
+ * is based on the provided {@param colorOpts} parameter and {@param findings}
92
+ * list.
98
93
  * @param findings An instance of {@link FindingsArray} object.
99
- * @param color Either an instance of {@link Color} or {@link ColorOptions} type.
94
+ * @param colorOpts An instance of {@link ColorOptions} type.
100
95
  * @internal
101
96
  */
102
- export function identifyColor(findings, color) {
103
- if (color == null) {
104
- return undefined;
105
- }
106
- if (isColor(color)) {
107
- return color.value;
97
+ export function identifyColor(findings, colorOpts) {
98
+ if (colorOpts?.bySeverity != null) {
99
+ return identifyColorBySeverity(findings, colorOpts.bySeverity, colorOpts.default);
108
100
  }
109
- if (isColorOptions(color)) {
110
- if (color.bySeverity != null) {
111
- return identifyColorBySeverity(findings, color.bySeverity);
112
- }
113
- if (color.byLevel != null) {
114
- return identifyColorByLevel(findings, color.byLevel);
115
- }
101
+ if (colorOpts?.byLevel != null) {
102
+ return identifyColorByLevel(findings, colorOpts.byLevel, colorOpts.default);
116
103
  }
117
- return undefined;
104
+ return colorOpts?.default?.value;
118
105
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvQ29sb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUkxRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sS0FBSztJQUNDLE1BQU0sQ0FBUztJQUVoQzs7Ozs7Ozs7T0FRRztJQUNILFlBQW1CLEtBQWM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQTtJQUNwQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN4QixNQUFNLGFBQWEsR0FBRyxvRUFBb0UsQ0FBQztZQUUzRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDekQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sUUFBUSxDQUFDLElBQWE7UUFDNUIsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssU0FBUztnQkFDWixPQUFPLFNBQVMsQ0FBQTtZQUNsQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxTQUFTLENBQUE7WUFDbEIsS0FBSyxXQUFXO2dCQUNkLE9BQU8sU0FBUyxDQUFBO1lBQ2xCLEtBQUssU0FBUztnQkFDWixPQUFPLFNBQVMsQ0FBQTtZQUNsQjtnQkFDRSxPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7SUFD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
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvQ29sb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUkxRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sS0FBSztJQUNDLE1BQU0sQ0FBUztJQUVoQzs7Ozs7Ozs7T0FRRztJQUNILFlBQW1CLEtBQWM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQTtJQUNwQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN4QixNQUFNLGFBQWEsR0FBRyxvRUFBb0UsQ0FBQztZQUUzRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDekQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sUUFBUSxDQUFDLElBQWE7UUFDNUIsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssU0FBUztnQkFDWixPQUFPLFNBQVMsQ0FBQTtZQUNsQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxTQUFTLENBQUE7WUFDbEIsS0FBSyxXQUFXO2dCQUNkLE9BQU8sU0FBUyxDQUFBO1lBQ2xCLEtBQUssU0FBUztnQkFDWixPQUFPLFNBQVMsQ0FBQTtZQUNsQjtnQkFDRSxPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7SUFD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
@@ -131,13 +131,23 @@ declare type ColorGroupCommon = {
131
131
  };
132
132
 
133
133
  /**
134
- * Represents configuration of the color scheme. {@link ColorOptions.byLevel} has
135
- * color scheme for the findings where certain level presented. {@link ColorOptions.bySeverity}
136
- * has color scheme for the findings where certain severity presented.
134
+ * Represents configuration of the color scheme. If both {@link ColorOptions.byLevel}
135
+ * and {@link ColorOptions.bySeverity} are defined, then {@link ColorOptions.bySeverity}
136
+ * takes precedence.
137
137
  * @public
138
138
  */
139
139
  export declare type ColorOptions = {
140
+ /**
141
+ * Default color if specific color was not found. It is a fallback option.
142
+ */
143
+ default?: Color;
144
+ /**
145
+ * Color scheme for the findings where certain level is presented.
146
+ */
140
147
  byLevel?: ColorGroupByLevel;
148
+ /**
149
+ * Color scheme for the findings where certain severity is presented.
150
+ */
141
151
  bySeverity?: ColorGroupBySeverity;
142
152
  };
143
153
 
@@ -385,7 +395,7 @@ export declare type SarifToSlackClientOptions = {
385
395
  sarif: SarifOptions;
386
396
  username?: string;
387
397
  iconUrl?: string;
388
- color?: Color | ColorOptions;
398
+ color?: ColorOptions;
389
399
  log?: LogOptions;
390
400
  header?: IncludeAwareWithValueOptions;
391
401
  footer?: FooterOptions;
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Color, ColorOptions } from './model/Color';
1
+ import { ColorOptions } from './model/Color';
2
2
  /**
3
3
  * Interface for a Slack message that can be sent.
4
4
  * @public
@@ -332,7 +332,7 @@ export type SarifToSlackClientOptions = {
332
332
  sarif: SarifOptions;
333
333
  username?: string;
334
334
  iconUrl?: string;
335
- color?: Color | ColorOptions;
335
+ color?: ColorOptions;
336
336
  log?: LogOptions;
337
337
  header?: IncludeAwareWithValueOptions;
338
338
  footer?: FooterOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,7 @@ export type ColorGroupBySeverity = ColorGroupCommon & {
29
29
 
30
30
  // @public
31
31
  export type ColorOptions = {
32
+ default?: Color;
32
33
  byLevel?: ColorGroupByLevel;
33
34
  bySeverity?: ColorGroupBySeverity;
34
35
  };
@@ -107,7 +108,7 @@ export type SarifToSlackClientOptions = {
107
108
  sarif: SarifOptions;
108
109
  username?: string;
109
110
  iconUrl?: string;
110
- color?: Color | ColorOptions;
111
+ color?: ColorOptions;
111
112
  log?: LogOptions;
112
113
  header?: IncludeAwareWithValueOptions;
113
114
  footer?: FooterOptions;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fabasoad/sarif-to-slack",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "TypeScript library to send results of SARIF file to Slack webhook URL.",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",
@@ -95,30 +95,33 @@ export type ColorGroupBySeverity = ColorGroupCommon & {
95
95
  }
96
96
 
97
97
  /**
98
- * Represents configuration of the color scheme. {@link ColorOptions.byLevel} has
99
- * color scheme for the findings where certain level presented. {@link ColorOptions.bySeverity}
100
- * has color scheme for the findings where certain severity presented.
98
+ * Represents configuration of the color scheme. If both {@link ColorOptions.byLevel}
99
+ * and {@link ColorOptions.bySeverity} are defined, then {@link ColorOptions.bySeverity}
100
+ * takes precedence.
101
101
  * @public
102
102
  */
103
103
  export type ColorOptions = {
104
+ /**
105
+ * Default color if specific color was not found. It is a fallback option.
106
+ */
107
+ default?: Color,
108
+ /**
109
+ * Color scheme for the findings where certain level is presented.
110
+ */
104
111
  byLevel?: ColorGroupByLevel,
112
+ /**
113
+ * Color scheme for the findings where certain severity is presented.
114
+ */
105
115
  bySeverity?: ColorGroupBySeverity,
106
116
  }
107
117
 
108
- function isColor(color?: Color | ColorOptions): color is Color {
109
- return color != null && color instanceof Color
110
- }
111
-
112
- function isColorOptions(color?: Color | ColorOptions): color is ColorOptions {
113
- return color != null
114
- }
115
-
116
118
  function identifyColorCommon<K extends keyof Finding>(
117
119
  findings: FindingsArray,
118
120
  prop: K,
119
121
  none: Finding[K],
120
122
  unknown: Finding[K],
121
- color: ColorGroupCommon
123
+ color: ColorGroupCommon,
124
+ defaultColor?: Color
122
125
  ): string | undefined {
123
126
  if (color.none != null && findings.findByProperty(prop, none) != null) {
124
127
  return color.none.value
@@ -132,10 +135,10 @@ function identifyColorCommon<K extends keyof Finding>(
132
135
  return color.empty.value
133
136
  }
134
137
 
135
- return undefined
138
+ return defaultColor?.value
136
139
  }
137
140
 
138
- function identifyColorBySeverity(findings: FindingsArray, color: ColorGroupBySeverity): string | undefined {
141
+ function identifyColorBySeverity(findings: FindingsArray, color: ColorGroupBySeverity, defaultColor?: Color): string | undefined {
139
142
  if (color.critical != null && findings.findByProperty('severity', SecuritySeverity.Critical) != null) {
140
143
  return color.critical.value
141
144
  }
@@ -152,10 +155,10 @@ function identifyColorBySeverity(findings: FindingsArray, color: ColorGroupBySev
152
155
  return color.low.value
153
156
  }
154
157
 
155
- return identifyColorCommon(findings, 'severity', SecuritySeverity.None, SecuritySeverity.Unknown, color)
158
+ return identifyColorCommon(findings, 'severity', SecuritySeverity.None, SecuritySeverity.Unknown, color, defaultColor)
156
159
  }
157
160
 
158
- function identifyColorByLevel(findings: FindingsArray, color: ColorGroupByLevel): string | undefined {
161
+ function identifyColorByLevel(findings: FindingsArray, color: ColorGroupByLevel, defaultColor?: Color): string | undefined {
159
162
  if (color.error != null && findings.findByProperty('level', SecurityLevel.Error) != null) {
160
163
  return color.error.value
161
164
  }
@@ -168,34 +171,25 @@ function identifyColorByLevel(findings: FindingsArray, color: ColorGroupByLevel)
168
171
  return color.note.value
169
172
  }
170
173
 
171
- return identifyColorCommon(findings, 'level', SecurityLevel.None, SecurityLevel.Unknown, color)
174
+ return identifyColorCommon(findings, 'level', SecurityLevel.None, SecurityLevel.Unknown, color, defaultColor)
172
175
  }
173
176
 
174
177
  /**
175
178
  * Makes an ultimate decision on what color should be Slack message. The decision
176
- * is based on the provided {@param color} parameter and {@param findings} list.
179
+ * is based on the provided {@param colorOpts} parameter and {@param findings}
180
+ * list.
177
181
  * @param findings An instance of {@link FindingsArray} object.
178
- * @param color Either an instance of {@link Color} or {@link ColorOptions} type.
182
+ * @param colorOpts An instance of {@link ColorOptions} type.
179
183
  * @internal
180
184
  */
181
- export function identifyColor(findings: FindingsArray, color?: Color | ColorOptions): string | undefined {
182
- if (color == null) {
183
- return undefined
184
- }
185
-
186
- if (isColor(color)) {
187
- return color.value
185
+ export function identifyColor(findings: FindingsArray, colorOpts?: ColorOptions): string | undefined {
186
+ if (colorOpts?.bySeverity != null) {
187
+ return identifyColorBySeverity(findings, colorOpts.bySeverity, colorOpts.default)
188
188
  }
189
189
 
190
- if (isColorOptions(color)) {
191
- if (color.bySeverity != null) {
192
- return identifyColorBySeverity(findings, color.bySeverity)
193
- }
194
-
195
- if (color.byLevel != null) {
196
- return identifyColorByLevel(findings, color.byLevel)
197
- }
190
+ if (colorOpts?.byLevel != null) {
191
+ return identifyColorByLevel(findings, colorOpts.byLevel, colorOpts.default)
198
192
  }
199
193
 
200
- return undefined
194
+ return colorOpts?.default?.value
201
195
  }
package/src/types.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Run } from 'sarif'
2
- import { Color, ColorOptions } from './model/Color'
2
+ import { ColorOptions } from './model/Color'
3
3
  import FindingsArray from './model/FindingsArray'
4
4
 
5
5
  /**
@@ -346,7 +346,7 @@ export type SarifToSlackClientOptions = {
346
346
  sarif: SarifOptions,
347
347
  username?: string,
348
348
  iconUrl?: string,
349
- color?: Color | ColorOptions,
349
+ color?: ColorOptions,
350
350
  log?: LogOptions,
351
351
  header?: IncludeAwareWithValueOptions,
352
352
  footer?: FooterOptions,
@@ -97,17 +97,16 @@ describe('(integration): SendSarifToSlack', (): void => {
97
97
  webhookUrl: process.env.SARIF_TO_SLACK_WEBHOOK_URL as string,
98
98
  username: process.env.SARIF_TO_SLACK_USERNAME,
99
99
  iconUrl: process.env.SARIF_TO_SLACK_ICON_URL,
100
- color: process.env.SARIF_TO_SLACK_COLOR
101
- ? new Color(process.env.SARIF_TO_SLACK_COLOR)
102
- : {
103
- // byLevel: {
104
- // error: new Color(process.env.SARIF_TO_SLACK_COLOR_ERROR),
105
- // warning: new Color(process.env.SARIF_TO_SLACK_COLOR_WARNING),
106
- // note: new Color(process.env.SARIF_TO_SLACK_COLOR_NOTE),
107
- // none: new Color(process.env.SARIF_TO_SLACK_COLOR_NONE),
108
- // unknown: new Color(process.env.SARIF_TO_SLACK_COLOR_UNKNOWN),
109
- // empty: new Color(process.env.SARIF_TO_SLACK_COLOR_EMPTY),
110
- // },
100
+ color: {
101
+ default: new Color(process.env.SARIF_TO_SLACK_COLOR),
102
+ byLevel: {
103
+ error: new Color(process.env.SARIF_TO_SLACK_COLOR_ERROR),
104
+ warning: new Color(process.env.SARIF_TO_SLACK_COLOR_WARNING),
105
+ note: new Color(process.env.SARIF_TO_SLACK_COLOR_NOTE),
106
+ none: new Color(process.env.SARIF_TO_SLACK_COLOR_NONE),
107
+ unknown: new Color(process.env.SARIF_TO_SLACK_COLOR_UNKNOWN),
108
+ empty: new Color(process.env.SARIF_TO_SLACK_COLOR_EMPTY),
109
+ },
111
110
  bySeverity: {
112
111
  critical: new Color(process.env.SARIF_TO_SLACK_COLOR_CRITICAL),
113
112
  high: new Color(process.env.SARIF_TO_SLACK_COLOR_HIGH),
@@ -121,6 +120,7 @@ describe('(integration): SendSarifToSlack', (): void => {
121
120
  sarif: {
122
121
  path: process.env.SARIF_TO_SLACK_SARIF_PATH as string,
123
122
  recursive: true,
123
+ extension: 'sarif',
124
124
  },
125
125
  log: {
126
126
  level: processLogLevel(process.env.SARIF_TO_SLACK_LOG_LEVEL),