@contrast/contrast 2.0.2-beta.2 → 2.0.2-beta.4

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 (358) hide show
  1. package/README.md +51 -1
  2. package/dist/audit/catalogueApplication/catalogueApplication.js +6 -10
  3. package/dist/audit/catalogueApplication/catalogueApplication.js.map +1 -0
  4. package/dist/audit/languageAnalysisEngine/commonApi.js +3 -6
  5. package/dist/audit/languageAnalysisEngine/commonApi.js.map +1 -0
  6. package/dist/audit/languageAnalysisEngine/filterProjectPath.js +1 -0
  7. package/dist/audit/languageAnalysisEngine/filterProjectPath.js.map +1 -0
  8. package/dist/audit/languageAnalysisEngine/getProjectRootFilenames.js +9 -12
  9. package/dist/audit/languageAnalysisEngine/getProjectRootFilenames.js.map +1 -0
  10. package/dist/audit/languageAnalysisEngine/sendSnapshot.js +15 -19
  11. package/dist/audit/languageAnalysisEngine/sendSnapshot.js.map +1 -0
  12. package/dist/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js +9 -9
  13. package/dist/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js.map +1 -0
  14. package/dist/audit/report/commonReportingFunctions.js +33 -48
  15. package/dist/audit/report/commonReportingFunctions.js.map +1 -0
  16. package/dist/audit/report/models/reportGuidanceModel.js +2 -5
  17. package/dist/audit/report/models/reportGuidanceModel.js.map +1 -0
  18. package/dist/audit/report/models/reportLibraryModel.js +3 -7
  19. package/dist/audit/report/models/reportLibraryModel.js.map +1 -0
  20. package/dist/audit/report/models/reportListModel.js +4 -9
  21. package/dist/audit/report/models/reportListModel.js.map +1 -0
  22. package/dist/audit/report/models/reportOutputModel.js +4 -9
  23. package/dist/audit/report/models/reportOutputModel.js.map +1 -0
  24. package/dist/audit/report/models/reportSeverityModel.js +2 -5
  25. package/dist/audit/report/models/reportSeverityModel.js.map +1 -0
  26. package/dist/audit/report/models/severityCountModel.js +3 -5
  27. package/dist/audit/report/models/severityCountModel.js.map +1 -0
  28. package/dist/audit/report/reportingFeature.js +27 -55
  29. package/dist/audit/report/reportingFeature.js.map +1 -0
  30. package/dist/audit/report/utils/reportUtils.js +28 -59
  31. package/dist/audit/report/utils/reportUtils.js.map +1 -0
  32. package/dist/audit/save.js +14 -16
  33. package/dist/audit/save.js.map +1 -0
  34. package/dist/cliConstants.js +17 -18
  35. package/dist/cliConstants.js.map +1 -0
  36. package/dist/commands/audit/auditConfig.js +7 -10
  37. package/dist/commands/audit/auditConfig.js.map +1 -0
  38. package/dist/commands/audit/auditController.js +9 -13
  39. package/dist/commands/audit/auditController.js.map +1 -0
  40. package/dist/commands/audit/help.js +23 -25
  41. package/dist/commands/audit/help.js.map +1 -0
  42. package/dist/commands/audit/processAudit.js +9 -12
  43. package/dist/commands/audit/processAudit.js.map +1 -0
  44. package/dist/commands/audit/saveFile.js +3 -6
  45. package/dist/commands/audit/saveFile.js.map +1 -0
  46. package/dist/commands/auth/auth.js +25 -24
  47. package/dist/commands/auth/auth.js.map +1 -0
  48. package/dist/commands/config/config.js +12 -13
  49. package/dist/commands/config/config.js.map +1 -0
  50. package/dist/commands/github/fingerprintConfig.js +8 -11
  51. package/dist/commands/github/fingerprintConfig.js.map +1 -0
  52. package/dist/commands/github/processFingerprint.js +12 -15
  53. package/dist/commands/github/processFingerprint.js.map +1 -0
  54. package/dist/commands/github/projectGroup.js +25 -32
  55. package/dist/commands/github/projectGroup.js.map +1 -0
  56. package/dist/commands/github/repoServices.js +11 -21
  57. package/dist/commands/github/repoServices.js.map +1 -0
  58. package/dist/commands/learn/learn.js +3 -6
  59. package/dist/commands/learn/learn.js.map +1 -0
  60. package/dist/commands/learn/processLearn.js +3 -6
  61. package/dist/commands/learn/processLearn.js.map +1 -0
  62. package/dist/commands/scan/processScan.js +11 -14
  63. package/dist/commands/scan/processScan.js.map +1 -0
  64. package/dist/common/HTTPClient.js +123 -94
  65. package/dist/common/HTTPClient.js.map +1 -0
  66. package/dist/common/autoDetection.js +26 -33
  67. package/dist/common/autoDetection.js.map +1 -0
  68. package/dist/common/baseRequest.js +14 -18
  69. package/dist/common/baseRequest.js.map +1 -0
  70. package/dist/common/commonHelp.js +13 -13
  71. package/dist/common/commonHelp.js.map +1 -0
  72. package/dist/common/errorHandling.js +30 -39
  73. package/dist/common/errorHandling.js.map +1 -0
  74. package/dist/common/fail.js +6 -12
  75. package/dist/common/fail.js.map +1 -0
  76. package/dist/common/versionChecker.js +16 -19
  77. package/dist/common/versionChecker.js.map +1 -0
  78. package/dist/constants/constants.js +44 -65
  79. package/dist/constants/constants.js.map +1 -0
  80. package/dist/constants/lambda.js +8 -5
  81. package/dist/constants/lambda.js.map +1 -0
  82. package/dist/constants/locales.js +6 -9
  83. package/dist/constants/locales.js.map +1 -0
  84. package/dist/index.js +36 -39
  85. package/dist/index.js.map +1 -0
  86. package/dist/lambda/analytics.js +6 -9
  87. package/dist/lambda/analytics.js.map +1 -0
  88. package/dist/lambda/arn.js +6 -9
  89. package/dist/lambda/arn.js.map +1 -0
  90. package/dist/lambda/aws.js +29 -34
  91. package/dist/lambda/aws.js.map +1 -0
  92. package/dist/lambda/cliError.js +13 -41
  93. package/dist/lambda/cliError.js.map +1 -0
  94. package/dist/lambda/constants.js +3 -4
  95. package/dist/lambda/constants.js.map +1 -0
  96. package/dist/lambda/help.js +39 -44
  97. package/dist/lambda/help.js.map +1 -0
  98. package/dist/lambda/lambda.js +61 -65
  99. package/dist/lambda/lambda.js.map +1 -0
  100. package/dist/lambda/lambdaUtils.js +38 -32
  101. package/dist/lambda/lambdaUtils.js.map +1 -0
  102. package/dist/lambda/logUtils.js +21 -17
  103. package/dist/lambda/logUtils.js.map +1 -0
  104. package/dist/lambda/scanDetailCompletion.js +19 -25
  105. package/dist/lambda/scanDetailCompletion.js.map +1 -0
  106. package/dist/lambda/scanRequest.js +34 -41
  107. package/dist/lambda/scanRequest.js.map +1 -0
  108. package/dist/lambda/scanResults.js +8 -10
  109. package/dist/lambda/scanResults.js.map +1 -0
  110. package/dist/lambda/types.js +5 -7
  111. package/dist/lambda/types.js.map +1 -0
  112. package/dist/lambda/utils.js +33 -35
  113. package/dist/lambda/utils.js.map +1 -0
  114. package/dist/sbom/generateSbom.js +6 -10
  115. package/dist/sbom/generateSbom.js.map +1 -0
  116. package/dist/scaAnalysis/common/auditReport.js +8 -12
  117. package/dist/scaAnalysis/common/auditReport.js.map +1 -0
  118. package/dist/scaAnalysis/common/commonReportingFunctionsSca.js +26 -32
  119. package/dist/scaAnalysis/common/commonReportingFunctionsSca.js.map +1 -0
  120. package/dist/scaAnalysis/common/formatMessage.js +8 -17
  121. package/dist/scaAnalysis/common/formatMessage.js.map +1 -0
  122. package/dist/scaAnalysis/common/models/ScaReportModel.js +4 -9
  123. package/dist/scaAnalysis/common/models/ScaReportModel.js.map +1 -0
  124. package/dist/scaAnalysis/common/scaParserForGoAndJava.js +10 -9
  125. package/dist/scaAnalysis/common/scaParserForGoAndJava.js.map +1 -0
  126. package/dist/scaAnalysis/common/scaServicesUpload.js +21 -22
  127. package/dist/scaAnalysis/common/scaServicesUpload.js.map +1 -0
  128. package/dist/scaAnalysis/common/treeUpload.js +7 -10
  129. package/dist/scaAnalysis/common/treeUpload.js.map +1 -0
  130. package/dist/scaAnalysis/common/utils/reportUtilsSca.js +21 -29
  131. package/dist/scaAnalysis/common/utils/reportUtilsSca.js.map +1 -0
  132. package/dist/scaAnalysis/dotnet/analysis.js +12 -18
  133. package/dist/scaAnalysis/dotnet/analysis.js.map +1 -0
  134. package/dist/scaAnalysis/dotnet/index.js +4 -7
  135. package/dist/scaAnalysis/dotnet/index.js.map +1 -0
  136. package/dist/scaAnalysis/go/goAnalysis.js +8 -11
  137. package/dist/scaAnalysis/go/goAnalysis.js.map +1 -0
  138. package/dist/scaAnalysis/go/goParseDeps.js +9 -7
  139. package/dist/scaAnalysis/go/goParseDeps.js.map +1 -0
  140. package/dist/scaAnalysis/go/goReadDepFile.js +10 -8
  141. package/dist/scaAnalysis/go/goReadDepFile.js.map +1 -0
  142. package/dist/scaAnalysis/java/analysis.js +23 -20
  143. package/dist/scaAnalysis/java/analysis.js.map +1 -0
  144. package/dist/scaAnalysis/java/index.js +7 -10
  145. package/dist/scaAnalysis/java/index.js.map +1 -0
  146. package/dist/scaAnalysis/java/javaBuildDepsParser.js +43 -43
  147. package/dist/scaAnalysis/java/javaBuildDepsParser.js.map +1 -0
  148. package/dist/scaAnalysis/javascript/analysis.js +16 -20
  149. package/dist/scaAnalysis/javascript/analysis.js.map +1 -0
  150. package/dist/scaAnalysis/javascript/index.js +17 -19
  151. package/dist/scaAnalysis/javascript/index.js.map +1 -0
  152. package/dist/scaAnalysis/javascript/scaServiceParser.js +8 -15
  153. package/dist/scaAnalysis/javascript/scaServiceParser.js.map +1 -0
  154. package/dist/scaAnalysis/legacy/legacyFlow.js +13 -15
  155. package/dist/scaAnalysis/legacy/legacyFlow.js.map +1 -0
  156. package/dist/scaAnalysis/php/analysis.js +15 -16
  157. package/dist/scaAnalysis/php/analysis.js.map +1 -0
  158. package/dist/scaAnalysis/php/index.js +5 -8
  159. package/dist/scaAnalysis/php/index.js.map +1 -0
  160. package/dist/scaAnalysis/php/phpNewServicesMapper.js +9 -12
  161. package/dist/scaAnalysis/php/phpNewServicesMapper.js.map +1 -0
  162. package/dist/scaAnalysis/processServicesFlow.js +50 -25
  163. package/dist/scaAnalysis/processServicesFlow.js.map +1 -0
  164. package/dist/scaAnalysis/python/analysis.js +16 -23
  165. package/dist/scaAnalysis/python/analysis.js.map +1 -0
  166. package/dist/scaAnalysis/python/index.js +4 -7
  167. package/dist/scaAnalysis/python/index.js.map +1 -0
  168. package/dist/scaAnalysis/repoMode/gradleParser.js +7 -13
  169. package/dist/scaAnalysis/repoMode/gradleParser.js.map +1 -0
  170. package/dist/scaAnalysis/repoMode/index.js +9 -12
  171. package/dist/scaAnalysis/repoMode/index.js.map +1 -0
  172. package/dist/scaAnalysis/repoMode/mavenParser.js +12 -12
  173. package/dist/scaAnalysis/repoMode/mavenParser.js.map +1 -0
  174. package/dist/scaAnalysis/ruby/analysis.js +32 -46
  175. package/dist/scaAnalysis/ruby/analysis.js.map +1 -0
  176. package/dist/scaAnalysis/ruby/index.js +5 -8
  177. package/dist/scaAnalysis/ruby/index.js.map +1 -0
  178. package/dist/scaAnalysis/scaAnalysis.js +49 -51
  179. package/dist/scaAnalysis/scaAnalysis.js.map +1 -0
  180. package/dist/scan/fileUtils.js +27 -36
  181. package/dist/scan/fileUtils.js.map +1 -0
  182. package/dist/scan/formatScanOutput.js +47 -61
  183. package/dist/scan/formatScanOutput.js.map +1 -0
  184. package/dist/scan/help.js +8 -11
  185. package/dist/scan/help.js.map +1 -0
  186. package/dist/scan/models/groupedResultsModel.js +2 -5
  187. package/dist/scan/models/groupedResultsModel.js.map +1 -0
  188. package/dist/scan/models/resultContentModel.js +2 -2
  189. package/dist/scan/models/resultContentModel.js.map +1 -0
  190. package/dist/scan/models/scanResultsModel.js +2 -5
  191. package/dist/scan/models/scanResultsModel.js.map +1 -0
  192. package/dist/scan/populateProjectIdAndProjectName.js +9 -12
  193. package/dist/scan/populateProjectIdAndProjectName.js.map +1 -0
  194. package/dist/scan/saveResults.js +3 -6
  195. package/dist/scan/saveResults.js.map +1 -0
  196. package/dist/scan/scan.js +24 -31
  197. package/dist/scan/scan.js.map +1 -0
  198. package/dist/scan/scanConfig.js +14 -12
  199. package/dist/scan/scanConfig.js.map +1 -0
  200. package/dist/scan/scanController.js +17 -20
  201. package/dist/scan/scanController.js.map +1 -0
  202. package/dist/scan/scanResults.js +27 -34
  203. package/dist/scan/scanResults.js.map +1 -0
  204. package/dist/telemetry/telemetry.js +29 -59
  205. package/dist/telemetry/telemetry.js.map +1 -0
  206. package/dist/utils/capabilities.js +1 -0
  207. package/dist/utils/capabilities.js.map +1 -0
  208. package/dist/utils/commonApi.js +15 -24
  209. package/dist/utils/commonApi.js.map +1 -0
  210. package/dist/utils/filterProjectPath.js +1 -0
  211. package/dist/utils/filterProjectPath.js.map +1 -0
  212. package/dist/utils/generalAPI.js +11 -17
  213. package/dist/utils/generalAPI.js.map +1 -0
  214. package/dist/utils/getConfig.js +7 -13
  215. package/dist/utils/getConfig.js.map +1 -0
  216. package/dist/utils/oraWrapper.js +7 -14
  217. package/dist/utils/oraWrapper.js.map +1 -0
  218. package/dist/utils/paramsUtil/commandlineParams.js +2 -5
  219. package/dist/utils/paramsUtil/commandlineParams.js.map +1 -0
  220. package/dist/utils/paramsUtil/configStoreParams.js +9 -10
  221. package/dist/utils/paramsUtil/configStoreParams.js.map +1 -0
  222. package/dist/utils/paramsUtil/envVariableParams.js +2 -3
  223. package/dist/utils/paramsUtil/envVariableParams.js.map +1 -0
  224. package/dist/utils/paramsUtil/paramHandler.js +12 -13
  225. package/dist/utils/paramsUtil/paramHandler.js.map +1 -0
  226. package/dist/utils/parsedCLIOptions.js +4 -7
  227. package/dist/utils/parsedCLIOptions.js.map +1 -0
  228. package/dist/utils/requestUtils.js +7 -13
  229. package/dist/utils/requestUtils.js.map +1 -0
  230. package/dist/utils/saveFile.js +8 -11
  231. package/dist/utils/saveFile.js.map +1 -0
  232. package/dist/utils/validationCheck.js +5 -11
  233. package/dist/utils/validationCheck.js.map +1 -0
  234. package/package.json +32 -41
  235. package/.prettierignore +0 -1
  236. package/bin/contrast.js +0 -2
  237. package/dist/audit/languageAnalysisEngine/util/requestUtils.js +0 -14
  238. package/dist/lambda/__mocks__/aws.js +0 -21
  239. package/dist/lambda/__mocks__/lambdaConfig.json +0 -42
  240. package/src/audit/catalogueApplication/catalogueApplication.js +0 -51
  241. package/src/audit/languageAnalysisEngine/commonApi.js +0 -20
  242. package/src/audit/languageAnalysisEngine/filterProjectPath.js +0 -21
  243. package/src/audit/languageAnalysisEngine/getProjectRootFilenames.js +0 -36
  244. package/src/audit/languageAnalysisEngine/sendSnapshot.js +0 -57
  245. package/src/audit/languageAnalysisEngine/util/requestUtils.js +0 -17
  246. package/src/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js +0 -63
  247. package/src/audit/report/commonReportingFunctions.js +0 -412
  248. package/src/audit/report/models/reportGuidanceModel.ts +0 -5
  249. package/src/audit/report/models/reportLibraryModel.ts +0 -30
  250. package/src/audit/report/models/reportListModel.ts +0 -49
  251. package/src/audit/report/models/reportOutputModel.ts +0 -29
  252. package/src/audit/report/models/reportSeverityModel.ts +0 -18
  253. package/src/audit/report/models/severityCountModel.ts +0 -22
  254. package/src/audit/report/reportingFeature.ts +0 -110
  255. package/src/audit/report/utils/reportUtils.ts +0 -165
  256. package/src/audit/save.js +0 -67
  257. package/src/cliConstants.js +0 -523
  258. package/src/commands/audit/auditConfig.js +0 -18
  259. package/src/commands/audit/auditController.js +0 -50
  260. package/src/commands/audit/help.js +0 -72
  261. package/src/commands/audit/processAudit.js +0 -34
  262. package/src/commands/audit/saveFile.js +0 -15
  263. package/src/commands/auth/auth.js +0 -146
  264. package/src/commands/config/config.js +0 -41
  265. package/src/commands/github/fingerprintConfig.js +0 -19
  266. package/src/commands/github/processFingerprint.js +0 -37
  267. package/src/commands/github/projectGroup.js +0 -298
  268. package/src/commands/github/repoServices.js +0 -122
  269. package/src/commands/learn/learn.js +0 -10
  270. package/src/commands/learn/processLearn.js +0 -13
  271. package/src/commands/scan/processScan.js +0 -42
  272. package/src/common/HTTPClient.js +0 -775
  273. package/src/common/autoDetection.js +0 -209
  274. package/src/common/baseRequest.ts +0 -83
  275. package/src/common/commonHelp.js +0 -53
  276. package/src/common/errorHandling.js +0 -157
  277. package/src/common/fail.js +0 -79
  278. package/src/common/versionChecker.js +0 -75
  279. package/src/constants/constants.js +0 -71
  280. package/src/constants/lambda.js +0 -85
  281. package/src/constants/locales.js +0 -365
  282. package/src/index.ts +0 -142
  283. package/src/lambda/__mocks__/aws.ts +0 -32
  284. package/src/lambda/__mocks__/lambdaConfig.json +0 -42
  285. package/src/lambda/analytics.ts +0 -9
  286. package/src/lambda/arn.ts +0 -33
  287. package/src/lambda/aws.ts +0 -248
  288. package/src/lambda/cliError.ts +0 -72
  289. package/src/lambda/constants.ts +0 -11
  290. package/src/lambda/help.ts +0 -92
  291. package/src/lambda/lambda.ts +0 -230
  292. package/src/lambda/lambdaUtils.ts +0 -111
  293. package/src/lambda/logUtils.ts +0 -64
  294. package/src/lambda/scanDetailCompletion.ts +0 -78
  295. package/src/lambda/scanRequest.ts +0 -169
  296. package/src/lambda/scanResults.ts +0 -29
  297. package/src/lambda/types.ts +0 -36
  298. package/src/lambda/utils.ts +0 -188
  299. package/src/sbom/generateSbom.ts +0 -45
  300. package/src/scaAnalysis/common/auditReport.js +0 -59
  301. package/src/scaAnalysis/common/commonReportingFunctionsSca.js +0 -276
  302. package/src/scaAnalysis/common/formatMessage.js +0 -67
  303. package/src/scaAnalysis/common/models/ScaReportModel.ts +0 -81
  304. package/src/scaAnalysis/common/scaParserForGoAndJava.js +0 -41
  305. package/src/scaAnalysis/common/scaServicesUpload.js +0 -159
  306. package/src/scaAnalysis/common/treeUpload.js +0 -51
  307. package/src/scaAnalysis/common/utils/reportUtilsSca.ts +0 -123
  308. package/src/scaAnalysis/dotnet/analysis.js +0 -72
  309. package/src/scaAnalysis/dotnet/index.js +0 -11
  310. package/src/scaAnalysis/go/goAnalysis.js +0 -26
  311. package/src/scaAnalysis/go/goParseDeps.js +0 -203
  312. package/src/scaAnalysis/go/goReadDepFile.js +0 -34
  313. package/src/scaAnalysis/java/analysis.js +0 -148
  314. package/src/scaAnalysis/java/index.js +0 -29
  315. package/src/scaAnalysis/java/javaBuildDepsParser.js +0 -439
  316. package/src/scaAnalysis/javascript/analysis.js +0 -111
  317. package/src/scaAnalysis/javascript/index.js +0 -104
  318. package/src/scaAnalysis/javascript/scaServiceParser.js +0 -151
  319. package/src/scaAnalysis/legacy/legacyFlow.js +0 -43
  320. package/src/scaAnalysis/php/analysis.js +0 -78
  321. package/src/scaAnalysis/php/index.js +0 -28
  322. package/src/scaAnalysis/php/phpNewServicesMapper.js +0 -77
  323. package/src/scaAnalysis/processServicesFlow.js +0 -126
  324. package/src/scaAnalysis/python/analysis.js +0 -93
  325. package/src/scaAnalysis/python/index.js +0 -16
  326. package/src/scaAnalysis/repoMode/gradleParser.js +0 -88
  327. package/src/scaAnalysis/repoMode/index.js +0 -21
  328. package/src/scaAnalysis/repoMode/mavenParser.js +0 -138
  329. package/src/scaAnalysis/ruby/analysis.js +0 -413
  330. package/src/scaAnalysis/ruby/index.js +0 -16
  331. package/src/scaAnalysis/scaAnalysis.js +0 -172
  332. package/src/scan/fileUtils.js +0 -218
  333. package/src/scan/formatScanOutput.ts +0 -225
  334. package/src/scan/help.js +0 -56
  335. package/src/scan/models/groupedResultsModel.ts +0 -20
  336. package/src/scan/models/resultContentModel.ts +0 -86
  337. package/src/scan/models/scanResultsModel.ts +0 -55
  338. package/src/scan/populateProjectIdAndProjectName.js +0 -73
  339. package/src/scan/saveResults.js +0 -14
  340. package/src/scan/scan.ts +0 -68
  341. package/src/scan/scanConfig.js +0 -58
  342. package/src/scan/scanController.js +0 -98
  343. package/src/scan/scanResults.js +0 -171
  344. package/src/telemetry/telemetry.ts +0 -154
  345. package/src/utils/capabilities.js +0 -12
  346. package/src/utils/commonApi.js +0 -103
  347. package/src/utils/filterProjectPath.js +0 -25
  348. package/src/utils/generalAPI.js +0 -52
  349. package/src/utils/getConfig.ts +0 -34
  350. package/src/utils/oraWrapper.js +0 -29
  351. package/src/utils/paramsUtil/commandlineParams.js +0 -12
  352. package/src/utils/paramsUtil/configStoreParams.js +0 -19
  353. package/src/utils/paramsUtil/envVariableParams.js +0 -10
  354. package/src/utils/paramsUtil/paramHandler.js +0 -38
  355. package/src/utils/parsedCLIOptions.js +0 -32
  356. package/src/utils/requestUtils.js +0 -29
  357. package/src/utils/saveFile.js +0 -20
  358. package/src/utils/validationCheck.js +0 -39
