@contrast/contrast 2.0.2-beta.3 → 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,209 +0,0 @@
1
- const i18n = require('i18n')
2
- const fileFinder = require('../scan/fileUtils')
3
- const {
4
- supportedLanguages: { JAVA, GO, PYTHON, RUBY, JAVASCRIPT, DOTNET }
5
- } = require('../constants/constants')
6
- const { shortenFilePath } = require('../scan/fileUtils')
7
-
8
- const autoDetectFingerprintInfo = async (filePath, depth, config) => {
9
- let complexObj = await fileFinder.findAllFiles(filePath, depth)
10
- let result = []
11
- let count = 0
12
- complexObj.forEach(i => {
13
- count++
14
- if (!i.includes('package.json')) {
15
- result.push({
16
- name: shortenFilePath(i),
17
- filePath: i,
18
- id: count.toString(),
19
- repositoryId: config.repositoryId,
20
- projectGroupId: config.projectGroupId
21
- })
22
- }
23
- })
24
- return result
25
- }
26
-
27
- const detectPackageManager = async array => {
28
- array.forEach(i => {
29
- if (i.filePath.includes('pom.xml')) {
30
- i['language'] = JAVA
31
- i['packageManager'] = 'MAVEN'
32
- }
33
- if (i.filePath.includes('build.gradle.kts')) {
34
- i['language'] = JAVA
35
- i['packageManager'] = 'GRADLE'
36
- }
37
- if (i.filePath.includes('build.gradle')) {
38
- i['language'] = JAVA
39
- i['packageManager'] = 'GRADLE'
40
- }
41
- if (i.filePath.includes('package-lock.json')) {
42
- i['language'] = JAVASCRIPT
43
- i['packageManager'] = 'NPM'
44
- }
45
- if (i.filePath.includes('yarn.lock')) {
46
- i['language'] = JAVASCRIPT
47
- i['packageManager'] = 'YARN'
48
- }
49
- if (i.filePath.includes('Pipfile')) {
50
- i['language'] = PYTHON
51
- i['packageManager'] = 'PYPI'
52
- }
53
- if (i.filePath.includes('csproj')) {
54
- i['language'] = DOTNET
55
- i['packageManager'] = 'NUGET'
56
- }
57
- if (i.filePath.includes('Gemfile')) {
58
- i['language'] = RUBY
59
- i['packageManager'] = 'RUBYGEMS'
60
- }
61
- if (i.filePath.includes('go.mod')) {
62
- i['language'] = GO
63
- i['packageManager'] = 'PKG'
64
- }
65
- })
66
- return array
67
- }
68
-
69
- const autoDetectFileAndLanguage = async configToUse => {
70
- const entries = await fileFinder.findFile()
71
-
72
- if (entries.length === 1) {
73
- console.log(i18n.__('foundScanFile', entries[0]))
74
-
75
- if (hasWhiteSpace(entries[0])) {
76
- console.log(i18n.__('fileHasWhiteSpacesError'))
77
- process.exit(1)
78
- }
79
-
80
- if (fileFinder.fileIsEmpty(entries[0])) {
81
- console.log(i18n.__('scanFileIsEmpty'))
82
- process.exit(1)
83
- }
84
-
85
- configToUse.file = entries[0]
86
- if (configToUse.name === undefined) {
87
- configToUse.name = entries[0]
88
- }
89
- } else {
90
- errorOnFileDetection(entries)
91
- }
92
- }
93
-
94
- const autoDetectAuditFilesAndLanguages = async filePath => {
95
- let languagesFound = []
96
-
97
- console.log(i18n.__('searchingAuditFileDirectory', filePath))
98
-
99
- await fileFinder.findFilesJava(languagesFound, filePath)
100
- await fileFinder.findFilesJavascript(languagesFound, filePath)
101
- await fileFinder.findFilesPython(languagesFound, filePath)
102
- await fileFinder.findFilesGo(languagesFound, filePath)
103
- await fileFinder.findFilesPhp(languagesFound, filePath)
104
- await fileFinder.findFilesRuby(languagesFound, filePath)
105
- await fileFinder.findFilesDotNet(languagesFound, filePath)
106
-
107
- if (languagesFound) {
108
- return languagesFound
109
- }
110
-
111
- return []
112
- }
113
-
114
- const hasWhiteSpace = s => {
115
- const filename = s.split('/').pop()
116
- return filename.indexOf(' ') >= 0
117
- }
118
-
119
- const dealWithMultiJava = (filesFound, config, isFile) => {
120
- if (isFile && filesFound[0] && filesFound[0].language === 'JAVA') {
121
- return multiJavaFilePathFullySpecified(filesFound, config)
122
- } else {
123
- return multiJavaNoFilePathFullySpecified(filesFound)
124
- }
125
- }
126
-
127
- const multiJavaNoFilePathFullySpecified = filesFound => {
128
- const hasMultiJava =
129
- filesFound.filter(
130
- data =>
131
- Object.keys(data)[0] === JAVA &&
132
- Object.values(data)[0].includes('build.gradle') &&
133
- Object.values(data)[0].includes('pom.xml')
134
- ).length > 0
135
-
136
- if (hasMultiJava) {
137
- console.log('Multiple Java language dependency files detected')
138
- console.log(
139
- 'Please use --file to audit one only. \nExample: contrast audit --file pom.xml'
140
- )
141
- process.exit(1)
142
- }
143
-
144
- return filesFound
145
- }
146
-
147
- const multiJavaFilePathFullySpecified = (filesFound, config) => {
148
- const filteredFiles = filesFound[0].JAVA.filter(fileTypes =>
149
- config.fileName.endsWith(fileTypes)
150
- )
151
- filesFound[0].JAVA = filteredFiles
152
- filesFound[0].filePath = filteredFiles[0]
153
-
154
- if (filteredFiles[0] === 'pom.xml') {
155
- filesFound[0].packageManager = 'MAVEN'
156
- } else {
157
- filesFound[0].packageManager = 'GRADLE'
158
- }
159
-
160
- if (config.debug || config.verbose) {
161
- console.log('\nAuto detection - detected multiple Java files')
162
- console.log(
163
- `\nAuto detection - using ${filesFound[0].filePath} as based on full file path`
164
- )
165
- }
166
-
167
- return filesFound
168
- }
169
-
170
- const errorOnFileDetection = entries => {
171
- if (entries.length > 1) {
172
- console.log(i18n.__('searchingDirectoryScan'))
173
- for (let file in entries) {
174
- console.log('-', entries[file])
175
- }
176
- console.log('')
177
- console.log(i18n.__('specifyFileScanError'))
178
- } else {
179
- console.log(i18n.__('noFileFoundScan'))
180
- console.log('')
181
- console.log(i18n.__('specifyFileScanError'))
182
- }
183
- process.exit(1)
184
- }
185
-
186
- const errorOnAuditFileDetection = entries => {
187
- if (entries.length > 1) {
188
- console.log(i18n.__('searchingDirectoryScan'))
189
- for (let file in entries) {
190
- console.log('-', entries[file])
191
- }
192
- console.log('')
193
- console.log(i18n.__('specifyFileAuditNotFound'))
194
- } else {
195
- console.log(i18n.__('noFileFoundScan'))
196
- console.log('')
197
- console.log(i18n.__('specifyFileAuditNotFound'))
198
- }
199
- }
200
-
201
- module.exports = {
202
- autoDetectFileAndLanguage,
203
- errorOnFileDetection,
204
- autoDetectAuditFilesAndLanguages,
205
- errorOnAuditFileDetection,
206
- autoDetectFingerprintInfo,
207
- dealWithMultiJava,
208
- detectPackageManager
209
- }
@@ -1,83 +0,0 @@
1
- import { HttpsProxyAgent } from 'hpagent'
2
- import fs from 'fs'
3
- import got, { Options } from 'got'
4
- import { Agents, HTTPSOptions } from 'got/dist/source/core'
5
-
6
- export function gotInstance(config: any) {
7
- return got.extend({ retry: { limit: 0 }, ...buildBaseRequestOptions(config) })
8
- }
9
-
10
- export function buildBaseRequestOptions(config: any) {
11
- const { apiKey, authorization } = config
12
- const rejectUnauthorized = !config.certSelfSigned
13
-
14
- const superApiKey = config.superApiKey
15
- const superAuthToken = config.superAuthorization
16
-
17
- const requestOptions = {
18
- responseType: 'json',
19
- forever: true,
20
- uri: config.host,
21
- followRedirect: false,
22
- headers: {
23
- 'Content-Type': 'application/json; charset=utf-8',
24
- Authorization: authorization,
25
- 'API-Key': apiKey,
26
- SuperAuthorization: superAuthToken,
27
- 'Super-API-Key': superApiKey,
28
- 'User-Agent': 'contrast-cli-v2'
29
- },
30
- agent: getAgent(config)
31
- } as Options
32
-
33
- requestOptions.https = {
34
- rejectUnauthorized: rejectUnauthorized
35
- }
36
-
37
- maybeAddCertsToRequest(config, requestOptions.https)
38
- return requestOptions
39
- }
40
-
41
- function getAgent(config: any) {
42
- return config.proxy
43
- ? (new HttpsProxyAgent({ proxy: config.proxy }) as Agents)
44
- : false
45
- }
46
-
47
- function maybeAddCertsToRequest(config: any, https: HTTPSOptions) {
48
- // cacert
49
- const caCertFilePath = config.cacert
50
- if (caCertFilePath) {
51
- try {
52
- https.certificateAuthority = fs.readFileSync(caCertFilePath)
53
- } catch (error: any) {
54
- throw new Error(
55
- `Unable to read CA from ${caCertFilePath}, msg: ${error.message}`
56
- )
57
- }
58
- }
59
-
60
- // cert
61
- const certPath = config.cert
62
- if (certPath) {
63
- try {
64
- https.certificate = fs.readFileSync(certPath)
65
- } catch (error: any) {
66
- throw new Error(
67
- `Unable to read Certificate PEM file from config option contrast.api.certificate.cert_file='${certPath}', msg: ${error.message}`
68
- )
69
- }
70
- }
71
-
72
- // key
73
- const keyPath = config.key
74
- if (keyPath) {
75
- try {
76
- https.key = fs.readFileSync(keyPath)
77
- } catch (error: any) {
78
- throw new Error(
79
- `Unable to read Key PEM file from config option contrast.api.certificate.key_file='${keyPath}', msg: ${error.message}`
80
- )
81
- }
82
- }
83
- }
@@ -1,53 +0,0 @@
1
- const i18n = require('i18n')
2
- const chalk = require('chalk')
3
-
4
- const commonHelpLinks = () => {
5
- return [
6
- {
7
- header: i18n.__('commonHelpHeader'),
8
- content: [
9
- i18n.__('commonHelpCheckOutHeader') + i18n.__('commonHelpCheckOutText'),
10
- i18n.__('commonHelpLearnMoreHeader') +
11
- i18n.__('commonHelpLearnMoreText'),
12
- i18n.__('commonHelpJoinDiscussionHeader') +
13
- i18n.__('commonHelpJoinDiscussionText')
14
- ]
15
- },
16
- {
17
- header: i18n.__('commonHelpEnterpriseHeader'),
18
- content: [
19
- i18n.__('commonHelpLearnMoreEnterpriseHeader') +
20
- i18n.__('commonHelpLearnMoreEnterpriseText')
21
- ]
22
- },
23
- {
24
- content: [
25
- i18n.__('commonHelpLearnHeader') + i18n.__('commonHelpLearnText')
26
- ]
27
- }
28
- ]
29
- }
30
-
31
- const postRunMessage = commandName => {
32
- console.log('\n' + chalk.underline.bold('Other Features:'))
33
- if (commandName !== 'scan')
34
- console.log(
35
- "'contrast scan' to run Contrast's industry leading SAST scanner"
36
- )
37
- if (commandName !== 'audit')
38
- console.log(
39
- "'contrast audit' to find vulnerabilities in your open source dependencies"
40
- )
41
- if (commandName !== 'lambda')
42
- console.log("'contrast lambda' to secure your AWS serverless functions")
43
-
44
- if (commandName !== 'learn')
45
- console.log(
46
- "'contrast learn' launches Contrast's Secure Code Learning Hub."
47
- )
48
- }
49
-
50
- module.exports = {
51
- commonHelpLinks,
52
- postRunMessage
53
- }
@@ -1,157 +0,0 @@
1
- const i18n = require('i18n')
2
- const chalk = require('chalk')
3
-
4
- const libraryAnalysisError = () => {
5
- console.log(i18n.__('libraryAnalysisError'))
6
- }
7
-
8
- const snapshotFailureError = () => {
9
- console.log(i18n.__('snapshotFailureMessage'))
10
- }
11
-
12
- const vulnerabilitiesFailureError = () => {
13
- console.log(i18n.__('vulnerabilitiesFailureMessage'))
14
- }
15
-
16
- const reportFailureError = () => {
17
- console.log(i18n.__('auditReportFailureMessage'))
18
- }
19
-
20
- const genericError = () => {
21
- console.error(i18n.__('genericErrorMessage'))
22
- process.exit(1)
23
- }
24
-
25
- const unauthenticatedError = () => {
26
- generalError('unauthenticatedErrorHeader', 'unauthenticatedErrorMessage')
27
- }
28
-
29
- const badRequestError = catalogue => {
30
- catalogue === true
31
- ? generalError('badRequestErrorHeader', 'badRequestCatalogueErrorMessage')
32
- : generalError('badRequestErrorHeader', 'badRequestErrorMessage')
33
- }
34
-
35
- const forbiddenError = () => {
36
- generalError('forbiddenRequestErrorHeader', 'forbiddenRequestErrorMessage')
37
- process.exit(1)
38
- }
39
-
40
- const proxyError = () => {
41
- generalError('proxyErrorHeader', 'proxyErrorMessage')
42
- }
43
-
44
- const maxAppError = () => {
45
- generalError(
46
- 'No applications remaining',
47
- 'You have reached the maximum number of application you can create.'
48
- )
49
- process.exit(1)
50
- }
51
-
52
- const parametersError = () => {
53
- generalError(
54
- `Credentials not recognized`,
55
- 'Check your command & keys again for hidden characters / verify that the credentials are correct.\nFor more information use contrast help.'
56
- )
57
- process.exit(1)
58
- }
59
-
60
- const invalidHostNameError = () => {
61
- generalError(
62
- `Invalid host`,
63
- 'Check that the host parameter does not include a trailing "/".'
64
- )
65
- process.exit(1)
66
- }
67
-
68
- const failOptionError = () => {
69
- console.log(
70
- '\n ******************************** ' +
71
- i18n.__('snapshotFailureHeader') +
72
- ' ********************************\n' +
73
- i18n.__('failOptionErrorMessage')
74
- )
75
- }
76
-
77
- /**
78
- * You don't have to pass `i18n` translation.
79
- * String that didn't exists on translations will pass as regular string
80
- * @param header title for the error
81
- * @param message message for the error
82
- * @returns error in general format
83
- */
84
- const getErrorMessage = (header, message) => {
85
- // prettier-ignore
86
- const title = `******************************** ${i18n.__(header)} ********************************`
87
- const multiLine = message?.includes('\n')
88
- let finalMessage = ''
89
-
90
- // i18n split the line if it includes '\n'
91
- if (multiLine) {
92
- finalMessage = `\n${message}`
93
- } else if (message) {
94
- finalMessage = `\n${i18n.__(message)}`
95
- }
96
-
97
- return `${title}${finalMessage}`
98
- }
99
-
100
- const generalError = (header, message) => {
101
- const finalMessage = getErrorMessage(header, message)
102
- console.log(finalMessage)
103
- }
104
-
105
- const findCommandOnError = unknownOptions => {
106
- const commandKeywords = {
107
- auth: 'auth',
108
- audit: 'audit',
109
- scan: 'scan',
110
- lambda: 'lambda',
111
- config: 'config'
112
- }
113
-
114
- const containsCommandKeyword = unknownOptions.some(
115
- command => commandKeywords[command]
116
- )
117
-
118
- if (containsCommandKeyword) {
119
- const foundCommands = unknownOptions.filter(
120
- command => commandKeywords[command]
121
- )
122
-
123
- //return the first command found
124
- return foundCommands[0]
125
- }
126
- }
127
-
128
- const commonMessageFormatter = (message, fail) => {
129
- console.log(chalk.bold(i18n.__(message.title)))
130
- console.log(i18n.__(message.body))
131
- if (message.extra) {
132
- console.log(i18n.__(message.extra))
133
- }
134
- if (fail) {
135
- process.exit(1)
136
- }
137
- }
138
-
139
- module.exports = {
140
- genericError,
141
- unauthenticatedError,
142
- badRequestError,
143
- forbiddenError,
144
- proxyError,
145
- failOptionError,
146
- generalError,
147
- getErrorMessage,
148
- libraryAnalysisError,
149
- findCommandOnError,
150
- snapshotFailureError,
151
- vulnerabilitiesFailureError,
152
- reportFailureError,
153
- maxAppError,
154
- parametersError,
155
- invalidHostNameError,
156
- commonMessageFormatter
157
- }
@@ -1,79 +0,0 @@
1
- const i18n = require('i18n')
2
-
3
- const processFail = (config, reportResults) => {
4
- if (config.severity !== undefined) {
5
- if (
6
- reportResults[config.severity] !== undefined &&
7
- isSeverityViolation(config.severity, reportResults)
8
- ) {
9
- failPipeline('failSeverityOptionErrorMessage')
10
- }
11
- }
12
-
13
- if (config.severity === undefined && reportResults.total > 0) {
14
- failPipeline('failThresholdOptionErrorMessage')
15
- }
16
- }
17
-
18
- const isSeverityViolation = (severity, reportResults) => {
19
- let count = 0
20
- switch (severity) {
21
- case 'critical':
22
- count += reportResults.critical
23
- break
24
- case 'high':
25
- count += reportResults.high + reportResults.critical
26
- break
27
- case 'medium':
28
- count +=
29
- reportResults.medium + reportResults.high + reportResults.critical
30
- break
31
- case 'low':
32
- count +=
33
- reportResults.high +
34
- reportResults.critical +
35
- reportResults.medium +
36
- reportResults.low
37
- break
38
- case 'note':
39
- if (reportResults.note == reportResults.total) {
40
- count = 0
41
- } else {
42
- count = reportResults.total
43
- }
44
- break
45
- default:
46
- count = 0
47
- }
48
- return count > 0
49
- }
50
-
51
- const failPipeline = (message = '') => {
52
- console.log(
53
- '\n ******************************** ' +
54
- i18n.__('snapshotFailureHeader') +
55
- ' *********************************\n' +
56
- i18n.__(message)
57
- )
58
- process.exit(2)
59
- }
60
-
61
- const parseSeverity = severity => {
62
- const severities = ['NOTE', 'LOW', 'MEDIUM', 'HIGH', 'CRITICAL']
63
- if (severities.includes(severity.toUpperCase())) {
64
- return severity.toLowerCase()
65
- } else {
66
- console.log(
67
- severity +
68
- ' Not recognised as a severity type please use LOW, MEDIUM, HIGH, CRITICAL, NOTE'
69
- )
70
- return undefined
71
- }
72
- }
73
-
74
- module.exports = {
75
- failPipeline,
76
- processFail,
77
- isSeverityViolation,
78
- parseSeverity
79
- }
@@ -1,75 +0,0 @@
1
- const { APP_VERSION } = require('../constants/constants')
2
- const boxen = require('boxen')
3
- const chalk = require('chalk')
4
- const semver = require('semver')
5
- const commonApi = require('../utils/commonApi')
6
- const { constants } = require('http2')
7
-
8
- const getLatestVersion = async config => {
9
- const client = commonApi.getHttpClient(config)
10
- try {
11
- const res = await client.getLatestVersion()
12
- if (res.statusCode === constants.HTTP_STATUS_OK) {
13
- return res.body
14
- }
15
- } catch (e) {
16
- return undefined
17
- }
18
- }
19
-
20
- const findLatestCLIVersion = async config => {
21
- const isCI = process.env.CONTRAST_CODESEC_CI
22
- ? JSON.parse(process.env.CONTRAST_CODESEC_CI.toLowerCase())
23
- : false
24
-
25
- if (!isCI) {
26
- let latestCLIVersion = await getLatestVersion(config)
27
-
28
- if (latestCLIVersion === undefined) {
29
- config.set('numOfRuns', 0)
30
- console.log(
31
- 'Failed to retrieve latest version info. Continuing execution.'
32
- )
33
- return
34
- }
35
-
36
- //strip key and remove new lines
37
- latestCLIVersion = latestCLIVersion.substring(8).replace('\n', '')
38
-
39
- if (semver.lt(APP_VERSION, latestCLIVersion)) {
40
- const updateAvailableMessage = `Update available ${chalk.yellow(
41
- APP_VERSION
42
- )} → ${chalk.green(latestCLIVersion)}`
43
-
44
- const npmUpdateAvailableCommand = `Run ${chalk.cyan(
45
- 'npm i @contrast/contrast -g'
46
- )} to update via npm`
47
-
48
- const homebrewUpdateAvailableCommand = `Run ${chalk.cyan(
49
- 'brew install contrastsecurity/tap/contrast'
50
- )} to update via brew`
51
-
52
- console.log(
53
- boxen(
54
- `${updateAvailableMessage}\n${npmUpdateAvailableCommand}\n\n${homebrewUpdateAvailableCommand}`,
55
- {
56
- titleAlignment: 'center',
57
- margin: 1,
58
- padding: 1,
59
- align: 'center'
60
- }
61
- )
62
- )
63
- }
64
- }
65
- }
66
-
67
- const isCorrectNodeVersion = async currentVersion => {
68
- return semver.satisfies(currentVersion, '>=16')
69
- }
70
-
71
- module.exports = {
72
- getLatestVersion,
73
- findLatestCLIVersion,
74
- isCorrectNodeVersion
75
- }