@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.
Files changed (163) hide show
  1. package/.github/workflows/release.yml +18 -9
  2. package/.github/workflows/security.yml +1 -0
  3. package/.github/workflows/send-sarif-to-slack.yml +49 -17
  4. package/.github/workflows/unit-tests.yml +3 -3
  5. package/.pre-commit-config.yaml +5 -5
  6. package/.tool-versions +1 -1
  7. package/Makefile +13 -13
  8. package/README.md +8 -7
  9. package/api-extractor.json +1 -1
  10. package/biome.json +1 -1
  11. package/dist/SarifToSlackClient.d.ts +0 -1
  12. package/dist/SarifToSlackClient.d.ts.map +1 -1
  13. package/dist/SarifToSlackClient.js +12 -9
  14. package/dist/globalState.d.ts +2 -0
  15. package/dist/globalState.d.ts.map +1 -0
  16. package/dist/globalState.js +2 -0
  17. package/dist/index.cjs +86 -100
  18. package/dist/index.d.ts +36 -2
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +9 -2
  21. package/dist/model/Finding.js +7 -6
  22. package/dist/model/FindingArray.js +1 -1
  23. package/dist/model/SendIf.js +1 -1
  24. package/dist/model/SlackMessage.d.ts.map +1 -1
  25. package/dist/model/SlackMessage.js +6 -6
  26. package/dist/model/color/Color.d.ts.map +1 -1
  27. package/dist/model/color/Color.js +1 -1
  28. package/dist/model/color/ColorIdentification.js +7 -7
  29. package/dist/model/color/ColorOptions.d.ts.map +1 -1
  30. package/dist/processors/CodeQLProcessor.js +1 -1
  31. package/dist/processors/CommonProcessor.js +1 -1
  32. package/dist/processors/ProcessorFactory.js +1 -1
  33. package/dist/processors/SnykProcessor.js +2 -1
  34. package/dist/representations/CompactGroupByRepresentation.js +1 -1
  35. package/dist/representations/CompactGroupByRunPerLevelRepresentation.js +1 -1
  36. package/dist/representations/CompactGroupByRunPerSeverityRepresentation.js +1 -1
  37. package/dist/representations/CompactGroupByRunRepresentation.js +1 -1
  38. package/dist/representations/CompactGroupBySarifPerLevelRepresentation.js +1 -1
  39. package/dist/representations/CompactGroupBySarifPerSeverityRepresentation.js +1 -1
  40. package/dist/representations/CompactGroupBySarifRepresentation.js +1 -1
  41. package/dist/representations/CompactGroupByToolNamePerLevelRepresentation.js +1 -1
  42. package/dist/representations/CompactGroupByToolNamePerSeverityRepresentation.js +1 -1
  43. package/dist/representations/CompactGroupByToolNameRepresentation.js +1 -1
  44. package/dist/representations/CompactTotalPerLevelRepresentation.js +1 -1
  45. package/dist/representations/CompactTotalPerSeverityRepresentation.js +1 -1
  46. package/dist/representations/CompactTotalRepresentation.js +1 -1
  47. package/dist/representations/Representation.js +1 -1
  48. package/dist/representations/RepresentationFactory.js +1 -1
  49. package/dist/representations/TableGroupByRunPerLevelRepresentation.d.ts.map +1 -1
  50. package/dist/representations/TableGroupByRunPerLevelRepresentation.js +1 -1
  51. package/dist/representations/TableGroupByRunPerSeverityRepresentation.d.ts.map +1 -1
  52. package/dist/representations/TableGroupByRunPerSeverityRepresentation.js +1 -1
  53. package/dist/representations/TableGroupByRunRepresentation.d.ts.map +1 -1
  54. package/dist/representations/TableGroupByRunRepresentation.js +1 -1
  55. package/dist/representations/TableGroupBySarifPerLevelRepresentation.d.ts.map +1 -1
  56. package/dist/representations/TableGroupBySarifPerLevelRepresentation.js +1 -1
  57. package/dist/representations/TableGroupBySarifPerSeverityRepresentation.d.ts.map +1 -1
  58. package/dist/representations/TableGroupBySarifPerSeverityRepresentation.js +1 -1
  59. package/dist/representations/TableGroupBySarifRepresentation.d.ts.map +1 -1
  60. package/dist/representations/TableGroupBySarifRepresentation.js +1 -1
  61. package/dist/representations/TableGroupByToolNamePerLevelRepresentation.d.ts.map +1 -1
  62. package/dist/representations/TableGroupByToolNamePerLevelRepresentation.js +1 -1
  63. package/dist/representations/TableGroupByToolNamePerSeverityRepresentation.d.ts.map +1 -1
  64. package/dist/representations/TableGroupByToolNamePerSeverityRepresentation.js +1 -1
  65. package/dist/representations/TableGroupByToolNameRepresentation.d.ts.map +1 -1
  66. package/dist/representations/TableGroupByToolNameRepresentation.js +1 -1
  67. package/dist/representations/TableGroupRepresentation.d.ts +0 -1
  68. package/dist/representations/TableGroupRepresentation.d.ts.map +1 -1
  69. package/dist/representations/TableGroupRepresentation.js +4 -4
  70. package/dist/representations/table/Cell.d.ts.map +1 -1
  71. package/dist/representations/table/Cell.js +1 -1
  72. package/dist/representations/table/Column.d.ts +0 -1
  73. package/dist/representations/table/Column.d.ts.map +1 -1
  74. package/dist/representations/table/Column.js +4 -4
  75. package/dist/representations/table/Row.d.ts +0 -1
  76. package/dist/representations/table/Row.d.ts.map +1 -1
  77. package/dist/representations/table/Row.js +4 -4
  78. package/dist/representations/table/Table.d.ts.map +1 -1
  79. package/dist/representations/table/Table.js +1 -1
  80. package/dist/setupLogger.d.ts +16 -0
  81. package/dist/setupLogger.d.ts.map +1 -0
  82. package/dist/setupLogger.js +43 -0
  83. package/dist/system.js +6 -6
  84. package/dist/tsdoc-metadata.json +1 -1
  85. package/dist/types.d.ts +25 -1
  86. package/dist/types.d.ts.map +1 -1
  87. package/dist/types.js +11 -1
  88. package/dist/utils/Comparators.js +1 -1
  89. package/dist/utils/ExtendedArray.js +1 -1
  90. package/dist/utils/FileUtils.js +3 -3
  91. package/dist/utils/SarifUtils.js +1 -1
  92. package/dist/utils/StringUtils.js +1 -1
  93. package/etc/sarif-to-slack.api.md +17 -1
  94. package/package.json +24 -22
  95. package/pnpm-workspace.yaml +8 -0
  96. package/scripts/build.sh +1 -1
  97. package/src/SarifToSlackClient.ts +73 -68
  98. package/src/globalState.ts +11 -0
  99. package/src/index.ts +23 -12
  100. package/src/model/Finding.ts +36 -35
  101. package/src/model/FindingArray.ts +5 -5
  102. package/src/model/SendIf.ts +25 -25
  103. package/src/model/SlackMessage.ts +52 -49
  104. package/src/model/color/Color.ts +7 -7
  105. package/src/model/color/ColorIdentification.ts +77 -77
  106. package/src/model/color/ColorOptions.ts +1 -1
  107. package/src/processors/CodeQLProcessor.ts +3 -3
  108. package/src/processors/CommonProcessor.ts +24 -24
  109. package/src/processors/ProcessorFactory.ts +9 -9
  110. package/src/processors/SnykProcessor.ts +3 -2
  111. package/src/representations/CompactGroupByRepresentation.ts +20 -20
  112. package/src/representations/CompactGroupByRunPerLevelRepresentation.ts +2 -2
  113. package/src/representations/CompactGroupByRunPerSeverityRepresentation.ts +2 -2
  114. package/src/representations/CompactGroupByRunRepresentation.ts +10 -10
  115. package/src/representations/CompactGroupBySarifPerLevelRepresentation.ts +2 -2
  116. package/src/representations/CompactGroupBySarifPerSeverityRepresentation.ts +2 -2
  117. package/src/representations/CompactGroupBySarifRepresentation.ts +11 -11
  118. package/src/representations/CompactGroupByToolNamePerLevelRepresentation.ts +2 -2
  119. package/src/representations/CompactGroupByToolNamePerSeverityRepresentation.ts +2 -2
  120. package/src/representations/CompactGroupByToolNameRepresentation.ts +10 -10
  121. package/src/representations/CompactTotalPerLevelRepresentation.ts +2 -2
  122. package/src/representations/CompactTotalPerSeverityRepresentation.ts +2 -2
  123. package/src/representations/CompactTotalRepresentation.ts +5 -5
  124. package/src/representations/Representation.ts +8 -8
  125. package/src/representations/RepresentationFactory.ts +32 -32
  126. package/src/representations/TableGroupByRunPerLevelRepresentation.ts +3 -3
  127. package/src/representations/TableGroupByRunPerSeverityRepresentation.ts +3 -3
  128. package/src/representations/TableGroupByRunRepresentation.ts +5 -5
  129. package/src/representations/TableGroupBySarifPerLevelRepresentation.ts +3 -3
  130. package/src/representations/TableGroupBySarifPerSeverityRepresentation.ts +3 -3
  131. package/src/representations/TableGroupBySarifRepresentation.ts +9 -9
  132. package/src/representations/TableGroupByToolNamePerLevelRepresentation.ts +3 -3
  133. package/src/representations/TableGroupByToolNamePerSeverityRepresentation.ts +3 -3
  134. package/src/representations/TableGroupByToolNameRepresentation.ts +4 -4
  135. package/src/representations/TableGroupRepresentation.ts +32 -32
  136. package/src/representations/table/Cell.ts +8 -8
  137. package/src/representations/table/Column.ts +13 -13
  138. package/src/representations/table/Row.ts +17 -17
  139. package/src/representations/table/Table.ts +21 -21
  140. package/src/setupLogger.ts +62 -0
  141. package/src/system.ts +6 -6
  142. package/src/types.ts +39 -13
  143. package/src/utils/Comparators.ts +6 -6
  144. package/src/utils/ExtendedArray.ts +1 -1
  145. package/src/utils/FileUtils.ts +4 -4
  146. package/src/utils/SarifUtils.ts +6 -6
  147. package/src/utils/StringUtils.ts +3 -3
  148. package/tests/integration/SendSarifToSlack.spec.ts +73 -67
  149. package/tests/representations/CompactGroupByRunPerLevelRepresentation.spec.ts +121 -0
  150. package/tests/representations/CompactGroupByRunPerSeverityRepresentation.spec.ts +122 -0
  151. package/tests/representations/CompactGroupBySarifPerLevelRepresentation.spec.ts +132 -0
  152. package/tests/representations/CompactGroupBySarifPerSeverityRepresentation.spec.ts +133 -0
  153. package/tests/tsconfig.json +8 -0
  154. package/tests/vitest.d.ts +1 -0
  155. package/tsconfig.build.json +9 -0
  156. package/tsconfig.json +5 -5
  157. package/tsconfig.test.json +8 -0
  158. package/vitest.config.ts +22 -0
  159. package/dist/Logger.d.ts +0 -2
  160. package/dist/Logger.d.ts.map +0 -1
  161. package/dist/Logger.js +0 -66
  162. package/jest.config.json +0 -33
  163. 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@v6
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: "npm"
47
- cache-dependency-path: "package-lock.json"
54
+ cache: "pnpm"
55
+ cache-dependency-path: "pnpm-lock.yaml"
48
56
 