@@ -1,172 +0,0 @@
1
- const {
2
- supportedLanguages: { JAVA, GO, PYTHON, RUBY, JAVASCRIPT, NODE, PHP, DOTNET }
3
- } = require('../constants/constants')
4
- const {
5
- returnOra,
6
- startSpinner,
7
- succeedSpinner
8
- } = require('../utils/oraWrapper')
9
- const autoDetection = require('../common/autoDetection')
10
- const rootFile = require('../audit/languageAnalysisEngine/getProjectRootFilenames')
11
- const path = require('path')
12
- const i18n = require('i18n')
13
- const { auditUsageGuide } = require('../commands/audit/help')
14
- const repoMode = require('./repoMode')
15
- const { dotNetAnalysis } = require('./dotnet')
16
- const { goAnalysis } = require('./go/goAnalysis')
17
- const { phpAnalysis } = require('./php')
18
- const { rubyAnalysis } = require('./ruby')
19
- const { pythonAnalysis } = require('./python')
20
- const javaAnalysis = require('./java')
21
- const jsAnalysis = require('./javascript')
22
- const auditReport = require('./common/auditReport')
23
- const processServices = require('./processServicesFlow')
24
- const chalk = require('chalk')
25
- const {
26
- convertGenericToTypedReportModelSca
27
- } = require('./common/utils/reportUtilsSca')
28
- const projectConfig = require('../commands/github/projectGroup')
29
- const { legacyFlow } = require('./legacy/legacyFlow')
30
-
31
- const processSca = async config => {
32
- let filesFound
33
-
34
- if (config.help) {
35
- console.log(auditUsageGuide)
36
- process.exit(0)
37
- }
38
-
39
- config.repo = config.repositoryId !== undefined
40
-
41
- const projectStats = await rootFile.getProjectStats(config.file)
42
- let pathWithFile = projectStats.isFile()
43
-
44
- config.fileName = config.file
45
- config.file = pathWithFile
46
- ? rootFile.getDirectoryFromPathGiven(config.file).concat('/')
47
- : config.file
48
-
49
- filesFound = await autoDetection.autoDetectAuditFilesAndLanguages(config.file)
50
- filesFound = await autoDetection.detectPackageManager(filesFound)
51
-
52
- autoDetection.dealWithMultiJava(filesFound, config, pathWithFile)
53
-
54
- if (filesFound.length > 1 && pathWithFile) {
55
- filesFound = filesFound.filter(i =>
56
- Object.values(i)[0].includes(path.basename(config.fileName))
57
- )
58
- }
59
-
60
- // files found looks like [ { javascript: [ Array ] } ]
61
- //check we have the language and call the right analyser
62
- let messageToSend = undefined
63
- if (filesFound.length === 1) {
64
- config.packageManager = filesFound[0]?.packageManager
65
- switch (Object.keys(filesFound[0])[0]) {
66
- case JAVA:
67
- config.language = JAVA
68
- if (config.repo && !config.legacy) {
69
- try {
70
- messageToSend = await repoMode.buildRepo(config, filesFound[0])
71
- } catch (e) {
72
- throw new Error(
73
- 'Unable to build in repository mode. Check your project file'
74
- )
75
- }
76
- } else {
77
- messageToSend = await javaAnalysis.javaAnalysis(config, filesFound[0])
78
- }
79
- break
80
- case JAVASCRIPT:
81
- messageToSend = await jsAnalysis.jsAnalysis(config, filesFound[0])
82
- config.language = NODE
83
- break
84
- case PYTHON:
85
- messageToSend = pythonAnalysis(config, filesFound[0])
86
- config.language = PYTHON
87
- break
88
- case RUBY:
89
- messageToSend = rubyAnalysis(config, filesFound[0])
90
- config.language = RUBY
91
- break
92
- case PHP:
93
- messageToSend = phpAnalysis(config, filesFound[0])
94
- config.language = PHP
95
- break
96
- case GO:
97
- messageToSend = goAnalysis(config, filesFound[0])
98
- config.language = GO
99
- break
100
- case DOTNET:
101
- if (config.legacy === false) {
102
- console.log(
103
- `${chalk.bold(
104
- '\n.NET project found\n'
105
- )} Language type is unsupported.`
106
- )
107
- return
108
- } else {
109
- messageToSend = dotNetAnalysis(config, filesFound[0])
110
- config.language = DOTNET
111
- break
112
- }
113
- default:
114
- //something is wrong
115
- console.log('No supported language detected in project path')
116
- return
117
- }
118
-
119
- if (config.legacy === false) {
120
- if (!config.name) {
121
- config = await projectConfig.dealWithNoName(config)
122
- }
123
- const startTime = performance.now()
124
- console.log('') //empty log for space before spinner
125
- const reportSpinner = returnOra(i18n.__('auditSCAAnalysisBegins'))
126
- startSpinner(reportSpinner)
127
-
128
- let reportResponse = await processServices.processUpload(
129
- messageToSend,
130
- config,
131
- reportSpinner
132
- )
133
-
134
- const reportModelLibraryList = convertGenericToTypedReportModelSca(
135
- reportResponse.reportArray
136
- )
137
- await auditReport.processAuditReport(
138
- config,
139
- reportModelLibraryList,
140
- reportResponse.reportId
141
- )
142
-
143
- succeedSpinner(reportSpinner, i18n.__('auditSCAAnalysisComplete'))
144
-
145
- const endTime = performance.now() - startTime
146
- const scanDurationMs = endTime - startTime
147
- console.log(
148
- `----- completed in ${(scanDurationMs / 1000).toFixed(2)}s -----`
149
- )
150
- } else {
151
- await legacyFlow(config, messageToSend)
152
- }
153
- } else {
154
- if (filesFound.length === 0) {
155
- console.log(i18n.__('languageAnalysisNoLanguage'))
156
- console.log(i18n.__('languageAnalysisNoLanguageHelpLine'))
157
- throw new Error()
158
- } else {
159
- console.log(chalk.bold(`\nMultiple language files detected \n`))
160
- filesFound.forEach(file => {
161
- console.log(`${Object.keys(file)[0]} : `, Object.values(file)[0])
162
- })
163
- throw new Error(
164
- `Please use --file to audit one language only. \nExample: contrast audit --file package-lock.json`
165
- )
166
- }
167
- }
168
- }
169
-
170
- module.exports = {
171
- processSca
172
- }
@@ -1,218 +0,0 @@
1
- const fg = require('fast-glob')
2
- const fs = require('fs')
3
- const i18n = require('i18n')
4
-
5
- const findFile = async () => {
6
- console.log(i18n.__('searchingScanFileDirectory', process.cwd()))
7
- return fg(['**/*.jar', '**/*.war', '**/*.zip', '**/*.dll', '**/*.exe'], {
8
- dot: false,
9
- deep: 3,
10
- onlyFiles: true
11
- })
12
- }
13
-
14
- const findAllFiles = async (filePath, depth = 3) => {
15
- const result = await fg(
16
- [
17
- '**/pom.xml',
18
- // '**/build.gradle',
19
- // '**/build.gradle.kts',
20
- '**/package.json',
21
- '**/package-lock.json',
22
- '**/yarn.lock'
23
- // '**/Pipfile',
24
- // '**/*.csproj',
25
- // '**/Gemfile',
26
- // '**/go.mod'
27
- ],
28
- {
29
- ignore: ['**/node_modules/**', '**/target/**', '**/bin/**'],
30
- dot: false,
31
- deep: depth,
32
- onlyFiles: true,
33
- absolute: true,
34
- cwd: filePath ? filePath : process.cwd()
35
- }
36
- )
37
-
38
- if (result.length > 0) {
39
- return result
40
- }
41
- return []
42
- }
43
-
44
- const findFilesJava = async (languagesFound, filePath, depth = 1) => {
45
- const result = await fg(
46
- ['**/pom.xml', '**/build.gradle', '**/build.gradle.kts'],
47
- {
48
- dot: false,
49
- deep: depth,
50
- onlyFiles: true,
51
- cwd: filePath ? filePath : process.cwd()
52
- }
53
- )
54
-
55
- if (result.length > 0) {
56
- let lockFile = result.find(i => i.includes('pom') || i.includes('gradle'))
57
- return languagesFound.push({
58
- JAVA: result,
59
- language: 'JAVA',
60
- filePath: lockFile
61
- })
62
- }
63
- return languagesFound
64
- }
65
-
66
- const findFilesJavascript = async (languagesFound, filePath, depth = 1) => {
67
- const result = await fg(
68
- ['**/package.json', '**/yarn.lock', '**/package-lock.json'],
69
- {
70
- dot: false,
71
- deep: depth,
72
- onlyFiles: true,
73
- cwd: filePath ? filePath : process.cwd()
74
- }
75
- )
76
-
77
- if (result.length > 0) {
78
- let lockFile = result.find(i => i.includes('lock'))
79
- return languagesFound.push({
80
- JAVASCRIPT: result,
81
- language: 'JAVASCRIPT',
82
- filePath: lockFile
83
- })
84
- }
85
- return languagesFound
86
- }
87
-
88
- const findFilesPython = async (languagesFound, filePath, depth = 1) => {
89
- const result = await fg(['**/Pipfile.lock', '**/Pipfile'], {
90
- dot: false,
91
- deep: depth,
92
- onlyFiles: true,
93
- cwd: filePath ? filePath : process.cwd()
94
- })
95
-
96
- if (result.length > 0) {
97
- return languagesFound.push({ PYTHON: result, filePath: 'Pipfile' })
98
- }
99
- return languagesFound
100
- }
101
-
102
- const findFilesGo = async (languagesFound, filePath, depth = 1) => {
103
- const result = await fg(['**/go.mod'], {
104
- dot: false,
105
- deep: depth,
106
- onlyFiles: true,
107
- cwd: filePath ? filePath : process.cwd()
108
- })
109
-
110
- if (result.length > 0) {
111
- return languagesFound.push({ GO: result, filePath: 'go.mod' })
112
- }
113
- return languagesFound
114
- }
115
-
116
- const findFilesRuby = async (languagesFound, filePath, depth = 1) => {
117
- const result = await fg(['**/Gemfile', '**/Gemfile.lock'], {
118
- dot: false,
119
- deep: depth,
120
- onlyFiles: true,
121
- cwd: filePath ? filePath : process.cwd()
122
- })
123
-
124
- if (result.length > 0) {
125
- return languagesFound.push({ RUBY: result, filePath: 'Gemfile' })
126
- }
127
- return languagesFound
128
- }
129
-
130
- const findFilesPhp = async (languagesFound, filePath, depth = 1) => {
131
- const result = await fg(['**/composer.json', '**/composer.lock'], {
132
- dot: false,
133
- deep: depth,
134
- onlyFiles: true,
135
- cwd: filePath ? filePath : process.cwd()
136
- })
137
-
138
- if (result.length > 0) {
139
- return languagesFound.push({ PHP: result, filePath: 'composer.lock' })
140
- }
141
- return languagesFound
142
- }
143
-
144
- const findFilesDotNet = async (languagesFound, filePath, depth = 1) => {
145
- const result = await fg(['**/*.csproj', '**/packages.lock.json'], {
146
- dot: false,
147
- deep: depth,
148
- onlyFiles: true,
149
- cwd: filePath ? filePath : process.cwd()
150
- })
151
-
152
- if (result.length > 0) {
153
- return languagesFound.push({
154
- DOTNET: result,
155
- filePath: 'packages.lock.json'
156
- })
157
- }
158
- return languagesFound
159
- }
160
-
161
- const checkFilePermissions = file => {
162
- let readableFile = false
163
- try {
164
- fs.accessSync(file, fs.constants.R_OK)
165
- return (readableFile = true) // testing purposes
166
- } catch (err) {
167
- console.log('Invalid permissions found on ', file)
168
- process.exit(0)
169
- }
170
- }
171
-
172
- const fileExists = path => {
173
- return fs.existsSync(path)
174
- }
175
-
176
- const fileIsEmpty = path => {
177
- if (fileExists(path) && checkFilePermissions(path)) {
178
- try {
179
- return fs.readFileSync(path).length === 0
180
- } catch (e) {
181
- if (
182
- e.message.toString().includes('illegal operation on a directory, read')
183
- ) {
184
- console.log('file provided cannot be a directory')
185
- } else {
186
- console.log(e.message.toString())
187
- }
188
- process.exit(0)
189
- }
190
- }
191
- return false
192
- }
193
-
194
- const shortenFilePath = filePath => {
195
- let splitPath = filePath.split('home/runner/work/')
196
- if (splitPath.length > 1) {
197
- let splitPath2 = splitPath[1].split('/')
198
- splitPath2.shift()
199
- return splitPath2.join('/').toString()
200
- }
201
- return filePath
202
- }
203
-
204
- module.exports = {
205
- findFile,
206
- fileExists,
207
- checkFilePermissions,
208
- findFilesJava,
209
- findFilesJavascript,
210
- findFilesPython,
211
- findFilesGo,
212
- findFilesPhp,
213
- findFilesRuby,
214
- findFilesDotNet,
215
- fileIsEmpty,
216
- findAllFiles,
217
- shortenFilePath
218
- }
@@ -1,225 +0,0 @@
1
- import { ScanResultsModel } from './models/scanResultsModel'
2
- import i18n from 'i18n'
3
- import chalk from 'chalk'
4
- import { ResultContent } from './models/resultContentModel'
5
- import { GroupedResultsModel } from './models/groupedResultsModel'
6
- import { sortBy } from 'lodash'
7
- import Table from 'cli-table3'
8
- import {
9
- CRITICAL_COLOUR,
10
- HIGH_COLOUR,
11
- LOW_COLOUR,
12
- MEDIUM_COLOUR,
13
- NOTE_COLOUR,
14
- supportedLanguagesScan
15
- } from '../constants/constants'
16
- import {
17
- getSeverityCounts,
18
- printVulnInfo
19
- } from '../audit/report/commonReportingFunctions'
20
-
21
- export function formatScanOutput(scanResults: ScanResultsModel) {
22
- const { content } = scanResults.scanResultsInstances
23
- const { language } = scanResults.scanDetail
24
-
25
- const severityCounts = getSeverityCounts(content)
26
- if (content.length === 0) {
27
- console.log(i18n.__('scanNoVulnerabilitiesFound'))
28
- console.log(i18n.__('scanNoVulnerabilitiesFoundSecureCode'))
29
- console.log(i18n.__('scanNoVulnerabilitiesFoundGoodWork'))
30
- } else {
31
- const message =
32
- severityCounts.critical || severityCounts.high
33
- ? 'Here are your top priorities to fix'
34
- : "No major issues, here's what we found"
35
- console.log(chalk.bold(message))
36
- console.log()
37
-
38
- const defaultView = getDefaultView(content, language)
39
-
40
- let count = 0
41
- defaultView.forEach(entry => {
42
- count++
43
- const table = new Table({
44
- chars: {
45
- top: '',
46
- 'top-mid': '',
47
- 'top-left': '',
48
- 'top-right': '',
49
- bottom: '',
50
- 'bottom-mid': '',
51
- 'bottom-left': '',
52
- 'bottom-right': '',
53
- left: '',
54
- 'left-mid': '',
55
- mid: '',
56
- 'mid-mid': '',
57
- right: '',
58
- 'right-mid': '',
59
- middle: ' '
60
- },
61
- style: { 'padding-left': 0, 'padding-right': 0 },
62
- colAligns: ['right'],
63
- wordWrap: true,
64
- colWidths: [12, 1, 100]
65
- })
66
-
67
- let learnRow: string[] = []
68
- let adviceRow = []
69
- const headerColour = chalk.hex(entry.colour)
70
- const headerRow = [
71
- headerColour(`CONTRAST-${count.toString().padStart(3, '0')}`),
72
- headerColour(`-`),
73
- headerColour(`[${entry.severity}] `) +
74
- headerColour.bold(`${entry.ruleId}`) +
75
- entry.message
76
- ]
77
-
78
- const codePath = entry.codePath?.replace(/^@/, '')
79
-
80
- const codeRow = [
81
- chalk.hex('#F6F5F5').bold(`Code`),
82
- chalk.hex('#F6F5F5').bold(`:`),
83
- chalk.hex('#F6F5F5').bold(`${codePath}`)
84
- ]
85
- const issueRow = [chalk.bold(`Issue`), chalk.bold(`:`), `${entry.issue}`]
86
-
87
- table.push(headerRow, codeRow, issueRow)
88
-
89
- if (entry?.advice) {
90
- adviceRow = [
91
- chalk.bold('Advice'),
92
- chalk.bold(`:`),
93
- stripTags(entry.advice)
94
- ]
95
- table.push(adviceRow)
96
- }
97
-
98
- if (entry?.learn && entry?.learn.length > 0) {
99
- learnRow = [
100
- chalk.bold('Learn'),
101
- chalk.bold(`:`),
102
- chalk.hex('#97f7f7').bold.underline(entry.learn[0])
103
- ]
104
- table.push(learnRow)
105
- }
106
- console.log(table.toString())
107
- console.log()
108
- })
109
- }
110
- printVulnInfo(severityCounts)
111
-
112
- return severityCounts
113
- }
114
-
115
- export function formatLinks(objName: string, entry: any[]) {
116
- const line = chalk.bold(objName + ' : ')
117
- if (entry.length === 1) {
118
- console.log(line + chalk.hex('#97DCF7').bold.underline(entry[0]))
119
- } else {
120
- console.log(line)
121
- entry.forEach(link => {
122
- console.log(chalk.hex('#97DCF7').bold.underline(link))
123
- })
124
- }
125
- }
126
-
127
- export function getDefaultView(content: ResultContent[], language: string) {
128
- const groupTypeResults = [] as GroupedResultsModel[]
129
-
130
- content.forEach(resultEntry => {
131
- const groupResultsObj = new GroupedResultsModel(resultEntry.ruleId)
132
- groupResultsObj.severity = resultEntry.severity
133
- groupResultsObj.ruleId = resultEntry.ruleId
134
- groupResultsObj.issue = stripTags(resultEntry.issue)
135
- groupResultsObj.advice = resultEntry.advice
136
- groupResultsObj.learn = resultEntry.learn
137
- groupResultsObj.message = resultEntry.message?.text
138
- ? editVulName(resultEntry.message.text) +
139
- doAddSourceLineNumber(resultEntry, language)
140
- : ''
141
- groupResultsObj.codePath = getLocationsSyncInfo(resultEntry)
142
- groupTypeResults.push(groupResultsObj)
143
- assignBySeverity(resultEntry, groupResultsObj)
144
- })
145
-
146
- return sortBy(groupTypeResults, ['priority'])
147
- }
148
-
149
- export function doAddSourceLineNumber(
150
- resultEntry: ResultContent,
151
- language: string
152
- ) {
153
- //only add source line num if not JS
154
- return language !== supportedLanguagesScan.JAVASCRIPT
155
- ? ':' + getSourceLineNumber(resultEntry)
156
- : ''
157
- }
158
-
159
- export function editVulName(message: string) {
160
- return message.substring(message.indexOf(' in '))
161
- }
162
-
163
- export function getLocationsSyncInfo(resultEntry: ResultContent) {
164
- const locationsMessage =
165
- resultEntry.locations[0]?.physicalLocation?.artifactLocation?.uri || ''
166
- const locationsLineNumber =
167
- resultEntry.locations[0]?.physicalLocation?.region?.startLine || ''
168
-
169
- if (!locationsLineNumber) {
170
- return '@' + locationsMessage
171
- }
172
-
173
- return '@' + locationsMessage + ':' + locationsLineNumber
174
- }
175
-
176
- export function getSourceLineNumber(resultEntry: ResultContent) {
177
- const locationsLineNumber =
178
- resultEntry.locations[0]?.physicalLocation?.region?.startLine || ''
179
- const codeFlowLineNumber = getCodeFlowInfo(resultEntry)
180
-
181
- return codeFlowLineNumber ? codeFlowLineNumber : locationsLineNumber
182
- }
183
-
184
- export function getCodeFlowInfo(resultEntry: ResultContent) {
185
- let result: any
186
- resultEntry.codeFlows[0]?.threadFlows.forEach((i: { locations: any[] }) => {
187
- return (result = i.locations.find(
188
- (locations: { importance: string }) =>
189
- locations.importance === 'essential'
190
- ))
191
- })
192
-
193
- return result?.location?.physicalLocation?.region?.startLine
194
- }
195
-
196
- export function stripTags(oldString: string) {
197
- return oldString.replace(/\n/g, ' ').replace(/\s+/g, ' ').trim()
198
- }
199
-
200
- export function assignBySeverity(
201
- entry: ResultContent,
202
- assignedObj: GroupedResultsModel
203
- ) {
204
- if (entry.severity.toUpperCase() === 'CRITICAL') {
205
- assignedObj.priority = 1
206
- assignedObj.colour = CRITICAL_COLOUR
207
- return assignedObj
208
- } else if (entry.severity.toUpperCase() === 'HIGH') {
209
- assignedObj.priority = 2
210
- assignedObj.colour = HIGH_COLOUR
211
- return assignedObj
212
- } else if (entry.severity.toUpperCase() === 'MEDIUM') {
213
- assignedObj.priority = 3
214
- assignedObj.colour = MEDIUM_COLOUR
215
- return assignedObj
216
- } else if (entry.severity.toUpperCase() === 'LOW') {
217
- assignedObj.priority = 4
218
- assignedObj.colour = LOW_COLOUR
219
- return assignedObj
220
- } else if (entry.severity.toUpperCase() === 'NOTE') {
221
- assignedObj.priority = 5
222
- assignedObj.colour = NOTE_COLOUR
223
- return assignedObj
224
- }
225
- }
package/src/scan/help.js DELETED
@@ -1,56 +0,0 @@
1
- const commandLineUsage = require('command-line-usage')
2
- const i18n = require('i18n')
3
- const constants = require('../cliConstants')
4
- const { commonHelpLinks } = require('../common/commonHelp')
5
-
6
- const scanUsageGuide = commandLineUsage([
7
- {
8
- header: i18n.__('constantsHeader')
9
- },
10
- {
11
- header: i18n.__('scanHeader')
12
- },
13
- {
14
- header: i18n.__('constantsPrerequisitesHeader'),
15
- content: [
16
- '{bold ' + i18n.__('constantsPrerequisitesContentScanLanguages') + '}',
17
- i18n.__('constantsPrerequisitesContent'),
18
- '',
19
- i18n.__('constantsUsageCommandInfo'),
20
- i18n.__('constantsUsageCommandInfo24Hours')
21
- ]
22
- },
23
- {
24
- header: i18n.__('constantsScanOptions'),
25
- optionList: constants.commandLineDefinitions.scanOptionDefinitions,
26
- hide: [
27
- 'project-id',
28
- 'organization-id',
29
- 'api-key',
30
- 'authorization',
31
- 'host',
32
- 'proxy',
33
- 'help',
34
- 'ff',
35
- 'cert-self-signed',
36
- 'key',
37
- 'cacert',
38
- 'cert',
39
- 'verbose',
40
- 'debug',
41
- 'experimental'
42
- ]
43
- },
44
- {
45
- header: i18n.__('constantsAdvancedOptions'),
46
- optionList:
47
- constants.commandLineDefinitions.scanAdvancedOptionDefinitionsForHelp
48
- },
49
- commonHelpLinks()[0],
50
- commonHelpLinks()[1],
51
- commonHelpLinks()[2]
52
- ])
53
-
54
- module.exports = {
55
- scanUsageGuide
56
- }
@@ -1,20 +0,0 @@
1
- export class GroupedResultsModel {
2
- ruleId: string
3
- codePathSet: Set<string>
4
- cwe?: string[]
5
- reference?: string[]
6
- severity?: string
7
- advice?: string
8
- learn?: string[]
9
- issue?: string
10
- priority?: number
11
- message?: string | undefined
12
- colour: string
13
- codePath?: string
14
-
15
- constructor(ruleId: string) {
16
- this.ruleId = ruleId
17
- this.colour = '#999999'
18
- this.codePathSet = new Set<string>()
19
- }
20
- }