@contrast/contrast 1.0.20 → 1.0.22

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