49
57
  - name: Install dependencies
50
- run: npm ci
58
+ run: pnpm install --frozen-lockfile
51
59
 
52
60
  - name: Install jq
53
- uses: dcarbone/install-jq-action@v3
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="${{ steps.github-app.outputs.app-slug }}[bot]"
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
- npm run version:${BUMP_STRATEGY}
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@v6
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: npm ci
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: "[{{logLevelName}}] [{{name}}] {{dateIsoStr}} "
293
- SARIF_TO_SLACK_LOG_COLORED: "true"
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
- - jest.config.json
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
- jest:
21
- name: Jest
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
@@ -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/.*|etc/.*|node_modules/.*|temp/.*|test-data/.*)$
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: npm audit
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.3.5
63
+ rev: v2.4.0
64
64
  hooks:
65
65
  - id: osv-scanner
66
66
  args:
67
- - --lockfile=package-lock.json
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.48.0
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 25.9.0
1
+ nodejs 26.4.0
package/Makefile CHANGED
@@ -2,52 +2,52 @@
2
2
 
3
3
  .PHONY: audit
4
4
  audit:
5
- @npm audit --audit-level moderate --package-lock-only --include dev
5
+ @pnpm audit
6
6
 
7
7
  .PHONY: build
8
8
  build:
9
- @npm run build
9
+ @pnpm run build
10
10
 
