@contrast/contrast 1.0.19 → 1.0.21

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 (66) hide show
  1. package/dist/audit/report/commonReportingFunctions.js +3 -4
  2. package/dist/audit/report/models/reportListModel.js +2 -1
  3. package/dist/audit/report/reportingFeature.js +1 -1
  4. package/dist/audit/report/utils/reportUtils.js +30 -11
  5. package/dist/cliConstants.js +13 -6
  6. package/dist/commands/audit/auditConfig.js +1 -2
  7. package/dist/commands/audit/help.js +2 -1
  8. package/dist/commands/audit/processAudit.js +1 -1
  9. package/dist/commands/fingerprint/fingerprintConfig.js +12 -0
  10. package/dist/commands/fingerprint/processFingerprint.js +14 -0
  11. package/dist/commands/learn/learn.js +9 -0
  12. package/dist/commands/learn/processLearn.js +10 -0
  13. package/dist/common/commonHelp.js +8 -1
  14. package/dist/constants/constants.js +1 -1
  15. package/dist/constants/locales.js +14 -3
  16. package/dist/index.js +8 -0
  17. package/dist/lambda/help.js +2 -1
  18. package/dist/scaAnalysis/common/auditReport.js +16 -60
  19. package/dist/scaAnalysis/common/commonReportingFunctionsSca.js +154 -0
  20. package/dist/scaAnalysis/common/models/ScaReportModel.js +45 -0
  21. package/dist/scaAnalysis/common/scaServicesUpload.js +4 -3
  22. package/dist/scaAnalysis/common/utils/reportUtilsSca.js +76 -0
  23. package/dist/scaAnalysis/java/analysis.js +1 -28
  24. package/dist/scaAnalysis/java/index.js +1 -13
  25. package/dist/scaAnalysis/scaAnalysis.js +155 -0
  26. package/dist/scan/autoDetection.js +2 -2
  27. package/dist/scan/fileUtils.js +2 -2
  28. package/dist/scan/formatScanOutput.js +19 -13
  29. package/dist/scan/help.js +2 -1
  30. package/dist/utils/paramsUtil/configStoreParams.js +1 -12
  31. package/dist/utils/paramsUtil/paramHandler.js +1 -7
  32. package/package.json +5 -1
  33. package/src/audit/report/commonReportingFunctions.js +7 -5
  34. package/src/audit/report/models/reportListModel.ts +12 -2
  35. package/src/audit/report/reportingFeature.ts +1 -1
  36. package/src/audit/report/utils/reportUtils.ts +4 -4
  37. package/src/cliConstants.js +15 -6
  38. package/src/commands/audit/auditConfig.js +1 -2
  39. package/src/commands/audit/help.js +2 -1
  40. package/src/commands/audit/processAudit.js +1 -1
  41. package/src/commands/fingerprint/fingerprintConfig.js +19 -0
  42. package/src/commands/fingerprint/processFingerprint.js +21 -0
  43. package/src/commands/learn/learn.js +10 -0
  44. package/src/commands/learn/processLearn.js +13 -0
  45. package/src/common/commonHelp.js +11 -1
  46. package/src/constants/constants.js +1 -1
  47. package/src/constants/locales.js +22 -3
  48. package/src/index.ts +11 -0
  49. package/src/lambda/help.ts +2 -1
  50. package/src/scaAnalysis/common/auditReport.js +25 -80
  51. package/src/scaAnalysis/common/commonReportingFunctionsSca.js +276 -0
  52. package/src/scaAnalysis/common/models/ScaReportModel.ts +81 -0
  53. package/src/scaAnalysis/common/scaServicesUpload.js +5 -3
  54. package/src/scaAnalysis/common/utils/reportUtilsSca.ts +123 -0
  55. package/src/scaAnalysis/java/analysis.js +1 -28
  56. package/src/scaAnalysis/java/index.js +1 -18
  57. package/src/scaAnalysis/scaAnalysis.js +206 -0
  58. package/src/scan/autoDetection.js +2 -2
  59. package/src/scan/fileUtils.js +2 -2
  60. package/src/scan/formatScanOutput.ts +28 -17
  61. package/src/scan/help.js +2 -1
  62. package/src/utils/getConfig.ts +0 -1
  63. package/src/utils/paramsUtil/configStoreParams.js +1 -14
  64. package/src/utils/paramsUtil/paramHandler.js +1 -9
  65. package/dist/commands/scan/sca/scaAnalysis.js +0 -155
  66. package/src/commands/scan/sca/scaAnalysis.js +0 -206
