@fabasoad/sarif-to-slack 0.2.1 → 0.2.2
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/.github/workflows/send-sarif-to-slack.yml +1 -1
- package/dist/Processors.js +1 -32
- package/dist/SarifToSlackService.d.ts.map +1 -1
- package/dist/SarifToSlackService.js +9 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/model/SarifModelPerRun.d.ts +1 -16
- package/dist/model/SarifModelPerRun.d.ts.map +1 -1
- package/dist/model/SarifModelPerRun.js +7 -1
- package/dist/model/SarifModelPerSarif.d.ts +1 -19
- package/dist/model/SarifModelPerSarif.d.ts.map +1 -1
- package/dist/model/SarifModelPerSarif.js +6 -1
- package/dist/model/types.d.ts +1 -16
- package/dist/model/types.d.ts.map +1 -1
- package/dist/model/types.js +19 -1
- package/dist/sarif-to-slack.d.ts +3 -3
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/SarifUtils.d.ts +1 -4
- package/dist/utils/SarifUtils.d.ts.map +1 -1
- package/dist/utils/SarifUtils.js +15 -1
- package/dist/utils/SortUtils.d.ts +1 -4
- package/dist/utils/SortUtils.d.ts.map +1 -1
- package/dist/utils/SortUtils.js +13 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +11 -4
- package/etc/sarif-to-slack.api.md +2 -2
- package/package.json +1 -1
- package/scripts/save-version.sh +9 -2
- package/src/Processors.ts +0 -32
- package/src/SarifToSlackService.ts +8 -0
- package/src/index.ts +7 -5
- package/src/model/SarifModelPerRun.ts +6 -0
- package/src/model/SarifModelPerSarif.ts +10 -0
- package/src/model/types.ts +19 -0
- package/src/types.ts +2 -2
- package/src/utils/SarifUtils.ts +18 -0
- package/src/utils/SortUtils.ts +12 -0
- package/src/version.ts +10 -3
- package/tests/Processors.spec.ts +1 -40
- package/tests/integration/SendSarifToSlack.spec.ts +25 -1
package/dist/Processors.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import Logger from './Logger';
|
|
4
|
-
import { LogLevel } from './types';
|
|
5
4
|
/**
|
|
6
5
|
* Processes a color string and converts it to a specific hex code if it matches
|
|
7
6
|
* a CI status identifier.
|
|
@@ -30,36 +29,6 @@ export function processColor(color) {
|
|
|
30
29
|
return color;
|
|
31
30
|
}
|
|
32
31
|
}
|
|
33
|
-
/**
|
|
34
|
-
* Processes a log level string or number and converts it to a numeric log level.
|
|
35
|
-
* @param logLevel
|
|
36
|
-
* @returns The numeric log level corresponding to the input string or number.
|
|
37
|
-
* @throws Error If the input string does not match any known log level.
|
|
38
|
-
* @internal
|
|
39
|
-
*/
|
|
40
|
-
export function processLogLevel(logLevel) {
|
|
41
|
-
if (!logLevel) {
|
|
42
|
-
return undefined;
|
|
43
|
-
}
|
|
44
|
-
switch (logLevel.toLowerCase()) {
|
|
45
|
-
case 'silly':
|
|
46
|
-
return LogLevel.Silly;
|
|
47
|
-
case 'trace':
|
|
48
|
-
return LogLevel.Trace;
|
|
49
|
-
case 'debug':
|
|
50
|
-
return LogLevel.Debug;
|
|
51
|
-
case 'info':
|
|
52
|
-
return LogLevel.Info;
|
|
53
|
-
case 'warning':
|
|
54
|
-
return LogLevel.Warning;
|
|
55
|
-
case 'error':
|
|
56
|
-
return LogLevel.Error;
|
|
57
|
-
case 'fatal':
|
|
58
|
-
return LogLevel.Fatal;
|
|
59
|
-
default:
|
|
60
|
-
throw new Error(`Unknown log level: ${logLevel}`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
32
|
/**
|
|
64
33
|
* Processes the SARIF path, which can be a file or a directory. If it's a
|
|
65
34
|
* directory, it returns an array of paths to all `.sarif` files, otherwise it
|
|
@@ -89,4 +58,4 @@ export function processSarifPath(sarifPath) {
|
|
|
89
58
|
}
|
|
90
59
|
throw new Error(`"sarif-path" is neither a file nor a directory: ${sarifPath}`);
|
|
91
60
|
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvY2Vzc29ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Qcm9jZXNzb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBQ3hCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sTUFBTSxNQUFNLFVBQVUsQ0FBQTtBQUU3Qjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBYztJQUN6QyxRQUFRLEtBQUssRUFBRSxDQUFDO1FBQ2QsS0FBSyxTQUFTO1lBQ1osTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssY0FBYyxDQUFDLENBQUE7WUFDL0MsT0FBTyxTQUFTLENBQUE7UUFDbEIsS0FBSyxTQUFTO1lBQ1osTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssY0FBYyxDQUFDLENBQUE7WUFDL0MsT0FBTyxTQUFTLENBQUE7UUFDbEIsS0FBSyxXQUFXO1lBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssY0FBYyxDQUFDLENBQUE7WUFDL0MsT0FBTyxTQUFTLENBQUE7UUFDbEIsS0FBSyxTQUFTO1lBQ1osTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssY0FBYyxDQUFDLENBQUE7WUFDL0MsT0FBTyxTQUFTLENBQUE7UUFDbEI7WUFDRSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyx5REFBeUQsQ0FBQyxDQUFBO1lBQ2hGLE9BQU8sS0FBSyxDQUFBO0lBQ2hCLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFNBQWlCO0lBQ2hELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUM5RCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUVuRCxJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFDeEQsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqRCxNQUFNLGFBQWEsR0FBYSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDNUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRLENBQzlDLENBQUE7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsYUFBYSxDQUFDLE1BQU0sbUJBQW1CLFNBQVMsWUFBWSxDQUFDLENBQUE7UUFDbEYsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDakUsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFDbkQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3BCLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxTQUFTLEVBQUUsQ0FBQyxDQUFBO0FBQ2pGLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SarifToSlackService.d.ts","sourceRoot":"","sources":["../src/SarifToSlackService.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,0BAA0B,EAC1B,YAAY,EACb,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"SarifToSlackService.d.ts","sourceRoot":"","sources":["../src/SarifToSlackService.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,0BAA0B,EAC1B,YAAY,EACb,MAAM,SAAS,CAAA;AA4ChB;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAE3D,OAAO;IAIP;;;;OAIG;IACH,IAAW,aAAa,IAAI,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAE5D;IAED;;;;;;OAMG;WACiB,MAAM,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQ1F;;;;;OAKG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrC;;;;;;OAMG;IACU,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQpD"}
|
|
@@ -2,6 +2,14 @@ import { promises as fs } from 'fs';
|
|
|
2
2
|
import Logger from './Logger';
|
|
3
3
|
import { processColor, processSarifPath } from './Processors';
|
|
4
4
|
import { SlackMessageBuilder } from './SlackMessageBuilder';
|
|
5
|
+
/**
|
|
6
|
+
* The main function to initialize a list of {@link SlackMessage} objects based
|
|
7
|
+
* on the given SARIF file(s).
|
|
8
|
+
* @param opts An instance of {@link SarifToSlackServiceOptions} object.
|
|
9
|
+
* @returns A map where key is the SARIF file and value is an instance of
|
|
10
|
+
* {@link SlackMessage} object
|
|
11
|
+
* @private
|
|
12
|
+
*/
|
|
5
13
|
async function initialize(opts) {
|
|
6
14
|
const slackMessages = new Map();
|
|
7
15
|
const sarifFiles = processSarifPath(opts.sarifPath);
|
|
@@ -91,4 +99,4 @@ export class SarifToSlackService {
|
|
|
91
99
|
Logger.info(`Message sent for ${sarifPath} file. Status:`, text);
|
|
92
100
|
}
|
|
93
101
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2FyaWZUb1NsYWNrU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TYXJpZlRvU2xhY2tTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BDLE9BQU8sTUFBTSxNQUFNLFVBQVUsQ0FBQTtBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBTzNEOzs7Ozs7O0dBT0c7QUFDSCxLQUFLLFVBQVUsVUFBVSxDQUFDLElBQWdDO0lBQ3hELE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxFQUF3QixDQUFDO0lBQ3RELE1BQU0sVUFBVSxHQUFhLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM3RCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUE7SUFDakYsQ0FBQztJQUVELEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7UUFDbkMsTUFBTSxVQUFVLEdBQVcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUUvRCxNQUFNLGNBQWMsR0FBRyxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDOUQsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixLQUFLLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFhO1lB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
|
package/dist/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* webhookUrl: 'https://hooks.slack.com/services/your/webhook/url',
|
|
14
14
|
* sarifPath: 'path/to/your/sarif/file.sarif',
|
|
15
15
|
* log: {
|
|
16
|
-
* level:
|
|
16
|
+
* level: LogLevel.Info,
|
|
17
17
|
* template: '[{{logLevelName}}] [{{name}}] {{dateIsoStr}} ',
|
|
18
18
|
* colored: false,
|
|
19
19
|
* },
|
|
@@ -45,5 +45,6 @@
|
|
|
45
45
|
* @packageDocumentation
|
|
46
46
|
*/
|
|
47
47
|
export { SarifToSlackService } from './SarifToSlackService';
|
|
48
|
-
export { CalculateResultsBy,
|
|
48
|
+
export { CalculateResultsBy, FooterType, GroupResultsBy, LogLevel, SlackMessage } from './types';
|
|
49
|
+
export type { FooterOptions, IncludeAwareOptions, IncludeAwareWithValueOptions, LogOptions, SarifLog, SarifToSlackOutput, SarifToSlackServiceOptions } from './types';
|
|
49
50
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EACL,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,QAAQ,EACR,YAAY,EACb,MAAM,SAAS,CAAA;AAChB,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,4BAA4B,EAC5B,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,0BAA0B,EAC3B,MAAM,SAAS,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* webhookUrl: 'https://hooks.slack.com/services/your/webhook/url',
|
|
15
15
|
* sarifPath: 'path/to/your/sarif/file.sarif',
|
|
16
16
|
* log: {
|
|
17
|
-
* level:
|
|
17
|
+
* level: LogLevel.Info,
|
|
18
18
|
* template: '[{{logLevelName}}] [{{name}}] {{dateIsoStr}} ',
|
|
19
19
|
* colored: false,
|
|
20
20
|
* },
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
* @packageDocumentation
|
|
47
47
|
*/
|
|
48
48
|
export { SarifToSlackService } from './SarifToSlackService';
|
|
49
|
-
export { CalculateResultsBy, FooterType, GroupResultsBy, LogLevel
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
export { CalculateResultsBy, FooterType, GroupResultsBy, LogLevel } from './types';
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEZBQTBGO0FBRTFGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Q0c7QUFDSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMzRCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUVULE1BQU0sU0FBUyxDQUFBIn0=
|
|
@@ -1,17 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { SecurityLevel, SecuritySeverity } from './types';
|
|
3
|
-
import { Map as ImmutableMap } from 'immutable';
|
|
4
|
-
export declare class SarifModelPerRun {
|
|
5
|
-
readonly toolName: string;
|
|
6
|
-
private readonly _securitySeverityMap;
|
|
7
|
-
private readonly _securityLevelMap;
|
|
8
|
-
constructor(run: Run);
|
|
9
|
-
private identifySecuritySeverity;
|
|
10
|
-
private identifySecurityLevel;
|
|
11
|
-
private buildSecuritySeverityMap;
|
|
12
|
-
private tryGetSecurityLevel;
|
|
13
|
-
private buildSecurityLevelMap;
|
|
14
|
-
get securitySeverityMap(): ImmutableMap<SecuritySeverity, number>;
|
|
15
|
-
get securityLevelMap(): ImmutableMap<SecurityLevel, number>;
|
|
16
|
-
}
|
|
1
|
+
export {};
|
|
17
2
|
//# sourceMappingURL=SarifModelPerRun.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SarifModelPerRun.d.ts","sourceRoot":"","sources":["../../src/model/SarifModelPerRun.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SarifModelPerRun.d.ts","sourceRoot":"","sources":["../../src/model/SarifModelPerRun.ts"],"names":[],"mappings":""}
|
|
@@ -3,6 +3,12 @@ import { SecurityLevel, SecuritySeverity } from './types';
|
|
|
3
3
|
import Logger from '../Logger';
|
|
4
4
|
import { Map as ImmutableMap } from 'immutable';
|
|
5
5
|
import { sortSecurityLevelMap, sortSecuritySeverityMap } from '../utils/SortUtils';
|
|
6
|
+
/**
|
|
7
|
+
* This class keeps information about results per run. It has 2 hash maps:
|
|
8
|
+
* - severity to number: the amount of results for each severity
|
|
9
|
+
* - level to number: the amount of results for each level
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
6
12
|
export class SarifModelPerRun {
|
|
7
13
|
toolName;
|
|
8
14
|
_securitySeverityMap;
|
|
@@ -81,4 +87,4 @@ export class SarifModelPerRun {
|
|
|
81
87
|
return sortSecurityLevelMap(this._securityLevelMap);
|
|
82
88
|
}
|
|
83
89
|
}
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2FyaWZNb2RlbFBlclJ1bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9TYXJpZk1vZGVsUGVyUnVuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDekQsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxHQUFHLElBQUksWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQy9DLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3hCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUI7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ1gsUUFBUSxDQUFRO0lBRWYsb0JBQW9CLENBQXdDO0lBQzVELGlCQUFpQixDQUFxQztJQUV2RSxZQUFZLEdBQVE7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUE7UUFFcEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFlBQVksRUFBNEIsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUNoRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxFQUF5QixDQUFDLFNBQVMsRUFBRSxDQUFBO1FBRTFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNsQyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVPLHdCQUF3QixDQUFDLEtBQWM7UUFDN0MsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEIsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUE7UUFDakMsQ0FBQztRQUVELElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksRUFB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
|
|
@@ -1,20 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { Map as ImmutableMap } from 'immutable';
|
|
3
|
-
import { SecurityLevel, SecuritySeverity } from './types';
|
|
4
|
-
export type DataGroupedByRun<T> = {
|
|
5
|
-
toolName: string;
|
|
6
|
-
data: ImmutableMap<T, number>;
|
|
7
|
-
};
|
|
8
|
-
export declare class SarifModelPerSarif {
|
|
9
|
-
private readonly sarifModelPerRunList;
|
|
10
|
-
constructor(sarif: SarifLog);
|
|
11
|
-
private buildRunsList;
|
|
12
|
-
groupByToolNameWithSecurityLevel(): Map<string, ImmutableMap<SecurityLevel, number>>;
|
|
13
|
-
groupByRunWithSecurityLevel(): DataGroupedByRun<SecurityLevel>[];
|
|
14
|
-
groupByTotalWithSecurityLevel(): ImmutableMap<SecurityLevel, number>;
|
|
15
|
-
groupByToolNameWithSecuritySeverity(): Map<string, ImmutableMap<SecuritySeverity, number>>;
|
|
16
|
-
groupByRunWithSecuritySeverity(): DataGroupedByRun<SecuritySeverity>[];
|
|
17
|
-
groupByTotalWithSecuritySeverity(): ImmutableMap<SecuritySeverity, number>;
|
|
18
|
-
listToolNames(): Set<string>;
|
|
19
|
-
}
|
|
1
|
+
export {};
|
|
20
2
|
//# sourceMappingURL=SarifModelPerSarif.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SarifModelPerSarif.d.ts","sourceRoot":"","sources":["../../src/model/SarifModelPerSarif.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SarifModelPerSarif.d.ts","sourceRoot":"","sources":["../../src/model/SarifModelPerSarif.ts"],"names":[],"mappings":""}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { Map as ImmutableMap } from 'immutable';
|
|
2
2
|
import { SarifModelPerRun } from './SarifModelPerRun';
|
|
3
3
|
import { sortSecurityLevelMap, sortSecuritySeverityMap } from '../utils/SortUtils';
|
|
4
|
+
/**
|
|
5
|
+
* This class is used to group results by different fields, such as grouping by
|
|
6
|
+
* tool name, runs, etc.
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
4
9
|
export class SarifModelPerSarif {
|
|
5
10
|
sarifModelPerRunList;
|
|
6
11
|
constructor(sarif) {
|
|
@@ -94,4 +99,4 @@ export class SarifModelPerSarif {
|
|
|
94
99
|
return toolNames;
|
|
95
100
|
}
|
|
96
101
|
}
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2FyaWZNb2RlbFBlclNhcmlmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL1NhcmlmTW9kZWxQZXJTYXJpZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsR0FBRyxJQUFJLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVyRCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN4QixNQUFNLG9CQUFvQixDQUFDO0FBWTVCOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ1osb0JBQW9CLENBQTBCO0lBRS9ELFlBQVksS0FBZTtRQUN6QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxLQUFLLEVBQW9CLENBQUE7UUFDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMzQixDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQWU7UUFDbkMsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDM0QsQ0FBQztJQUNILENBQUM7SUFFTSxnQ0FBZ0M7UUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQStDLENBQUE7UUFDckUsS0FBSyxNQUFNLGdCQUFnQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBeUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1lBQzFGLENBQUM7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
|
package/dist/model/types.d.ts
CHANGED
|
@@ -1,17 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
Unknown = "Unknown",
|
|
3
|
-
None = "None",
|
|
4
|
-
Low = "Low",
|
|
5
|
-
Medium = "Medium",
|
|
6
|
-
High = "High",
|
|
7
|
-
Critical = "Critical"
|
|
8
|
-
}
|
|
9
|
-
export declare const SecuritySeverityOrder: SecuritySeverity[];
|
|
10
|
-
export declare enum SecurityLevel {
|
|
11
|
-
Unknown = "Unknown",
|
|
12
|
-
Note = "Note",
|
|
13
|
-
Warning = "Warning",
|
|
14
|
-
Error = "Error"
|
|
15
|
-
}
|
|
16
|
-
export declare const SecurityLevelOrder: SecurityLevel[];
|
|
1
|
+
export {};
|
|
17
2
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":""}
|
package/dist/model/types.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enum of security severity.
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
1
5
|
export var SecuritySeverity;
|
|
2
6
|
(function (SecuritySeverity) {
|
|
3
7
|
SecuritySeverity["Unknown"] = "Unknown";
|
|
@@ -7,6 +11,11 @@ export var SecuritySeverity;
|
|
|
7
11
|
SecuritySeverity["High"] = "High";
|
|
8
12
|
SecuritySeverity["Critical"] = "Critical";
|
|
9
13
|
})(SecuritySeverity || (SecuritySeverity = {}));
|
|
14
|
+
/**
|
|
15
|
+
* Ordering of security severity values. It is used for sorting purposes, so that
|
|
16
|
+
* Slack message shows issues in the correct order.
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
10
19
|
export const SecuritySeverityOrder = [
|
|
11
20
|
SecuritySeverity.Critical,
|
|
12
21
|
SecuritySeverity.High,
|
|
@@ -15,6 +24,10 @@ export const SecuritySeverityOrder = [
|
|
|
15
24
|
SecuritySeverity.None,
|
|
16
25
|
SecuritySeverity.Unknown
|
|
17
26
|
];
|
|
27
|
+
/**
|
|
28
|
+
* Enum of security level.
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
18
31
|
export var SecurityLevel;
|
|
19
32
|
(function (SecurityLevel) {
|
|
20
33
|
SecurityLevel["Unknown"] = "Unknown";
|
|
@@ -22,10 +35,15 @@ export var SecurityLevel;
|
|
|
22
35
|
SecurityLevel["Warning"] = "Warning";
|
|
23
36
|
SecurityLevel["Error"] = "Error";
|
|
24
37
|
})(SecurityLevel || (SecurityLevel = {}));
|
|
38
|
+
/**
|
|
39
|
+
* Ordering of security level values. It is used for sorting purposes, so that
|
|
40
|
+
* Slack message shows issues in the correct order.
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
25
43
|
export const SecurityLevelOrder = [
|
|
26
44
|
SecurityLevel.Error,
|
|
27
45
|
SecurityLevel.Warning,
|
|
28
46
|
SecurityLevel.Note,
|
|
29
47
|
SecurityLevel.Unknown
|
|
30
48
|
];
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUMxQix1Q0FBbUIsQ0FBQTtJQUNuQixpQ0FBYSxDQUFBO0lBQ2IsK0JBQVcsQ0FBQTtJQUNYLHFDQUFpQixDQUFBO0lBQ2pCLGlDQUFhLENBQUE7SUFDYix5Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBUFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU8zQjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBdUI7SUFDdkQsZ0JBQWdCLENBQUMsUUFBUTtJQUN6QixnQkFBZ0IsQ0FBQyxJQUFJO0lBQ3JCLGdCQUFnQixDQUFDLE1BQU07SUFDdkIsZ0JBQWdCLENBQUMsR0FBRztJQUNwQixnQkFBZ0IsQ0FBQyxJQUFJO0lBQ3JCLGdCQUFnQixDQUFDLE9BQU87Q0FDekIsQ0FBQTtBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBTixJQUFZLGFBS1g7QUFMRCxXQUFZLGFBQWE7SUFDdkIsb0NBQW1CLENBQUE7SUFDbkIsOEJBQWEsQ0FBQTtJQUNiLG9DQUFtQixDQUFBO0lBQ25CLGdDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUxXLGFBQWEsS0FBYixhQUFhLFFBS3hCO0FBR0Q7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFvQjtJQUNqRCxhQUFhLENBQUMsS0FBSztJQUNuQixhQUFhLENBQUMsT0FBTztJQUNyQixhQUFhLENBQUMsSUFBSTtJQUNsQixhQUFhLENBQUMsT0FBTztDQUN0QixDQUFBIn0=
|
package/dist/sarif-to-slack.d.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* webhookUrl: 'https://hooks.slack.com/services/your/webhook/url',
|
|
14
14
|
* sarifPath: 'path/to/your/sarif/file.sarif',
|
|
15
15
|
* log: {
|
|
16
|
-
* level:
|
|
16
|
+
* level: LogLevel.Info,
|
|
17
17
|
* template: '[{{logLevelName}}] [{{name}}] {{dateIsoStr}} ',
|
|
18
18
|
* colored: false,
|
|
19
19
|
* },
|
|
@@ -199,8 +199,8 @@ export declare type SarifLog = Log;
|
|
|
199
199
|
* @public
|
|
200
200
|
*/
|
|
201
201
|
export declare type SarifToSlackOutput = {
|
|
202
|
-
groupBy
|
|
203
|
-
calculateBy
|
|
202
|
+
groupBy?: GroupResultsBy;
|
|
203
|
+
calculateBy?: CalculateResultsBy;
|
|
204
204
|
};
|
|
205
205
|
|
|
206
206
|
/**
|
package/dist/types.d.ts
CHANGED
|
@@ -145,8 +145,8 @@ export declare enum CalculateResultsBy {
|
|
|
145
145
|
* @public
|
|
146
146
|
*/
|
|
147
147
|
export type SarifToSlackOutput = {
|
|
148
|
-
groupBy
|
|
149
|
-
calculateBy
|
|
148
|
+
groupBy?: GroupResultsBy;
|
|
149
|
+
calculateBy?: CalculateResultsBy;
|
|
150
150
|
};
|
|
151
151
|
/**
|
|
152
152
|
* Options for logging.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAEhC;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAA;AAE1B;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3B;;OAEG;IACH,KAAK,EAAE,QAAQ,CAAA;CAChB;AAED;;;GAGG;AACH,oBAAY,QAAQ;IAClB;;;OAGG;IACH,KAAK,IAAI;IACT;;OAEG;IACH,KAAK,IAAI;IACT;;;OAGG;IACH,KAAK,IAAI;IACT;;;OAGG;IACH,IAAI,IAAI;IACR;;;OAGG;IACH,OAAO,IAAI;IACX;;;OAGG;IACH,KAAK,IAAI;IACT;;;OAGG;IACH,KAAK,IAAI;CACV;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG,mBAAmB,GAAG;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;GAGG;AACH,oBAAY,UAAU;IACpB;;OAEG;IACH,SAAS,eAAe;IACxB;;;OAGG;IACH,QAAQ,WAAW;CACpB;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,4BAA4B,GAAG;IACzD,IAAI,CAAC,EAAE,UAAU,CAAA;CAClB,CAAA;AAED;;;GAGG;AACH,oBAAY,cAAc;IACxB;;;OAGG;IACH,QAAQ,IAAI;IACZ;;OAEG;IACH,GAAG,IAAI;IACP;;;OAGG;IACH,KAAK,IAAI;CACV;AAED;;;GAGG;AACH,oBAAY,kBAAkB;IAC5B;;;;;;OAMG;IACH,KAAK,IAAI;IACT;;;;;;OAMG;IACH,QAAQ,IAAI;CACb;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAEhC;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAA;AAE1B;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3B;;OAEG;IACH,KAAK,EAAE,QAAQ,CAAA;CAChB;AAED;;;GAGG;AACH,oBAAY,QAAQ;IAClB;;;OAGG;IACH,KAAK,IAAI;IACT;;OAEG;IACH,KAAK,IAAI;IACT;;;OAGG;IACH,KAAK,IAAI;IACT;;;OAGG;IACH,IAAI,IAAI;IACR;;;OAGG;IACH,OAAO,IAAI;IACX;;;OAGG;IACH,KAAK,IAAI;IACT;;;OAGG;IACH,KAAK,IAAI;CACV;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG,mBAAmB,GAAG;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;GAGG;AACH,oBAAY,UAAU;IACpB;;OAEG;IACH,SAAS,eAAe;IACxB;;;OAGG;IACH,QAAQ,WAAW;CACpB;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,4BAA4B,GAAG;IACzD,IAAI,CAAC,EAAE,UAAU,CAAA;CAClB,CAAA;AAED;;;GAGG;AACH,oBAAY,cAAc;IACxB;;;OAGG;IACH,QAAQ,IAAI;IACZ;;OAEG;IACH,GAAG,IAAI;IACP;;;OAGG;IACH,KAAK,IAAI;CACV;AAED;;;GAGG;AACH,oBAAY,kBAAkB;IAC5B;;;;;;OAMG;IACH,KAAK,IAAI;IACT;;;;;;OAMG;IACH,QAAQ,IAAI;CACb;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAAG;IAEvC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,MAAM,CAAC,EAAE,4BAA4B,CAAC;IACtC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,4BAA4B,CAAC;IACrC,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,CAAA"}
|
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function findRuleByResult(run: Run, result: Result): ReportingDescriptor | undefined;
|
|
3
|
-
export type RuleProperty = 'security-severity' | 'problem.severity';
|
|
4
|
-
export declare function tryGetRulePropertyByResult<T>(run: Run, result: Result, propertyName: RuleProperty): T | undefined;
|
|
1
|
+
export {};
|
|
5
2
|
//# sourceMappingURL=SarifUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SarifUtils.d.ts","sourceRoot":"","sources":["../../src/utils/SarifUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SarifUtils.d.ts","sourceRoot":"","sources":["../../src/utils/SarifUtils.ts"],"names":[],"mappings":""}
|
package/dist/utils/SarifUtils.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This function tries to find the respective rule for the given result.
|
|
3
|
+
* @param run An instance of {@link Run} object.
|
|
4
|
+
* @param result An instance of {@link Result} object.
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
1
7
|
export function findRuleByResult(run, result) {
|
|
2
8
|
const ruleData = {};
|
|
3
9
|
if (result.rule) {
|
|
@@ -22,6 +28,14 @@ export function findRuleByResult(run, result) {
|
|
|
22
28
|
}
|
|
23
29
|
return undefined;
|
|
24
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* This function searches respective rule for the given result, and then gets
|
|
33
|
+
* the property of interest from it.
|
|
34
|
+
* @param run An instance of {@link Run} object.
|
|
35
|
+
* @param result An instance of {@link Result} object.
|
|
36
|
+
* @param propertyName The property name that you want to get the value from.
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
25
39
|
export function tryGetRulePropertyByResult(run, result, propertyName) {
|
|
26
40
|
const rule = findRuleByResult(run, result);
|
|
27
41
|
if (rule && rule.properties && propertyName in rule.properties) {
|
|
@@ -29,4 +43,4 @@ export function tryGetRulePropertyByResult(run, result, propertyName) {
|
|
|
29
43
|
}
|
|
30
44
|
return undefined;
|
|
31
45
|
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2FyaWZVdGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9TYXJpZlV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEdBQVEsRUFBRSxNQUFjO0lBQ3ZELE1BQU0sUUFBUSxHQUFvQyxFQUFFLENBQUE7SUFFcEQsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEIsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLFFBQVEsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDcEMsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNwQixRQUFRLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFBO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3hDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBSztXQUNiLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUs7V0FDdEIsUUFBUSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkQsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzVDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDL0IsQ0FBQyxDQUFzQixFQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQzVELENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUE7QUFDbEIsQ0FBQztBQVFEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQUksR0FBUSxFQUFFLE1BQWMsRUFBRSxZQUEwQjtJQUNoRyxNQUFNLElBQUksR0FBb0MsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQzNFLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFNLENBQUE7SUFDM0MsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUMifQ==
|
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { SecurityLevel, SecuritySeverity } from '../model/types';
|
|
3
|
-
export declare function sortSecurityLevelMap(map: ImmutableMap<SecurityLevel, number>): ImmutableMap<SecurityLevel, number>;
|
|
4
|
-
export declare function sortSecuritySeverityMap(map: ImmutableMap<SecuritySeverity, number>): ImmutableMap<SecuritySeverity, number>;
|
|
1
|
+
export {};
|
|
5
2
|
//# sourceMappingURL=SortUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortUtils.d.ts","sourceRoot":"","sources":["../../src/utils/SortUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SortUtils.d.ts","sourceRoot":"","sources":["../../src/utils/SortUtils.ts"],"names":[],"mappings":""}
|
package/dist/utils/SortUtils.js
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
import { SecurityLevelOrder, SecuritySeverityOrder } from '../model/types';
|
|
2
|
+
/**
|
|
3
|
+
* This function sorts the given map by security level.
|
|
4
|
+
* See {@link SecurityLevelOrder}.
|
|
5
|
+
* @param map A map that you need to sort.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
2
8
|
export function sortSecurityLevelMap(map) {
|
|
3
9
|
return map.sortBy((_, level) => level, (a, b) => SecurityLevelOrder.indexOf(a) - SecurityLevelOrder.indexOf(b)).asImmutable();
|
|
4
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* This function sorts the given map by security severity.
|
|
13
|
+
* See {@link SecuritySeverityOrder}.
|
|
14
|
+
* @param map A map that you need to sort.
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
5
17
|
export function sortSecuritySeverityMap(map) {
|
|
6
18
|
return map.sortBy((_, severity) => severity, (a, b) => SecuritySeverityOrder.indexOf(a) - SecuritySeverityOrder.indexOf(b)).asImmutable();
|
|
7
19
|
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29ydFV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL1NvcnRVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBRUwsa0JBQWtCLEVBRWxCLHFCQUFxQixFQUN0QixNQUFNLGdCQUFnQixDQUFBO0FBRXZCOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEdBQXdDO0lBQzNFLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FDZixDQUFDLENBQVMsRUFBRSxLQUFvQixFQUFpQixFQUFFLENBQUMsS0FBSyxFQUN6RCxDQUFDLENBQWdCLEVBQUUsQ0FBZ0IsRUFBVSxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FDOUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtBQUNqQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsR0FBMkM7SUFDakYsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUNmLENBQUMsQ0FBUyxFQUFFLFFBQTBCLEVBQW9CLEVBQUUsQ0FBQyxRQUFRLEVBQ3JFLENBQUMsQ0FBbUIsRUFBRSxDQUFtQixFQUFVLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUMxSCxDQUFDLFdBQVcsRUFBRSxDQUFBO0FBQ2pCLENBQUMifQ==
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":""}
|
package/dist/version.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* This value is used for the default footer in Slack message.
|
|
3
|
+
*
|
|
4
|
+
* @privateRemarks
|
|
5
|
+
* This file is autogenerated by scripts/save-version.sh
|
|
6
|
+
* Do not edit it manually!
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export const LIB_VERSION = '0.2.2';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQSJ9
|
package/package.json
CHANGED
package/scripts/save-version.sh
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env sh
|
|
2
2
|
|
|
3
3
|
version=$(jq -r '.version' package.json)
|
|
4
|
-
echo "
|
|
5
|
-
echo "
|
|
4
|
+
echo "/**" > src/version.ts
|
|
5
|
+
echo " * This value is used for the default footer in Slack message." >> src/version.ts
|
|
6
|
+
echo " *" >> src/version.ts
|
|
7
|
+
echo " * @privateRemarks" >> src/version.ts
|
|
8
|
+
echo " * This file is autogenerated by scripts/save-version.sh" >> src/version.ts
|
|
9
|
+
echo " * Do not edit it manually!" >> src/version.ts
|
|
10
|
+
echo " *" >> src/version.ts
|
|
11
|
+
echo " * @internal" >> src/version.ts
|
|
12
|
+
echo " */" >> src/version.ts
|
|
6
13
|
echo "export const LIB_VERSION = '${version}'" >> src/version.ts
|
package/src/Processors.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as fs from 'fs'
|
|
2
2
|
import * as path from 'path'
|
|
3
3
|
import Logger from './Logger'
|
|
4
|
-
import { LogLevel } from './types'
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* Processes a color string and converts it to a specific hex code if it matches
|
|
@@ -32,37 +31,6 @@ export function processColor(color?: string): string | undefined {
|
|
|
32
31
|
}
|
|
33
32
|
}
|
|
34
33
|
|
|
35
|
-
/**
|
|
36
|
-
* Processes a log level string or number and converts it to a numeric log level.
|
|
37
|
-
* @param logLevel
|
|
38
|
-
* @returns The numeric log level corresponding to the input string or number.
|
|
39
|
-
* @throws Error If the input string does not match any known log level.
|
|
40
|
-
* @internal
|
|
41
|
-
*/
|
|
42
|
-
export function processLogLevel(logLevel?: string): LogLevel | undefined {
|
|
43
|
-
if (!logLevel) {
|
|
44
|
-
return undefined
|
|
45
|
-
}
|
|
46
|
-
switch (logLevel.toLowerCase()) {
|
|
47
|
-
case 'silly':
|
|
48
|
-
return LogLevel.Silly
|
|
49
|
-
case 'trace':
|
|
50
|
-
return LogLevel.Trace
|
|
51
|
-
case 'debug':
|
|
52
|
-
return LogLevel.Debug
|
|
53
|
-
case 'info':
|
|
54
|
-
return LogLevel.Info
|
|
55
|
-
case 'warning':
|
|
56
|
-
return LogLevel.Warning
|
|
57
|
-
case 'error':
|
|
58
|
-
return LogLevel.Error
|
|
59
|
-
case 'fatal':
|
|
60
|
-
return LogLevel.Fatal
|
|
61
|
-
default:
|
|
62
|
-
throw new Error(`Unknown log level: ${logLevel}`)
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
34
|
/**
|
|
67
35
|
* Processes the SARIF path, which can be a file or a directory. If it's a
|
|
68
36
|
* directory, it returns an array of paths to all `.sarif` files, otherwise it
|
|
@@ -8,6 +8,14 @@ import {
|
|
|
8
8
|
SlackMessage
|
|
9
9
|
} from './types'
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* The main function to initialize a list of {@link SlackMessage} objects based
|
|
13
|
+
* on the given SARIF file(s).
|
|
14
|
+
* @param opts An instance of {@link SarifToSlackServiceOptions} object.
|
|
15
|
+
* @returns A map where key is the SARIF file and value is an instance of
|
|
16
|
+
* {@link SlackMessage} object
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
11
19
|
async function initialize(opts: SarifToSlackServiceOptions): Promise<Map<string, SlackMessage>> {
|
|
12
20
|
const slackMessages = new Map<string, SlackMessage>();
|
|
13
21
|
const sarifFiles: string[] = processSarifPath(opts.sarifPath)
|
package/src/index.ts
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* webhookUrl: 'https://hooks.slack.com/services/your/webhook/url',
|
|
16
16
|
* sarifPath: 'path/to/your/sarif/file.sarif',
|
|
17
17
|
* log: {
|
|
18
|
-
* level:
|
|
18
|
+
* level: LogLevel.Info,
|
|
19
19
|
* template: '[{{logLevelName}}] [{{name}}] {{dateIsoStr}} ',
|
|
20
20
|
* colored: false,
|
|
21
21
|
* },
|
|
@@ -49,15 +49,17 @@
|
|
|
49
49
|
export { SarifToSlackService } from './SarifToSlackService'
|
|
50
50
|
export {
|
|
51
51
|
CalculateResultsBy,
|
|
52
|
-
FooterOptions,
|
|
53
52
|
FooterType,
|
|
54
53
|
GroupResultsBy,
|
|
54
|
+
LogLevel,
|
|
55
|
+
SlackMessage
|
|
56
|
+
} from './types'
|
|
57
|
+
export type {
|
|
58
|
+
FooterOptions,
|
|
55
59
|
IncludeAwareOptions,
|
|
56
60
|
IncludeAwareWithValueOptions,
|
|
57
|
-
LogLevel,
|
|
58
61
|
LogOptions,
|
|
59
62
|
SarifLog,
|
|
60
63
|
SarifToSlackOutput,
|
|
61
|
-
SarifToSlackServiceOptions
|
|
62
|
-
SlackMessage,
|
|
64
|
+
SarifToSlackServiceOptions
|
|
63
65
|
} from './types'
|
|
@@ -8,6 +8,12 @@ import {
|
|
|
8
8
|
sortSecuritySeverityMap
|
|
9
9
|
} from '../utils/SortUtils';
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* This class keeps information about results per run. It has 2 hash maps:
|
|
13
|
+
* - severity to number: the amount of results for each severity
|
|
14
|
+
* - level to number: the amount of results for each level
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
11
17
|
export class SarifModelPerRun {
|
|
12
18
|
public readonly toolName: string
|
|
13
19
|
|
|
@@ -7,11 +7,21 @@ import {
|
|
|
7
7
|
sortSecuritySeverityMap
|
|
8
8
|
} from '../utils/SortUtils';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* A data type that has a hash map with the amount of <severity|level> results
|
|
12
|
+
* and tool name.
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
10
15
|
export type DataGroupedByRun<T> = {
|
|
11
16
|
toolName: string,
|
|
12
17
|
data: ImmutableMap<T, number>
|
|
13
18
|
}
|
|
14
19
|
|
|
20
|
+
/**
|
|
21
|
+
* This class is used to group results by different fields, such as grouping by
|
|
22
|
+
* tool name, runs, etc.
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
15
25
|
export class SarifModelPerSarif {
|
|
16
26
|
private readonly sarifModelPerRunList: Array<SarifModelPerRun>;
|
|
17
27
|
|
package/src/model/types.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enum of security severity.
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
1
5
|
export enum SecuritySeverity {
|
|
2
6
|
Unknown = 'Unknown',
|
|
3
7
|
None = 'None',
|
|
@@ -7,6 +11,11 @@ export enum SecuritySeverity {
|
|
|
7
11
|
Critical = 'Critical'
|
|
8
12
|
}
|
|
9
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Ordering of security severity values. It is used for sorting purposes, so that
|
|
16
|
+
* Slack message shows issues in the correct order.
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
10
19
|
export const SecuritySeverityOrder: SecuritySeverity[] = [
|
|
11
20
|
SecuritySeverity.Critical,
|
|
12
21
|
SecuritySeverity.High,
|
|
@@ -16,6 +25,10 @@ export const SecuritySeverityOrder: SecuritySeverity[] = [
|
|
|
16
25
|
SecuritySeverity.Unknown
|
|
17
26
|
]
|
|
18
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Enum of security level.
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
19
32
|
export enum SecurityLevel {
|
|
20
33
|
Unknown = 'Unknown',
|
|
21
34
|
Note = 'Note',
|
|
@@ -23,6 +36,12 @@ export enum SecurityLevel {
|
|
|
23
36
|
Error = 'Error'
|
|
24
37
|
}
|
|
25
38
|
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Ordering of security level values. It is used for sorting purposes, so that
|
|
42
|
+
* Slack message shows issues in the correct order.
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
26
45
|
export const SecurityLevelOrder: SecurityLevel[] = [
|
|
27
46
|
SecurityLevel.Error,
|
|
28
47
|
SecurityLevel.Warning,
|
package/src/types.ts
CHANGED
package/src/utils/SarifUtils.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import type { ReportingDescriptor, Result, Run } from "sarif";
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* This function tries to find the respective rule for the given result.
|
|
5
|
+
* @param run An instance of {@link Run} object.
|
|
6
|
+
* @param result An instance of {@link Result} object.
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
3
9
|
export function findRuleByResult(run: Run, result: Result): ReportingDescriptor | undefined {
|
|
4
10
|
const ruleData: { id?: string, index?: number } = {}
|
|
5
11
|
|
|
@@ -32,8 +38,20 @@ export function findRuleByResult(run: Run, result: Result): ReportingDescriptor
|
|
|
32
38
|
return undefined
|
|
33
39
|
}
|
|
34
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Allowed property names that we can search for from the rule.
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
35
45
|
export type RuleProperty = 'security-severity' | 'problem.severity'
|
|
36
46
|
|
|
47
|
+
/**
|
|
48
|
+
* This function searches respective rule for the given result, and then gets
|
|
49
|
+
* the property of interest from it.
|
|
50
|
+
* @param run An instance of {@link Run} object.
|
|
51
|
+
* @param result An instance of {@link Result} object.
|
|
52
|
+
* @param propertyName The property name that you want to get the value from.
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
37
55
|
export function tryGetRulePropertyByResult<T>(run: Run, result: Result, propertyName: RuleProperty): T | undefined {
|
|
38
56
|
const rule: ReportingDescriptor | undefined = findRuleByResult(run, result)
|
|
39
57
|
if (rule && rule.properties && propertyName in rule.properties) {
|
package/src/utils/SortUtils.ts
CHANGED
|
@@ -6,6 +6,12 @@ import {
|
|
|
6
6
|
SecuritySeverityOrder
|
|
7
7
|
} from '../model/types'
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* This function sorts the given map by security level.
|
|
11
|
+
* See {@link SecurityLevelOrder}.
|
|
12
|
+
* @param map A map that you need to sort.
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
9
15
|
export function sortSecurityLevelMap(map: ImmutableMap<SecurityLevel, number>): ImmutableMap<SecurityLevel, number> {
|
|
10
16
|
return map.sortBy(
|
|
11
17
|
(_: number, level: SecurityLevel): SecurityLevel => level,
|
|
@@ -13,6 +19,12 @@ export function sortSecurityLevelMap(map: ImmutableMap<SecurityLevel, number>):
|
|
|
13
19
|
).asImmutable()
|
|
14
20
|
}
|
|
15
21
|
|
|
22
|
+
/**
|
|
23
|
+
* This function sorts the given map by security severity.
|
|
24
|
+
* See {@link SecuritySeverityOrder}.
|
|
25
|
+
* @param map A map that you need to sort.
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
16
28
|
export function sortSecuritySeverityMap(map: ImmutableMap<SecuritySeverity, number>): ImmutableMap<SecuritySeverity, number> {
|
|
17
29
|
return map.sortBy(
|
|
18
30
|
(_: number, severity: SecuritySeverity): SecuritySeverity => severity,
|
package/src/version.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* This value is used for the default footer in Slack message.
|
|
3
|
+
*
|
|
4
|
+
* @privateRemarks
|
|
5
|
+
* This file is autogenerated by scripts/save-version.sh
|
|
6
|
+
* Do not edit it manually!
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export const LIB_VERSION = '0.2.2'
|
package/tests/Processors.spec.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as fs from 'fs'
|
|
2
2
|
import * as path from 'path'
|
|
3
|
-
import { processColor, processSarifPath
|
|
3
|
+
import { processColor, processSarifPath } from '../src/Processors'
|
|
4
4
|
|
|
5
5
|
jest.mock('fs')
|
|
6
6
|
const mockedFs = fs as jest.Mocked<typeof fs>
|
|
@@ -74,42 +74,3 @@ describe('(unit): processSarifPath', () => {
|
|
|
74
74
|
expect(() => processSarifPath('/weird/path')).toThrow(/neither a file nor a directory/)
|
|
75
75
|
})
|
|
76
76
|
})
|
|
77
|
-
|
|
78
|
-
describe('(unit): processLogLevel', () => {
|
|
79
|
-
test('returns 0 for silly', () => {
|
|
80
|
-
expect(processLogLevel('silly')).toBe(0)
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
test('returns 1 for trace', () => {
|
|
84
|
-
expect(processLogLevel('trace')).toBe(1)
|
|
85
|
-
})
|
|
86
|
-
|
|
87
|
-
test('returns 2 for debug', () => {
|
|
88
|
-
expect(processLogLevel('debug')).toBe(2)
|
|
89
|
-
})
|
|
90
|
-
|
|
91
|
-
test('returns 3 for info', () => {
|
|
92
|
-
expect(processLogLevel('info')).toBe(3)
|
|
93
|
-
})
|
|
94
|
-
|
|
95
|
-
test('returns 4 for warning', () => {
|
|
96
|
-
expect(processLogLevel('warning')).toBe(4)
|
|
97
|
-
})
|
|
98
|
-
|
|
99
|
-
test('returns 5 for error', () => {
|
|
100
|
-
expect(processLogLevel('error')).toBe(5)
|
|
101
|
-
})
|
|
102
|
-
|
|
103
|
-
test('returns 6 for fatal', () => {
|
|
104
|
-
expect(processLogLevel('fatal')).toBe(6)
|
|
105
|
-
})
|
|
106
|
-
|
|
107
|
-
test('is case-insensitive', () => {
|
|
108
|
-
expect(processLogLevel('ERROR')).toBe(5)
|
|
109
|
-
expect(processLogLevel('Info')).toBe(3)
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
test('throws for unknown log level', () => {
|
|
113
|
-
expect(() => processLogLevel('unknown')).toThrow(/Unknown log level/)
|
|
114
|
-
})
|
|
115
|
-
})
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CalculateResultsBy,
|
|
3
3
|
GroupResultsBy,
|
|
4
|
+
LogLevel,
|
|
4
5
|
SarifToSlackService
|
|
5
6
|
} from '../../src'
|
|
6
|
-
import { processLogLevel } from '../../src/Processors';
|
|
7
7
|
|
|
8
8
|
function groupByMap(groupBy?: string): GroupResultsBy {
|
|
9
9
|
switch (groupBy) {
|
|
@@ -21,6 +21,30 @@ function calculateByMap(calculateBy?: string): CalculateResultsBy {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
describe('(integration): SendSarifToSlack', () => {
|
|
24
|
+
function processLogLevel(logLevel?: string): LogLevel | undefined {
|
|
25
|
+
if (!logLevel) {
|
|
26
|
+
return undefined
|
|
27
|
+
}
|
|
28
|
+
switch (logLevel.toLowerCase()) {
|
|
29
|
+
case 'silly':
|
|
30
|
+
return LogLevel.Silly
|
|
31
|
+
case 'trace':
|
|
32
|
+
return LogLevel.Trace
|
|
33
|
+
case 'debug':
|
|
34
|
+
return LogLevel.Debug
|
|
35
|
+
case 'info':
|
|
36
|
+
return LogLevel.Info
|
|
37
|
+
case 'warning':
|
|
38
|
+
return LogLevel.Warning
|
|
39
|
+
case 'error':
|
|
40
|
+
return LogLevel.Error
|
|
41
|
+
case 'fatal':
|
|
42
|
+
return LogLevel.Fatal
|
|
43
|
+
default:
|
|
44
|
+
throw new Error(`Unknown log level: ${logLevel}`)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
24
48
|
test('Should send Sarif to Slack', async () => {
|
|
25
49
|
const sarifToSlackService: SarifToSlackService = await SarifToSlackService.create({
|
|
26
50
|
webhookUrl: process.env.SARIF_TO_SLACK_WEBHOOK_URL as string,
|