@fabasoad/sarif-to-slack 1.3.5 → 1.4.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/release.yml +18 -9
- package/.github/workflows/security.yml +1 -0
- package/.github/workflows/send-sarif-to-slack.yml +49 -17
- package/.github/workflows/unit-tests.yml +3 -3
- package/.pre-commit-config.yaml +5 -5
- package/.tool-versions +1 -1
- package/Makefile +13 -13
- package/README.md +8 -7
- package/api-extractor.json +1 -1
- package/biome.json +1 -1
- package/dist/SarifToSlackClient.d.ts +0 -1
- package/dist/SarifToSlackClient.d.ts.map +1 -1
- package/dist/SarifToSlackClient.js +12 -9
- package/dist/globalState.d.ts +2 -0
- package/dist/globalState.d.ts.map +1 -0
- package/dist/globalState.js +2 -0
- package/dist/index.cjs +86 -100
- package/dist/index.d.ts +36 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/model/Finding.js +7 -6
- package/dist/model/FindingArray.js +1 -1
- package/dist/model/SendIf.js +1 -1
- package/dist/model/SlackMessage.d.ts.map +1 -1
- package/dist/model/SlackMessage.js +6 -6
- package/dist/model/color/Color.d.ts.map +1 -1
- package/dist/model/color/Color.js +1 -1
- package/dist/model/color/ColorIdentification.js +7 -7
- package/dist/model/color/ColorOptions.d.ts.map +1 -1
- package/dist/processors/CodeQLProcessor.js +1 -1
- package/dist/processors/CommonProcessor.js +1 -1
- package/dist/processors/ProcessorFactory.js +1 -1
- package/dist/processors/SnykProcessor.js +2 -1
- package/dist/representations/CompactGroupByRepresentation.js +1 -1
- package/dist/representations/CompactGroupByRunPerLevelRepresentation.js +1 -1
- package/dist/representations/CompactGroupByRunPerSeverityRepresentation.js +1 -1
- package/dist/representations/CompactGroupByRunRepresentation.js +1 -1
- package/dist/representations/CompactGroupBySarifPerLevelRepresentation.js +1 -1
- package/dist/representations/CompactGroupBySarifPerSeverityRepresentation.js +1 -1
- package/dist/representations/CompactGroupBySarifRepresentation.js +1 -1
- package/dist/representations/CompactGroupByToolNamePerLevelRepresentation.js +1 -1
- package/dist/representations/CompactGroupByToolNamePerSeverityRepresentation.js +1 -1
- package/dist/representations/CompactGroupByToolNameRepresentation.js +1 -1
- package/dist/representations/CompactTotalPerLevelRepresentation.js +1 -1
- package/dist/representations/CompactTotalPerSeverityRepresentation.js +1 -1
- package/dist/representations/CompactTotalRepresentation.js +1 -1
- package/dist/representations/Representation.js +1 -1
- package/dist/representations/RepresentationFactory.js +1 -1
- package/dist/representations/TableGroupByRunPerLevelRepresentation.d.ts.map +1 -1
- package/dist/representations/TableGroupByRunPerLevelRepresentation.js +1 -1
- package/dist/representations/TableGroupByRunPerSeverityRepresentation.d.ts.map +1 -1
- package/dist/representations/TableGroupByRunPerSeverityRepresentation.js +1 -1
- package/dist/representations/TableGroupByRunRepresentation.d.ts.map +1 -1
- package/dist/representations/TableGroupByRunRepresentation.js +1 -1
- package/dist/representations/TableGroupBySarifPerLevelRepresentation.d.ts.map +1 -1
- package/dist/representations/TableGroupBySarifPerLevelRepresentation.js +1 -1
- package/dist/representations/TableGroupBySarifPerSeverityRepresentation.d.ts.map +1 -1
- package/dist/representations/TableGroupBySarifPerSeverityRepresentation.js +1 -1
- package/dist/representations/TableGroupBySarifRepresentation.d.ts.map +1 -1
- package/dist/representations/TableGroupBySarifRepresentation.js +1 -1
- package/dist/representations/TableGroupByToolNamePerLevelRepresentation.d.ts.map +1 -1
- package/dist/representations/TableGroupByToolNamePerLevelRepresentation.js +1 -1
- package/dist/representations/TableGroupByToolNamePerSeverityRepresentation.d.ts.map +1 -1
- package/dist/representations/TableGroupByToolNamePerSeverityRepresentation.js +1 -1
- package/dist/representations/TableGroupByToolNameRepresentation.d.ts.map +1 -1
- package/dist/representations/TableGroupByToolNameRepresentation.js +1 -1
- package/dist/representations/TableGroupRepresentation.d.ts +0 -1
- package/dist/representations/TableGroupRepresentation.d.ts.map +1 -1
- package/dist/representations/TableGroupRepresentation.js +4 -4
- package/dist/representations/table/Cell.d.ts.map +1 -1
- package/dist/representations/table/Cell.js +1 -1
- package/dist/representations/table/Column.d.ts +0 -1
- package/dist/representations/table/Column.d.ts.map +1 -1
- package/dist/representations/table/Column.js +4 -4
- package/dist/representations/table/Row.d.ts +0 -1
- package/dist/representations/table/Row.d.ts.map +1 -1
- package/dist/representations/table/Row.js +4 -4
- package/dist/representations/table/Table.d.ts.map +1 -1
- package/dist/representations/table/Table.js +1 -1
- package/dist/setupLogger.d.ts +16 -0
- package/dist/setupLogger.d.ts.map +1 -0
- package/dist/setupLogger.js +43 -0
- package/dist/system.js +6 -6
- package/dist/tsdoc-metadata.json +1 -1
- package/dist/types.d.ts +25 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +11 -1
- package/dist/utils/Comparators.js +1 -1
- package/dist/utils/ExtendedArray.js +1 -1
- package/dist/utils/FileUtils.js +3 -3
- package/dist/utils/SarifUtils.js +1 -1
- package/dist/utils/StringUtils.js +1 -1
- package/etc/sarif-to-slack.api.md +17 -1
- package/package.json +24 -22
- package/pnpm-workspace.yaml +8 -0
- package/scripts/build.sh +1 -1
- package/src/SarifToSlackClient.ts +73 -68
- package/src/globalState.ts +11 -0
- package/src/index.ts +23 -12
- package/src/model/Finding.ts +36 -35
- package/src/model/FindingArray.ts +5 -5
- package/src/model/SendIf.ts +25 -25
- package/src/model/SlackMessage.ts +52 -49
- package/src/model/color/Color.ts +7 -7
- package/src/model/color/ColorIdentification.ts +77 -77
- package/src/model/color/ColorOptions.ts +1 -1
- package/src/processors/CodeQLProcessor.ts +3 -3
- package/src/processors/CommonProcessor.ts +24 -24
- package/src/processors/ProcessorFactory.ts +9 -9
- package/src/processors/SnykProcessor.ts +3 -2
- package/src/representations/CompactGroupByRepresentation.ts +20 -20
- package/src/representations/CompactGroupByRunPerLevelRepresentation.ts +2 -2
- package/src/representations/CompactGroupByRunPerSeverityRepresentation.ts +2 -2
- package/src/representations/CompactGroupByRunRepresentation.ts +10 -10
- package/src/representations/CompactGroupBySarifPerLevelRepresentation.ts +2 -2
- package/src/representations/CompactGroupBySarifPerSeverityRepresentation.ts +2 -2
- package/src/representations/CompactGroupBySarifRepresentation.ts +11 -11
- package/src/representations/CompactGroupByToolNamePerLevelRepresentation.ts +2 -2
- package/src/representations/CompactGroupByToolNamePerSeverityRepresentation.ts +2 -2
- package/src/representations/CompactGroupByToolNameRepresentation.ts +10 -10
- package/src/representations/CompactTotalPerLevelRepresentation.ts +2 -2
- package/src/representations/CompactTotalPerSeverityRepresentation.ts +2 -2
- package/src/representations/CompactTotalRepresentation.ts +5 -5
- package/src/representations/Representation.ts +8 -8
- package/src/representations/RepresentationFactory.ts +32 -32
- package/src/representations/TableGroupByRunPerLevelRepresentation.ts +3 -3
- package/src/representations/TableGroupByRunPerSeverityRepresentation.ts +3 -3
- package/src/representations/TableGroupByRunRepresentation.ts +5 -5
- package/src/representations/TableGroupBySarifPerLevelRepresentation.ts +3 -3
- package/src/representations/TableGroupBySarifPerSeverityRepresentation.ts +3 -3
- package/src/representations/TableGroupBySarifRepresentation.ts +9 -9
- package/src/representations/TableGroupByToolNamePerLevelRepresentation.ts +3 -3
- package/src/representations/TableGroupByToolNamePerSeverityRepresentation.ts +3 -3
- package/src/representations/TableGroupByToolNameRepresentation.ts +4 -4
- package/src/representations/TableGroupRepresentation.ts +32 -32
- package/src/representations/table/Cell.ts +8 -8
- package/src/representations/table/Column.ts +13 -13
- package/src/representations/table/Row.ts +17 -17
- package/src/representations/table/Table.ts +21 -21
- package/src/setupLogger.ts +62 -0
- package/src/system.ts +6 -6
- package/src/types.ts +39 -13
- package/src/utils/Comparators.ts +6 -6
- package/src/utils/ExtendedArray.ts +1 -1
- package/src/utils/FileUtils.ts +4 -4
- package/src/utils/SarifUtils.ts +6 -6
- package/src/utils/StringUtils.ts +3 -3
- package/tests/integration/SendSarifToSlack.spec.ts +73 -67
- package/tests/representations/CompactGroupByRunPerLevelRepresentation.spec.ts +121 -0
- package/tests/representations/CompactGroupByRunPerSeverityRepresentation.spec.ts +122 -0
- package/tests/representations/CompactGroupBySarifPerLevelRepresentation.spec.ts +132 -0
- package/tests/representations/CompactGroupBySarifPerSeverityRepresentation.spec.ts +133 -0
- package/tests/tsconfig.json +8 -0
- package/tests/vitest.d.ts +1 -0
- package/tsconfig.build.json +9 -0
- package/tsconfig.json +5 -5
- package/tsconfig.test.json +8 -0
- package/vitest.config.ts +22 -0
- package/dist/Logger.d.ts +0 -2
- package/dist/Logger.d.ts.map +0 -1
- package/dist/Logger.js +0 -66
- package/jest.config.json +0 -33
- package/src/Logger.ts +0 -81
|
@@ -35,33 +35,42 @@ jobs:
|
|
|
35
35
|
private-key: ${{ secrets.GH_APP_CONTENTS_CRUD_PRIVATE_KEY }}
|
|
36
36
|
|
|
37
37
|
- name: Checkout ${{ github.repository }}
|
|
38
|
-
uses: actions/checkout@
|
|
38
|
+
uses: actions/checkout@v7
|
|
39
39
|
with:
|
|
40
40
|
token: "${{ steps.github-app.outputs.token }}"
|
|
41
|
+
persist-credentials: "true"
|
|
42
|
+
|
|
43
|
+
- name: Setup pnpm
|
|
44
|
+
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
|
|
45
|
+
with:
|
|
46
|
+
# Intentional: actions/setup-node provides dependency caching; disable
|
|
47
|
+
# pnpm/action-setup cache to avoid duplicate/unstable cache behavior
|
|
48
|
+
cache: "false"
|
|
41
49
|
|
|
42
50
|
- name: Setup Node
|
|
43
51
|
uses: actions/setup-node@v6
|
|
44
52
|
with:
|
|
45
53
|
node-version-file: ".tool-versions"
|
|
46
|
-
cache: "
|
|
47
|
-
cache-dependency-path: "
|
|
54
|
+
cache: "pnpm"
|
|
55
|
+
cache-dependency-path: "pnpm-lock.yaml"
|
|
48
56
|
|
|
49
57
|
- name: Install dependencies
|
|
50
|
-
run:
|
|
58
|
+
run: pnpm install --frozen-lockfile
|
|
51
59
|
|
|
52
60
|
- name: Install jq
|
|
53
|
-
uses: dcarbone/install-jq-action@
|
|
61
|
+
uses: dcarbone/install-jq-action@4fcb5062d7ce9bc4382d1a352d19ba3ba2c317c1 # v4.0.1
|
|
54
62
|
|
|
55
63
|
- name: Bump version
|
|
56
64
|
env:
|
|
57
65
|
BUMP_STRATEGY: "${{ github.event.inputs.bump-strategy }}"
|
|
58
66
|
GH_TOKEN: "${{ steps.github-app.outputs.token }}"
|
|
67
|
+
GH_APP_SLUG: "${{ steps.github-app.outputs.app-slug }}"
|
|
59
68
|
run: |
|
|
60
|
-
user_name="${
|
|
69
|
+
user_name="${GH_APP_SLUG}[bot]"
|
|
61
70
|
user_id="$(gh api "/users/${user_name}" --jq .id)"
|
|
62
71
|
git config user.email "${user_id}+${user_name}@users.noreply.github.com"
|
|
63
72
|
git config user.name "${user_name}"
|
|
64
|
-
|
|
73
|
+
pnpm run version:${BUMP_STRATEGY}
|
|
65
74
|
|
|
66
75
|
- name: Get metadata
|
|
67
76
|
id: metadata
|
|
@@ -71,13 +80,13 @@ jobs:
|
|
|
71
80
|
echo "ref-name=v${version}" >> "$GITHUB_OUTPUT"
|
|
72
81
|
|
|
73
82
|
- name: Publish to npm registry
|
|
74
|
-
uses: JS-DevTools/npm-publish@v4
|
|
83
|
+
uses: JS-DevTools/npm-publish@0fd2f4369c5d6bcfcde6091a7c527d810b9b5c3f # v4.1.5
|
|
75
84
|
with:
|
|
76
85
|
token: "${{ secrets.NPM_TOKEN }}"
|
|
77
86
|
registry: "https://registry.npmjs.org"
|
|
78
87
|
|
|
79
88
|
- name: Publish to GitHub Packages
|
|
80
|
-
uses: JS-DevTools/npm-publish@v4
|
|
89
|
+
uses: JS-DevTools/npm-publish@0fd2f4369c5d6bcfcde6091a7c527d810b9b5c3f # v4.1.5
|
|
81
90
|
with:
|
|
82
91
|
token: "${{ secrets.GITHUB_TOKEN }}"
|
|
83
92
|
registry: "https://npm.pkg.github.com"
|
|
@@ -23,5 +23,6 @@ jobs:
|
|
|
23
23
|
contents: read
|
|
24
24
|
security-events: write
|
|
25
25
|
with:
|
|
26
|
+
code-scanning-languages: "actions, typescript"
|
|
26
27
|
code-scanning: ${{ contains(fromJSON('["all", "code-scanning"]'), github.event.inputs.security-type || 'all') }}
|
|
27
28
|
sca: ${{ contains(fromJSON('["all", "sca"]'), github.event.inputs.security-type || 'all') }}
|
|
@@ -74,19 +74,6 @@ on: # yamllint disable-line rule:truthy
|
|
|
74
74
|
- "compact-group-by-sarif-per-severity"
|
|
75
75
|
- "compact-total-per-level"
|
|
76
76
|
- "compact-total-per-severity"
|
|
77
|
-
log-level:
|
|
78
|
-
description: "Log level:"
|
|
79
|
-
required: false
|
|
80
|
-
default: "info"
|
|
81
|
-
type: choice
|
|
82
|
-
options:
|
|
83
|
-
- "silly"
|
|
84
|
-
- "trace"
|
|
85
|
-
- "debug"
|
|
86
|
-
- "info"
|
|
87
|
-
- "warning"
|
|
88
|
-
- "error"
|
|
89
|
-
- "fatal"
|
|
90
77
|
send-if:
|
|
91
78
|
description: "Send if:"
|
|
92
79
|
required: false
|
|
@@ -151,6 +138,39 @@ on: # yamllint disable-line rule:truthy
|
|
|
151
138
|
required: false
|
|
152
139
|
default: true
|
|
153
140
|
type: boolean
|
|
141
|
+
log-level:
|
|
142
|
+
description: "Log level:"
|
|
143
|
+
required: false
|
|
144
|
+
default: "info"
|
|
145
|
+
type: choice
|
|
146
|
+
options:
|
|
147
|
+
- "silly"
|
|
148
|
+
- "trace"
|
|
149
|
+
- "debug"
|
|
150
|
+
- "info"
|
|
151
|
+
- "warning"
|
|
152
|
+
- "error"
|
|
153
|
+
- "fatal"
|
|
154
|
+
log-template:
|
|
155
|
+
description: "Log template:"
|
|
156
|
+
required: false
|
|
157
|
+
default: "[{{logLevelName}}] [{{name}}] {{dateIsoStr}} "
|
|
158
|
+
type: string
|
|
159
|
+
style-pretty-logs:
|
|
160
|
+
description: "Colored logs"
|
|
161
|
+
required: false
|
|
162
|
+
default: true
|
|
163
|
+
type: boolean
|
|
164
|
+
log-function-name:
|
|
165
|
+
description: "Log function name"
|
|
166
|
+
required: false
|
|
167
|
+
default: false
|
|
168
|
+
type: boolean
|
|
169
|
+
log-function-name-on-position:
|
|
170
|
+
description: "Log function name from this position in stacktrace:"
|
|
171
|
+
required: false
|
|
172
|
+
default: 2
|
|
173
|
+
type: number
|
|
154
174
|
|
|
155
175
|
defaults:
|
|
156
176
|
run:
|
|
@@ -161,9 +181,13 @@ jobs:
|
|
|
161
181
|
name: ${{ github.event.inputs.sarif }}
|
|
162
182
|
timeout-minutes: 5
|
|
163
183
|
runs-on: ubuntu-latest
|
|
184
|
+
permissions:
|
|
185
|
+
contents: read
|
|
164
186
|
steps:
|
|
165
187
|
- name: Checkout ${{ github.repository }}
|
|
166
|
-
uses: actions/checkout@
|
|
188
|
+
uses: actions/checkout@v7
|
|
189
|
+
with:
|
|
190
|
+
persist-credentials: "false"
|
|
167
191
|
- name: Determine SARIF file
|
|
168
192
|
id: sarif-file
|
|
169
193
|
env:
|
|
@@ -272,12 +296,18 @@ jobs:
|
|
|
272
296
|
value=""
|
|
273
297
|
fi
|
|
274
298
|
echo "value=${value}" >> "$GITHUB_OUTPUT"
|
|
299
|
+
- name: Setup pnpm
|
|
300
|
+
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
|
|
301
|
+
with:
|
|
302
|
+
run_install: false
|
|
275
303
|
- name: Setup node
|
|
276
304
|
uses: actions/setup-node@v6
|
|
277
305
|
with:
|
|
278
306
|
node-version-file: ".tool-versions"
|
|
307
|
+
cache: "pnpm"
|
|
308
|
+
cache-dependency-path: "pnpm-lock.yaml"
|
|
279
309
|
- name: Install dependencies
|
|
280
|
-
run:
|
|
310
|
+
run: pnpm install --frozen-lockfile
|
|
281
311
|
- name: Send message
|
|
282
312
|
env:
|
|
283
313
|
SARIF_TO_SLACK_WEBHOOK_URL: "${{ secrets.TMP_EUGENE_SLACK_WEBHOOK }}"
|
|
@@ -289,8 +319,10 @@ jobs:
|
|
|
289
319
|
SARIF_TO_SLACK_SARIF_PATH_RECURSIVE: "false"
|
|
290
320
|
SARIF_TO_SLACK_SARIF_FILE_EXTENSION: "sarif"
|
|
291
321
|
SARIF_TO_SLACK_LOG_LEVEL: "${{ github.event.inputs.log-level }}"
|
|
292
|
-
SARIF_TO_SLACK_LOG_TEMPLATE: "
|
|
293
|
-
|
|
322
|
+
SARIF_TO_SLACK_LOG_TEMPLATE: "${{ github.event.inputs.log-template }}"
|
|
323
|
+
SARIF_TO_SLACK_STYLE_PRETTY_LOGS: "${{ github.event.inputs.style-pretty-logs }}"
|
|
324
|
+
SARIF_TO_SLACK_LOG_FUNCTION_NAME: "${{ github.event.inputs.log-function-name }}"
|
|
325
|
+
SARIF_TO_SLACK_LOG_FUNCTION_NAME_ON_POSITION: "${{ github.event.inputs.log-function-name-on-position }}"
|
|
294
326
|
SARIF_TO_SLACK_HEADER: "${{ github.event.inputs.header }}"
|
|
295
327
|
SARIF_TO_SLACK_FOOTER: "${{ github.event.inputs.footer }}"
|
|
296
328
|
SARIF_TO_SLACK_ACTOR: "${{ github.event.inputs.actor }}"
|
|
@@ -6,7 +6,7 @@ on: # yamllint disable-line rule:truthy
|
|
|
6
6
|
paths:
|
|
7
7
|
- .github/workflows/unit-tests.yml
|
|
8
8
|
- .tool-versions
|
|
9
|
-
-
|
|
9
|
+
- vitest.config.ts
|
|
10
10
|
- package.json
|
|
11
11
|
- src/**
|
|
12
12
|
- tests/**
|
|
@@ -17,8 +17,8 @@ on: # yamllint disable-line rule:truthy
|
|
|
17
17
|
workflow_dispatch: {}
|
|
18
18
|
|
|
19
19
|
jobs:
|
|
20
|
-
|
|
21
|
-
name:
|
|
20
|
+
vitest:
|
|
21
|
+
name: Vitest
|
|
22
22
|
uses: fabasoad/reusable-workflows/.github/workflows/wf-js-unit-tests.yml@main
|
|
23
23
|
permissions:
|
|
24
24
|
contents: read
|
package/.pre-commit-config.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
default_install_hook_types: ["pre-commit", "pre-push"]
|
|
3
3
|
default_stages: ["pre-commit", "pre-push"]
|
|
4
|
-
exclude: ^(dist
|
|
4
|
+
exclude: ^((dist|etc|node_modules|temp|test-data)/.*|vitest-report.json|pnpm-lock.yaml)$
|
|
5
5
|
minimum_pre_commit_version: 4.4.0
|
|
6
6
|
repos:
|
|
7
7
|
- repo: local
|
|
@@ -29,7 +29,7 @@ repos:
|
|
|
29
29
|
stages: ["pre-push"]
|
|
30
30
|
# Security
|
|
31
31
|
- id: audit
|
|
32
|
-
name:
|
|
32
|
+
name: pnpm audit
|
|
33
33
|
entry: make audit
|
|
34
34
|
language: unsupported
|
|
35
35
|
pass_filenames: false
|
|
@@ -60,16 +60,16 @@ repos:
|
|
|
60
60
|
- --hook-args=--log-level debug
|
|
61
61
|
stages: ["pre-push"]
|
|
62
62
|
- repo: https://github.com/google/osv-scanner
|
|
63
|
-
rev: v2.
|
|
63
|
+
rev: v2.4.0
|
|
64
64
|
hooks:
|
|
65
65
|
- id: osv-scanner
|
|
66
66
|
args:
|
|
67
|
-
- --lockfile=
|
|
67
|
+
- --lockfile=pnpm-lock.yaml
|
|
68
68
|
verbose: true
|
|
69
69
|
stages: ["pre-push"]
|
|
70
70
|
# Markdown
|
|
71
71
|
- repo: https://github.com/igorshubovych/markdownlint-cli
|
|
72
|
-
rev: v0.
|
|
72
|
+
rev: v0.49.0
|
|
73
73
|
hooks:
|
|
74
74
|
- id: markdownlint-fix
|
|
75
75
|
stages: ["pre-commit"]
|
package/.tool-versions
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
nodejs
|
|
1
|
+
nodejs 26.4.0
|
package/Makefile
CHANGED
|
@@ -2,52 +2,52 @@
|
|
|
2
2
|
|
|
3
3
|
.PHONY: audit
|
|
4
4
|
audit:
|
|
5
|
-
@
|
|
5
|
+
@pnpm audit
|
|
6
6
|
|
|
7
7
|
.PHONY: build
|
|
8
8
|
build:
|
|
9
|
-
@
|
|
9
|
+
@pnpm run build
|
|
10
10
|
|
|
11
11
|
.PHONY: clean
|
|
12
12
|
clean:
|
|
13
|
-
@
|
|
13
|
+
@pnpm run clean
|
|
14
14
|
|
|
15
15
|
.PHONY: install
|
|
16
16
|
install:
|
|
17
|
-
@
|
|
17
|
+
@pnpm install
|
|
18
18
|
|
|
19
19
|
.PHONY: reinstall
|
|
20
20
|
reinstall:
|
|
21
21
|
@make clean
|
|
22
|
-
@
|
|
22
|
+
@pnpm run clean:unsafe
|
|
23
23
|
@make install
|
|
24
24
|
|
|
25
25
|
.PHONY: lint
|
|
26
26
|
lint:
|
|
27
|
-
@
|
|
27
|
+
@pnpm run lint
|
|
28
28
|
|
|
29
29
|
.PHONY: test/integration
|
|
30
30
|
test/integration:
|
|
31
|
-
@
|
|
31
|
+
@pnpm run test:integration
|
|
32
32
|
|
|
33
33
|
.PHONY: test/unit
|
|
34
34
|
test/unit:
|
|
35
|
-
@
|
|
35
|
+
@pnpm run test
|
|
36
36
|
|
|
37
37
|
.PHONY: test
|
|
38
38
|
test: test/unit
|
|
39
39
|
|
|
40
|
-
.PHONY:
|
|
41
|
-
|
|
42
|
-
@
|
|
40
|
+
.PHONY: pnpm/update
|
|
41
|
+
pnpm/update:
|
|
42
|
+
@pnpm update
|
|
43
43
|
|
|
44
44
|
.PHONY: pre-commit/update
|
|
45
45
|
pre-commit/update:
|
|
46
46
|
@command -v prek >/dev/null 2>&1 && prek auto-update || pre-commit autoupdate
|
|
47
47
|
|
|
48
48
|
.PHONY: update
|
|
49
|
-
update:
|
|
49
|
+
update: pnpm/update pre-commit/update
|
|
50
50
|
|
|
51
51
|
.PHONY: outdated
|
|
52
52
|
outdated:
|
|
53
|
-
@
|
|
53
|
+
@pnpm outdated
|
package/README.md
CHANGED
|
@@ -22,12 +22,6 @@ TypeScript library to send results of SARIF file to Slack webhook URL.
|
|
|
22
22
|
|
|
23
23
|
## How to use
|
|
24
24
|
|
|
25
|
-
```shell
|
|
26
|
-
export SARIF_TO_SLACK_LOG_LEVEL="debug"
|
|
27
|
-
export SARIF_TO_SLACK_LOG_TEMPLATE="[{{logLevelName}}] [{{name}}] {{dateIsoStr}} "
|
|
28
|
-
export SARIF_TO_SLACK_LOG_COLORED="true"
|
|
29
|
-
```
|
|
30
|
-
|
|
31
25
|
```typescript
|
|
32
26
|
import {
|
|
33
27
|
Color,
|
|
@@ -84,7 +78,14 @@ const client: SarifToSlackClient = await SarifToSlackClient.create(
|
|
|
84
78
|
},
|
|
85
79
|
representation: RepresentationType.CompactGroupByToolNamePerSeverity,
|
|
86
80
|
sendIf: SendIf.MediumOrHigher,
|
|
87
|
-
|
|
81
|
+
loggerOptions: {
|
|
82
|
+
logFunctionName: false,
|
|
83
|
+
minLevel: 'debug',
|
|
84
|
+
name: 'my-app',
|
|
85
|
+
stylePrettyLogs: true,
|
|
86
|
+
prettyLogTemplate: '[{{logLevelName}}] [{{name}}] {{dateIsoStr}} ',
|
|
87
|
+
},
|
|
88
|
+
},
|
|
88
89
|
);
|
|
89
90
|
await client.send();
|
|
90
91
|
```
|
package/api-extractor.json
CHANGED
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
* SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>
|
|
111
111
|
* DEFAULT VALUE: "<projectFolder>/tsconfig.json"
|
|
112
112
|
*/
|
|
113
|
-
|
|
113
|
+
"tsconfigFilePath": "<projectFolder>/tsconfig.build.json",
|
|
114
114
|
/**
|
|
115
115
|
* Provides a compiler configuration that will be used instead of reading the tsconfig.json file from disk.
|
|
116
116
|
* The object must conform to the TypeScript tsconfig schema:
|
package/biome.json
CHANGED
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"includes": ["src/**", "tests/**"]
|
|
32
32
|
},
|
|
33
33
|
"javascript": {
|
|
34
|
-
"globals": ["Atomics", "SharedArrayBuffer", "
|
|
34
|
+
"globals": ["Atomics", "SharedArrayBuffer", "vi", "afterEach", "beforeAll", "beforeEach", "expect", "test", "describe"]
|
|
35
35
|
},
|
|
36
36
|
"overrides": [{ "includes": ["**/*.spec.ts", "**/*.spec.tsx"] }]
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SarifToSlackClient.d.ts","sourceRoot":"","sources":["../src/SarifToSlackClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,yBAAyB,EAG/B,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"SarifToSlackClient.d.ts","sourceRoot":"","sources":["../src/SarifToSlackClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,yBAAyB,EAG/B,MAAM,SAAS,CAAC;AAYjB;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,CAAe;IAChC,OAAO,CAAC,WAAW,CAAC,CAAa;IAEjC,OAAO,CAAC,OAAO,CAAyB;IAExC,OAAO,eAEN;IAED,OAAO,CAAC,MAAM,CAAE,oBAAoB;IAOpC;;;;;;;;;OASG;IACH,OAAoB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAW3G;mBAEoB,UAAU;IAoE/B;;;;;OAKG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAcjC;IAED,OAAO,KAAK,iBAAiB,GAyD5B;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { promises as fs } from 'node:fs';
|
|
2
|
-
import
|
|
3
|
-
import { SecurityLevel, SecuritySeverity } from './types';
|
|
2
|
+
import { getLogger } from "@logtape/logtape";
|
|
3
|
+
import { SecurityLevel, SecuritySeverity, } from './types';
|
|
4
4
|
import { logMetadata } from './system';
|
|
5
5
|
import { extractListOfFiles } from './utils/FileUtils';
|
|
6
6
|
import { createRepresentation } from './representations/RepresentationFactory';
|
|
@@ -10,12 +10,12 @@ import { identifyColor } from './model/color/ColorIdentification';
|
|
|
10
10
|
import FindingArray from './model/FindingArray';
|
|
11
11
|
import { createSlackMessage } from './model/SlackMessage';
|
|
12
12
|
import { SendIf, sendIfLogMessage } from './model/SendIf';
|
|
13
|
+
import { setupLogger } from "./setupLogger";
|
|
13
14
|
/**
|
|
14
15
|
* Service to convert SARIF files to Slack messages and send them.
|
|
15
16
|
* @public
|
|
16
17
|
*/
|
|
17
18
|
export class SarifToSlackClient {
|
|
18
|
-
_logger = new Logger('SarifToSlackClient');
|
|
19
19
|
_message;
|
|
20
20
|
_sarifModel;
|
|
21
21
|
_sendIf = SendIf.Always;
|
|
@@ -39,8 +39,10 @@ export class SarifToSlackClient {
|
|
|
39
39
|
* @public
|
|
40
40
|
*/
|
|
41
41
|
static async create(webhookUrl, opts) {
|
|
42
|
+
setupLogger(opts.loggerOptions);
|
|
43
|
+
const logger = getLogger();
|
|
44
|
+
logger.trace(opts);
|
|
42
45
|
const instance = new SarifToSlackClient();
|
|
43
|
-
instance._logger.trace(opts);
|
|
44
46
|
instance._sendIf = opts.sendIf ?? instance._sendIf;
|
|
45
47
|
instance._sarifModel = await SarifToSlackClient.buildModel(opts.sarif);
|
|
46
48
|
instance._message = await SarifToSlackClient.initialize(webhookUrl, opts, instance._sarifModel);
|
|
@@ -63,12 +65,12 @@ export class SarifToSlackClient {
|
|
|
63
65
|
runMetadata = {
|
|
64
66
|
id: runId.value,
|
|
65
67
|
run,
|
|
66
|
-
toolName: findToolComponent(run, result).name
|
|
68
|
+
toolName: findToolComponent(run, result).name,
|
|
67
69
|
};
|
|
68
70
|
model.findings.push(createFinding({ sarifPath, result, runMetadata }));
|
|
69
71
|
}
|
|
70
72
|
runMetadata ??= {
|
|
71
|
-
id: runId.value, run, toolName: findToolComponentDriver(run).name
|
|
73
|
+
id: runId.value, run, toolName: findToolComponentDriver(run).name,
|
|
72
74
|
};
|
|
73
75
|
model.runs.push(runMetadata);
|
|
74
76
|
}
|
|
@@ -116,15 +118,16 @@ export class SarifToSlackClient {
|
|
|
116
118
|
if (this._sarifModel == null) {
|
|
117
119
|
throw new Error('Could not parse SARIF file(s).');
|
|
118
120
|
}
|
|
121
|
+
const logger = getLogger();
|
|
119
122
|
if (this.shouldSendMessage) {
|
|
120
123
|
if (this._message == null) {
|
|
121
124
|
throw new Error('Slack message was not prepared.');
|
|
122
125
|
}
|
|
123
126
|
const text = await this._message.send();
|
|
124
|
-
|
|
127
|
+
logger.info(`Message sent. Status: ${text}`);
|
|
125
128
|
}
|
|
126
129
|
else {
|
|
127
|
-
|
|
130
|
+
logger.info(sendIfLogMessage(this._sendIf));
|
|
128
131
|
}
|
|
129
132
|
}
|
|
130
133
|
get shouldSendMessage() {
|
|
@@ -185,4 +188,4 @@ export class SarifToSlackClient {
|
|
|
185
188
|
}
|
|
186
189
|
}
|
|
187
190
|
}
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2FyaWZUb1NsYWNrQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NhcmlmVG9TbGFja0NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxJQUFJLEVBQUUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFlLE1BQU0sa0JBQWtCLENBQUM7QUFFMUQsT0FBTyxFQUtMLGFBQWEsRUFDYixnQkFBZ0IsR0FDakIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sWUFBWSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3JCLFFBQVEsQ0FBZ0I7SUFDeEIsV0FBVyxDQUFjO0lBRXpCLE9BQU8sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBRXhDO1FBQ0UsV0FBVyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxDQUFDLG9CQUFvQjtRQUNsQyxJQUFJ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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globalState.d.ts","sourceRoot":"","sources":["../src/globalState.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,WAAW,EAAE,WAAgB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const globalState = {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsU3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ2xvYmFsU3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFnQixFQUFFLENBQUMifQ==
|