11
11
  .PHONY: clean
12
12
  clean:
13
- @npm run clean
13
+ @pnpm run clean
14
14
 
15
15
  .PHONY: install
16
16
  install:
17
- @npm install
17
+ @pnpm install
18
18
 
19
19
  .PHONY: reinstall
20
20
  reinstall:
21
21
  @make clean
22
- @npm run clean:unsafe
22
+ @pnpm run clean:unsafe
23
23
  @make install
24
24
 
25
25
  .PHONY: lint
26
26
  lint:
27
- @npm run lint
27
+ @pnpm run lint
28
28
 
29
29
  .PHONY: test/integration
30
30
  test/integration:
31
- @npm run test:integration
31
+ @pnpm run test:integration
32
32
 
33
33
  .PHONY: test/unit
34
34
  test/unit:
35
- @npm run test
35
+ @pnpm run test
36
36
 
37
37
  .PHONY: test
38
38
  test: test/unit
39
39
 
40
- .PHONY: npm/update
41
- npm/update:
42
- @npm update
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: npm/update pre-commit/update
49
+ update: pnpm/update pre-commit/update
50
50
 
51
51
  .PHONY: outdated
52
52
  outdated:
53
- @npm outdated
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
  ```
@@ -110,7 +110,7 @@
110
110
  * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>
111
111
  * DEFAULT VALUE: "<projectFolder>/tsconfig.json"
112
112
  */
113
- // "tsconfigFilePath": "<projectFolder>/tsconfig.json",
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", "jest", "afterEach", "beforeAll", "beforeEach", "expect", "test", "describe"]
34
+ "globals": ["Atomics", "SharedArrayBuffer", "vi", "afterEach", "beforeAll", "beforeEach", "expect", "test", "describe"]
35
35
  },
36
36
  "overrides": [{ "includes": ["**/*.spec.ts", "**/*.spec.tsx"] }]
37
37
  }
@@ -4,7 +4,6 @@ import { type SarifToSlackClientOptions } from './types';
4
4
  * @public
5
5
  */
6
6
  export declare class SarifToSlackClient {
7
- private readonly _logger;
8
7
  private _message?;
9
8
  private _sarifModel?;
10
9
  private _sendIf;
@@ -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,CAAA;AAWhB;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,OAAO,CAAC,QAAQ,CAAC,CAAe;IAChC,OAAO,CAAC,WAAW,CAAC,CAAa;IAEjC,OAAO,CAAC,OAAO,CAAyB;IAExC,OAAO;IAIP,OAAO,CAAC,MAAM,CAAE,oBAAoB;IAOpC;;;;;;;;;OASG;WACiB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC;mBASvF,UAAU;IAoE/B;;;;;OAKG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAelC,OAAO,KAAK,iBAAiB,GAyD5B;CACF"}
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 Logger from './Logger';
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
- this._logger.info('Message sent. Status:', text);
127
+ logger.info(`Message sent. Status: ${text}`);
125
128
  }
126
129
  else {
127
- this._logger.info(sendIfLogMessage(this._sendIf));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2FyaWZUb1NsYWNrQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NhcmlmVG9TbGFja0NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxJQUFJLEVBQUUsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUV4QyxPQUFPLE1BQU0sTUFBTSxVQUFVLENBQUE7QUFDN0IsT0FBTyxFQUtMLGFBQWEsRUFDYixnQkFBZ0IsRUFDakIsTUFBTSxTQUFTLENBQUE7QUFDaEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ2pFLE9BQU8sWUFBWSxNQUFNLHNCQUFzQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFekQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQUNaLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsQ0FBZ0I7SUFDeEIsV0FBVyxDQUFjO0lBRXpCLE9BQU8sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBRXhDO1FBQ0UsV0FBVyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxDQUFDLG9CQUFvQjtRQUNsQyxJQUFJLEtBQUss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
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2FyaWZUb1NsYWNrQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NhcmlmVG9TbGFja0NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxJQUFJLEVBQUUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFlLE1BQU0sa0JBQWtCLENBQUM7QUFFMUQsT0FBTyxFQUtMLGFBQWEsRUFDYixnQkFBZ0IsR0FDakIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sWUFBWSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3JCLFFBQVEsQ0FBZ0I7SUFDeEIsV0FBVyxDQUFjO0lBRXpCLE9BQU8sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBRXhDO1FBQ0UsV0FBVyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxDQUFDLG9CQUFvQjtRQUNsQyxJQUFJ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
@@ -0,0 +1,2 @@
1
+ export declare const globalState: GlobalState;
2
+ //# sourceMappingURL=globalState.d.ts.map
@@ -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==