@@ -1,206 +0,0 @@
1
- const {
2
- supportedLanguages: { JAVA, GO, PYTHON, RUBY, JAVASCRIPT, NODE, PHP, DOTNET }
3
- } = require('../../../constants/constants')
4
- const {
5
- pollForSnapshotCompletion
6
- } = require('../../../audit/languageAnalysisEngine/sendSnapshot')
7
- const {
8
- returnOra,
9
- startSpinner,
10
- succeedSpinner
11
- } = require('../../../utils/oraWrapper')
12
- const {
13
- vulnerabilityReportV2
14
- } = require('../../../audit/report/reportingFeature')
15
- const autoDetection = require('../../../scan/autoDetection')
16
- const treeUpload = require('../../../scaAnalysis/common/treeUpload')
17
- const auditController = require('../../audit/auditController')
18
- const rootFile = require('../../../audit/languageAnalysisEngine/getProjectRootFilenames')
19
- const path = require('path')
20
- const i18n = require('i18n')
21
- const auditSave = require('../../../audit/save')
22
- const { auditUsageGuide } = require('../../audit/help')
23
- const repoMode = require('../../../scaAnalysis/repoMode/index')
24
- const { dotNetAnalysis } = require('../../../scaAnalysis/dotnet')
25
- const { goAnalysis } = require('../../../scaAnalysis/go/goAnalysis')
26
- const { phpAnalysis } = require('../../../scaAnalysis/php/index')
27
- const { rubyAnalysis } = require('../../../scaAnalysis/ruby')
28
- const { pythonAnalysis } = require('../../../scaAnalysis/python')
29
- const javaAnalysis = require('../../../scaAnalysis/java')
30
- const jsAnalysis = require('../../../scaAnalysis/javascript')
31
- const auditReport = require('../../../scaAnalysis/common/auditReport')
32
- const scaUpload = require('../../../scaAnalysis/common/scaServicesUpload')
33
- const settingsHelper = require('../../../utils/settingsHelper')
34
- const chalk = require('chalk')
35
- const saveResults = require('../../../scan/saveResults')
36
-
37
- const processSca = async config => {
38
- //checks to see whether to use old TS / new SCA path
39
- config = await settingsHelper.getSettings(config)
40
-
41
- const startTime = performance.now()
42
- let filesFound
43
-
44
- if (config.help) {
45
- console.log(auditUsageGuide)
46
- process.exit(0)
47
- }
48
-
49
- const projectStats = await rootFile.getProjectStats(config.file)
50
- let pathWithFile = projectStats.isFile()
51
-
52
- config.fileName = config.file
53
- config.file = pathWithFile
54
- ? rootFile.getDirectoryFromPathGiven(config.file).concat('/')
55
- : config.file
56
-
57
- if (config.fingerprint && config.experimental) {
58
- let fingerprint = await autoDetection.autoDetectFingerprintInfo(config.file)
59
- let idArray = fingerprint.map(x => x.id)
60
- await saveResults.writeResultsToFile(fingerprint, 'fingerPrintInfo.json')
61
- console.log(idArray)
62
- } else {
63
- filesFound = await autoDetection.autoDetectAuditFilesAndLanguages(
64
- config.file
65
- )
66
-
67
- autoDetection.dealWithMultiJava(filesFound)
68
-
69
- if (filesFound.length > 1 && pathWithFile) {
70
- filesFound = filesFound.filter(i =>
71
- Object.values(i)[0].includes(path.basename(config.fileName))
72
- )
73
- }
74
-
75
- // files found looks like [ { javascript: [ Array ] } ]
76
- //check we have the language and call the right analyser
77
- let messageToSend = undefined
78
- if (filesFound.length === 1) {
79
- switch (Object.keys(filesFound[0])[0]) {
80
- case JAVA:
81
- config.language = JAVA
82
-
83
- if (config.mode === 'repo') {
84
- try {
85
- return repoMode.buildRepo(config, filesFound[0])
86
- } catch (e) {
87
- throw new Error(
88
- 'Unable to build in repository mode. Check your project file'
89
- )
90
- }
91
- } else {
92
- messageToSend = await javaAnalysis.javaAnalysis(
93
- config,
94
- filesFound[0]
95
- )
96
- }
97
- break
98
- case JAVASCRIPT:
99
- messageToSend = await jsAnalysis.jsAnalysis(config, filesFound[0])
100
- config.language = NODE
101
- break
102
- case PYTHON:
103
- messageToSend = pythonAnalysis(config, filesFound[0])
104
- config.language = PYTHON
105
- break
106
- case RUBY:
107
- messageToSend = rubyAnalysis(config, filesFound[0])
108
- config.language = RUBY
109
- break
110
- case PHP:
111
- messageToSend = phpAnalysis(config, filesFound[0])
112
- config.language = PHP
113
- break
114
- case GO:
115
- messageToSend = goAnalysis(config, filesFound[0])
116
- config.language = GO
117
- break
118
- case DOTNET:
119
- messageToSend = dotNetAnalysis(config, filesFound[0])
120
- config.language = DOTNET
121
- break
122
- default:
123
- //something is wrong
124
- console.log('No supported language detected in project path')
125
- return
126
- }
127
-
128
- if (!config.applicationId) {
129
- config.applicationId = await auditController.dealWithNoAppId(config)
130
- }
131
-
132
- if (config.experimental) {
133
- console.log('') //empty log for space before spinner
134
- const reportSpinner = returnOra(i18n.__('auditSCAAnalysisBegins'))
135
- startSpinner(reportSpinner)
136
- const [reports, reportId] = await scaUpload.scaTreeUpload(
137
- messageToSend,
138
- config
139
- )
140
-
141
- auditReport.processAuditReport(config, reports[0])
142
- succeedSpinner(reportSpinner, i18n.__('auditSCAAnalysisComplete'))
143
-
144
- if (config.save !== undefined) {
145
- await auditSave.auditSave(config, reportId)
146
- } else {
147
- console.log('Use contrast audit --save to generate an SBOM')
148
- }
149
-
150
- const endTime = performance.now() - startTime
151
- const scanDurationMs = endTime - startTime
152
- console.log(
153
- `----- completed in ${(scanDurationMs / 1000).toFixed(2)}s -----`
154
- )
155
- } else {
156
- console.log('') //empty log for space before spinner
157
- //send message to TS
158
- const reportSpinner = returnOra(i18n.__('auditSCAAnalysisBegins'))
159
- startSpinner(reportSpinner)
160
- const snapshotResponse = await treeUpload.commonSendSnapShot(
161
- messageToSend,
162
- config
163
- )
164
-
165
- // poll for completion
166
- await pollForSnapshotCompletion(
167
- config,
168
- snapshotResponse.id,
169
- reportSpinner
170
- )
171
- succeedSpinner(reportSpinner, i18n.__('auditSCAAnalysisComplete'))
172
-
173
- await vulnerabilityReportV2(config, snapshotResponse.id)
174
- if (config.save !== undefined) {
175
- await auditSave.auditSave(config)
176
- } else {
177
- console.log('\nUse contrast audit --save to generate an SBOM')
178
- }
179
- const endTime = performance.now() - startTime
180
- const scanDurationMs = endTime - startTime
181
-
182
- console.log(
183
- `----- completed in ${(scanDurationMs / 1000).toFixed(2)}s -----`
184
- )
185
- }
186
- } else {
187
- if (filesFound.length === 0) {
188
- console.log(i18n.__('languageAnalysisNoLanguage'))
189
- console.log(i18n.__('languageAnalysisNoLanguageHelpLine'))
190
- throw new Error()
191
- } else {
192
- console.log(chalk.bold(`\nMultiple language files detected \n`))
193
- filesFound.forEach(file => {
194
- console.log(`${Object.keys(file)[0]} : `, Object.values(file)[0])
195
- })
196
- throw new Error(
197
- `Please use --file to audit one language only. \nExample: contrast audit --file package-lock.json`
198
- )
199
- }
200
- }
201
- }
202
- }
203
-
204
- module.exports = {
205
- processSca
206
- }