@contrast/contrast 2.0.2-beta.0 → 2.0.2-beta.10

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 (395) hide show
  1. package/README.md +2 -1
  2. package/dist/assess/assessConfig.js +9 -0
  3. package/dist/assess/assessConfig.js.map +1 -0
  4. package/dist/assess/help.js +37 -0
  5. package/dist/assess/help.js.map +1 -0
  6. package/dist/assess/http/index.js +39 -0
  7. package/dist/assess/http/index.js.map +1 -0
  8. package/dist/assess/index.js +69 -0
  9. package/dist/assess/index.js.map +1 -0
  10. package/dist/assess/metadata/findYamlFile.js +59 -0
  11. package/dist/assess/metadata/findYamlFile.js.map +1 -0
  12. package/dist/assess/metadata/index.js +37 -0
  13. package/dist/assess/metadata/index.js.map +1 -0
  14. package/dist/assess/metadata/utils.js +159 -0
  15. package/dist/assess/metadata/utils.js.map +1 -0
  16. package/dist/assess/printing/index.js +11 -0
  17. package/dist/assess/printing/index.js.map +1 -0
  18. package/dist/assess/printing/utils.js +119 -0
  19. package/dist/assess/printing/utils.js.map +1 -0
  20. package/dist/audit/auditConfig.js +9 -0
  21. package/dist/audit/auditConfig.js.map +1 -0
  22. package/dist/{commands/audit → audit}/auditController.js +9 -13
  23. package/dist/audit/auditController.js.map +1 -0
  24. package/dist/audit/auditRequests.js +193 -0
  25. package/dist/audit/auditRequests.js.map +1 -0
  26. package/dist/audit/auditRequestsLegacy.js +63 -0
  27. package/dist/audit/auditRequestsLegacy.js.map +1 -0
  28. package/dist/audit/catalogueApplication/catalogueApplication.js +16 -29
  29. package/dist/audit/catalogueApplication/catalogueApplication.js.map +1 -0
  30. package/dist/audit/help.js +68 -0
  31. package/dist/audit/help.js.map +1 -0
  32. package/dist/audit/languageAnalysisEngine/commonApi.js +12 -14
  33. package/dist/audit/languageAnalysisEngine/commonApi.js.map +1 -0
  34. package/dist/audit/languageAnalysisEngine/filterProjectPath.js +2 -1
  35. package/dist/audit/languageAnalysisEngine/filterProjectPath.js.map +1 -0
  36. package/dist/audit/languageAnalysisEngine/getProjectRootFilenames.js +9 -12
  37. package/dist/audit/languageAnalysisEngine/getProjectRootFilenames.js.map +1 -0
  38. package/dist/audit/languageAnalysisEngine/sendSnapshot.js +18 -30
  39. package/dist/audit/languageAnalysisEngine/sendSnapshot.js.map +1 -0
  40. package/dist/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js +9 -9
  41. package/dist/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js.map +1 -0
  42. package/dist/audit/processAudit.js +21 -0
  43. package/dist/audit/processAudit.js.map +1 -0
  44. package/dist/audit/report/commonReportingFunctions.js +33 -61
  45. package/dist/audit/report/commonReportingFunctions.js.map +1 -0
  46. package/dist/audit/report/models/reportGuidanceModel.js +2 -5
  47. package/dist/audit/report/models/reportGuidanceModel.js.map +1 -0
  48. package/dist/audit/report/models/reportLibraryModel.js +3 -7
  49. package/dist/audit/report/models/reportLibraryModel.js.map +1 -0
  50. package/dist/audit/report/models/reportListModel.js +4 -9
  51. package/dist/audit/report/models/reportListModel.js.map +1 -0
  52. package/dist/audit/report/models/reportOutputModel.js +4 -9
  53. package/dist/audit/report/models/reportOutputModel.js.map +1 -0
  54. package/dist/audit/report/models/reportSeverityModel.js +2 -5
  55. package/dist/audit/report/models/reportSeverityModel.js.map +1 -0
  56. package/dist/audit/report/models/severityCountModel.js +3 -5
  57. package/dist/audit/report/models/severityCountModel.js.map +1 -0
  58. package/dist/audit/report/reportingFeature.js +27 -55
  59. package/dist/audit/report/reportingFeature.js.map +1 -0
  60. package/dist/audit/report/utils/reportUtils.js +28 -59
  61. package/dist/audit/report/utils/reportUtils.js.map +1 -0
  62. package/dist/audit/save.js +14 -16
  63. package/dist/audit/save.js.map +1 -0
  64. package/dist/{commands/audit → audit}/saveFile.js +3 -6
  65. package/dist/audit/saveFile.js.map +1 -0
  66. package/dist/auth/auth.js +103 -0
  67. package/dist/auth/auth.js.map +1 -0
  68. package/dist/auth/authRequests.js +18 -0
  69. package/dist/auth/authRequests.js.map +1 -0
  70. package/dist/cliConstants.js +48 -18
  71. package/dist/cliConstants.js.map +1 -0
  72. package/dist/commands/config/config.js +12 -13
  73. package/dist/commands/config/config.js.map +1 -0
  74. package/dist/commands/learn/learn.js +3 -6
  75. package/dist/commands/learn/learn.js.map +1 -0
  76. package/dist/commands/learn/processLearn.js +3 -6
  77. package/dist/commands/learn/processLearn.js.map +1 -0
  78. package/dist/common/HTTPClient.js +193 -94
  79. package/dist/common/HTTPClient.js.map +1 -0
  80. package/dist/{scan → common}/autoDetection.js +53 -36
  81. package/dist/common/autoDetection.js.map +1 -0
  82. package/dist/common/baseRequest.js +59 -23
  83. package/dist/common/baseRequest.js.map +1 -0
  84. package/dist/common/commonHelp.js +13 -13
  85. package/dist/common/commonHelp.js.map +1 -0
  86. package/dist/common/errorHandling.js +49 -63
  87. package/dist/common/errorHandling.js.map +1 -0
  88. package/dist/common/fail.js +6 -12
  89. package/dist/common/fail.js.map +1 -0
  90. package/dist/common/stringManipulations.js +8 -0
  91. package/dist/common/stringManipulations.js.map +1 -0
  92. package/dist/common/versionChecker.js +16 -19
  93. package/dist/common/versionChecker.js.map +1 -0
  94. package/dist/constants/constants.js +46 -65
  95. package/dist/constants/constants.js.map +1 -0
  96. package/dist/constants/lambda.js +8 -5
  97. package/dist/constants/lambda.js.map +1 -0
  98. package/dist/constants/locales.js +14 -10
  99. package/dist/constants/locales.js.map +1 -0
  100. package/dist/github/fingerprintConfig.js +10 -0
  101. package/dist/github/fingerprintConfig.js.map +1 -0
  102. package/dist/github/processFingerprint.js +25 -0
  103. package/dist/github/processFingerprint.js.map +1 -0
  104. package/dist/github/projectGroup.js +225 -0
  105. package/dist/github/projectGroup.js.map +1 -0
  106. package/dist/github/repoServices.js +91 -0
  107. package/dist/github/repoServices.js.map +1 -0
  108. package/dist/index.js +42 -39
  109. package/dist/index.js.map +1 -0
  110. package/dist/lambda/analytics.js +6 -9
  111. package/dist/lambda/analytics.js.map +1 -0
  112. package/dist/lambda/arn.js +6 -9
  113. package/dist/lambda/arn.js.map +1 -0
  114. package/dist/lambda/aws.js +29 -34
  115. package/dist/lambda/aws.js.map +1 -0
  116. package/dist/lambda/cliError.js +13 -41
  117. package/dist/lambda/cliError.js.map +1 -0
  118. package/dist/lambda/constants.js +3 -4
  119. package/dist/lambda/constants.js.map +1 -0
  120. package/dist/lambda/help.js +39 -44
  121. package/dist/lambda/help.js.map +1 -0
  122. package/dist/lambda/lambda.js +61 -65
  123. package/dist/lambda/lambda.js.map +1 -0
  124. package/dist/lambda/lambdaUtils.js +38 -32
  125. package/dist/lambda/lambdaUtils.js.map +1 -0
  126. package/dist/lambda/logUtils.js +21 -17
  127. package/dist/lambda/logUtils.js.map +1 -0
  128. package/dist/lambda/scanDetailCompletion.js +19 -25
  129. package/dist/lambda/scanDetailCompletion.js.map +1 -0
  130. package/dist/lambda/scanRequest.js +34 -41
  131. package/dist/lambda/scanRequest.js.map +1 -0
  132. package/dist/lambda/scanResults.js +8 -10
  133. package/dist/lambda/scanResults.js.map +1 -0
  134. package/dist/lambda/types.js +5 -7
  135. package/dist/lambda/types.js.map +1 -0
  136. package/dist/lambda/utils.js +33 -35
  137. package/dist/lambda/utils.js.map +1 -0
  138. package/dist/sbom/generateSbom.js +6 -10
  139. package/dist/sbom/generateSbom.js.map +1 -0
  140. package/dist/scaAnalysis/common/auditReport.js +8 -12
  141. package/dist/scaAnalysis/common/auditReport.js.map +1 -0
  142. package/dist/scaAnalysis/common/commonReportingFunctionsSca.js +26 -32
  143. package/dist/scaAnalysis/common/commonReportingFunctionsSca.js.map +1 -0
  144. package/dist/scaAnalysis/common/formatMessage.js +8 -17
  145. package/dist/scaAnalysis/common/formatMessage.js.map +1 -0
  146. package/dist/scaAnalysis/common/models/ScaReportModel.js +4 -9
  147. package/dist/scaAnalysis/common/models/ScaReportModel.js.map +1 -0
  148. package/dist/scaAnalysis/common/scaParserForGoAndJava.js +10 -9
  149. package/dist/scaAnalysis/common/scaParserForGoAndJava.js.map +1 -0
  150. package/dist/scaAnalysis/common/scaServicesUpload.js +59 -90
  151. package/dist/scaAnalysis/common/scaServicesUpload.js.map +1 -0
  152. package/dist/scaAnalysis/common/treeUpload.js +15 -25
  153. package/dist/scaAnalysis/common/treeUpload.js.map +1 -0
  154. package/dist/scaAnalysis/common/utils/reportUtilsSca.js +21 -29
  155. package/dist/scaAnalysis/common/utils/reportUtilsSca.js.map +1 -0
  156. package/dist/scaAnalysis/dotnet/analysis.js +12 -18
  157. package/dist/scaAnalysis/dotnet/analysis.js.map +1 -0
  158. package/dist/scaAnalysis/dotnet/index.js +4 -7
  159. package/dist/scaAnalysis/dotnet/index.js.map +1 -0
  160. package/dist/scaAnalysis/go/goAnalysis.js +8 -11
  161. package/dist/scaAnalysis/go/goAnalysis.js.map +1 -0
  162. package/dist/scaAnalysis/go/goParseDeps.js +9 -7
  163. package/dist/scaAnalysis/go/goParseDeps.js.map +1 -0
  164. package/dist/scaAnalysis/go/goReadDepFile.js +10 -8
  165. package/dist/scaAnalysis/go/goReadDepFile.js.map +1 -0
  166. package/dist/scaAnalysis/java/analysis.js +23 -20
  167. package/dist/scaAnalysis/java/analysis.js.map +1 -0
  168. package/dist/scaAnalysis/java/index.js +7 -10
  169. package/dist/scaAnalysis/java/index.js.map +1 -0
  170. package/dist/scaAnalysis/java/javaBuildDepsParser.js +43 -43
  171. package/dist/scaAnalysis/java/javaBuildDepsParser.js.map +1 -0
  172. package/dist/scaAnalysis/javascript/analysis.js +16 -20
  173. package/dist/scaAnalysis/javascript/analysis.js.map +1 -0
  174. package/dist/scaAnalysis/javascript/index.js +17 -19
  175. package/dist/scaAnalysis/javascript/index.js.map +1 -0
  176. package/dist/scaAnalysis/javascript/scaServiceParser.js +8 -15
  177. package/dist/scaAnalysis/javascript/scaServiceParser.js.map +1 -0
  178. package/dist/scaAnalysis/legacy/legacyFlow.js +13 -15
  179. package/dist/scaAnalysis/legacy/legacyFlow.js.map +1 -0
  180. package/dist/scaAnalysis/php/analysis.js +15 -16
  181. package/dist/scaAnalysis/php/analysis.js.map +1 -0
  182. package/dist/scaAnalysis/php/index.js +5 -8
  183. package/dist/scaAnalysis/php/index.js.map +1 -0
  184. package/dist/scaAnalysis/php/phpNewServicesMapper.js +9 -12
  185. package/dist/scaAnalysis/php/phpNewServicesMapper.js.map +1 -0
  186. package/dist/scaAnalysis/processServicesFlow.js +86 -32
  187. package/dist/scaAnalysis/processServicesFlow.js.map +1 -0
  188. package/dist/scaAnalysis/python/analysis.js +16 -23
  189. package/dist/scaAnalysis/python/analysis.js.map +1 -0
  190. package/dist/scaAnalysis/python/index.js +4 -7
  191. package/dist/scaAnalysis/python/index.js.map +1 -0
  192. package/dist/scaAnalysis/repoMode/gradleParser.js +7 -13
  193. package/dist/scaAnalysis/repoMode/gradleParser.js.map +1 -0
  194. package/dist/scaAnalysis/repoMode/index.js +9 -12
  195. package/dist/scaAnalysis/repoMode/index.js.map +1 -0
  196. package/dist/scaAnalysis/repoMode/mavenParser.js +109 -73
  197. package/dist/scaAnalysis/repoMode/mavenParser.js.map +1 -0
  198. package/dist/scaAnalysis/ruby/analysis.js +32 -46
  199. package/dist/scaAnalysis/ruby/analysis.js.map +1 -0
  200. package/dist/scaAnalysis/ruby/index.js +5 -8
  201. package/dist/scaAnalysis/ruby/index.js.map +1 -0
  202. package/dist/scaAnalysis/scaAnalysis.js +49 -51
  203. package/dist/scaAnalysis/scaAnalysis.js.map +1 -0
  204. package/dist/scan/fileUtils.js +36 -40
  205. package/dist/scan/fileUtils.js.map +1 -0
  206. package/dist/scan/formatScanOutput.js +47 -61
  207. package/dist/scan/formatScanOutput.js.map +1 -0
  208. package/dist/scan/help.js +8 -11
  209. package/dist/scan/help.js.map +1 -0
  210. package/dist/scan/models/groupedResultsModel.js +2 -5
  211. package/dist/scan/models/groupedResultsModel.js.map +1 -0
  212. package/dist/scan/models/resultContentModel.js +2 -2
  213. package/dist/scan/models/resultContentModel.js.map +1 -0
  214. package/dist/scan/models/scanResultsModel.js +2 -5
  215. package/dist/scan/models/scanResultsModel.js.map +1 -0
  216. package/dist/scan/populateProjectIdAndProjectName.js +22 -60
  217. package/dist/scan/populateProjectIdAndProjectName.js.map +1 -0
  218. package/dist/scan/processScan.js +28 -0
  219. package/dist/scan/processScan.js.map +1 -0
  220. package/dist/scan/saveResults.js +3 -6
  221. package/dist/scan/saveResults.js.map +1 -0
  222. package/dist/scan/scan.js +33 -53
  223. package/dist/scan/scan.js.map +1 -0
  224. package/dist/scan/scanConfig.js +14 -12
  225. package/dist/scan/scanConfig.js.map +1 -0
  226. package/dist/scan/scanController.js +19 -21
  227. package/dist/scan/scanController.js.map +1 -0
  228. package/dist/scan/scanRequests.js +86 -0
  229. package/dist/scan/scanRequests.js.map +1 -0
  230. package/dist/scan/scanResults.js +26 -72
  231. package/dist/scan/scanResults.js.map +1 -0
  232. package/dist/telemetry/telemetry.js +29 -59
  233. package/dist/telemetry/telemetry.js.map +1 -0
  234. package/dist/utils/capabilities.js +2 -1
  235. package/dist/utils/capabilities.js.map +1 -0
  236. package/dist/utils/commonApi.js +58 -50
  237. package/dist/utils/commonApi.js.map +1 -0
  238. package/dist/utils/filterProjectPath.js +2 -1
  239. package/dist/utils/filterProjectPath.js.map +1 -0
  240. package/dist/utils/generalAPI.js +11 -33
  241. package/dist/utils/generalAPI.js.map +1 -0
  242. package/dist/utils/getConfig.js +8 -13
  243. package/dist/utils/getConfig.js.map +1 -0
  244. package/dist/utils/oraWrapper.js +7 -14
  245. package/dist/utils/oraWrapper.js.map +1 -0
  246. package/dist/utils/paramsUtil/commandlineParams.js +2 -5
  247. package/dist/utils/paramsUtil/commandlineParams.js.map +1 -0
  248. package/dist/utils/paramsUtil/configStoreParams.js +9 -10
  249. package/dist/utils/paramsUtil/configStoreParams.js.map +1 -0
  250. package/dist/utils/paramsUtil/envVariableParams.js +2 -3
  251. package/dist/utils/paramsUtil/envVariableParams.js.map +1 -0
  252. package/dist/utils/paramsUtil/paramHandler.js +12 -13
  253. package/dist/utils/paramsUtil/paramHandler.js.map +1 -0
  254. package/dist/utils/parsedCLIOptions.js +4 -7
  255. package/dist/utils/parsedCLIOptions.js.map +1 -0
  256. package/dist/utils/requestUtils.js +7 -13
  257. package/dist/utils/requestUtils.js.map +1 -0
  258. package/dist/utils/saveFile.js +8 -11
  259. package/dist/utils/saveFile.js.map +1 -0
  260. package/dist/utils/validationCheck.js +5 -11
  261. package/dist/utils/validationCheck.js.map +1 -0
  262. package/package.json +40 -48
  263. package/.prettierignore +0 -1
  264. package/bin/contrast.js +0 -2
  265. package/dist/audit/languageAnalysisEngine/util/requestUtils.js +0 -14
  266. package/dist/commands/audit/auditConfig.js +0 -12
  267. package/dist/commands/audit/help.js +0 -70
  268. package/dist/commands/audit/processAudit.js +0 -24
  269. package/dist/commands/auth/auth.js +0 -120
  270. package/dist/commands/github/fingerprintConfig.js +0 -13
  271. package/dist/commands/github/processFingerprint.js +0 -28
  272. package/dist/commands/github/projectGroup.js +0 -254
  273. package/dist/commands/github/repoServices.js +0 -108
  274. package/dist/commands/scan/processScan.js +0 -31
  275. package/dist/lambda/__mocks__/aws.js +0 -21
  276. package/dist/lambda/__mocks__/lambdaConfig.json +0 -42
  277. package/src/audit/catalogueApplication/catalogueApplication.js +0 -51
  278. package/src/audit/languageAnalysisEngine/commonApi.js +0 -20
  279. package/src/audit/languageAnalysisEngine/filterProjectPath.js +0 -21
  280. package/src/audit/languageAnalysisEngine/getProjectRootFilenames.js +0 -36
  281. package/src/audit/languageAnalysisEngine/sendSnapshot.js +0 -57
  282. package/src/audit/languageAnalysisEngine/util/requestUtils.js +0 -17
  283. package/src/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js +0 -63
  284. package/src/audit/report/commonReportingFunctions.js +0 -412
  285. package/src/audit/report/models/reportGuidanceModel.ts +0 -5
  286. package/src/audit/report/models/reportLibraryModel.ts +0 -30
  287. package/src/audit/report/models/reportListModel.ts +0 -49
  288. package/src/audit/report/models/reportOutputModel.ts +0 -29
  289. package/src/audit/report/models/reportSeverityModel.ts +0 -18
  290. package/src/audit/report/models/severityCountModel.ts +0 -22
  291. package/src/audit/report/reportingFeature.ts +0 -110
  292. package/src/audit/report/utils/reportUtils.ts +0 -165
  293. package/src/audit/save.js +0 -67
  294. package/src/cliConstants.js +0 -522
  295. package/src/commands/audit/auditConfig.js +0 -18
  296. package/src/commands/audit/auditController.js +0 -50
  297. package/src/commands/audit/help.js +0 -72
  298. package/src/commands/audit/processAudit.js +0 -34
  299. package/src/commands/audit/saveFile.js +0 -15
  300. package/src/commands/auth/auth.js +0 -146
  301. package/src/commands/config/config.js +0 -41
  302. package/src/commands/github/fingerprintConfig.js +0 -19
  303. package/src/commands/github/processFingerprint.js +0 -37
  304. package/src/commands/github/projectGroup.js +0 -294
  305. package/src/commands/github/repoServices.js +0 -122
  306. package/src/commands/learn/learn.js +0 -10
  307. package/src/commands/learn/processLearn.js +0 -13
  308. package/src/commands/scan/processScan.js +0 -42
  309. package/src/common/HTTPClient.js +0 -775
  310. package/src/common/baseRequest.ts +0 -83
  311. package/src/common/commonHelp.js +0 -53
  312. package/src/common/errorHandling.js +0 -157
  313. package/src/common/fail.js +0 -79
  314. package/src/common/versionChecker.js +0 -75
  315. package/src/constants/constants.js +0 -71
  316. package/src/constants/lambda.js +0 -85
  317. package/src/constants/locales.js +0 -365
  318. package/src/index.ts +0 -142
  319. package/src/lambda/__mocks__/aws.ts +0 -32
  320. package/src/lambda/__mocks__/lambdaConfig.json +0 -42
  321. package/src/lambda/analytics.ts +0 -9
  322. package/src/lambda/arn.ts +0 -33
  323. package/src/lambda/aws.ts +0 -248
  324. package/src/lambda/cliError.ts +0 -72
  325. package/src/lambda/constants.ts +0 -11
  326. package/src/lambda/help.ts +0 -92
  327. package/src/lambda/lambda.ts +0 -230
  328. package/src/lambda/lambdaUtils.ts +0 -111
  329. package/src/lambda/logUtils.ts +0 -64
  330. package/src/lambda/scanDetailCompletion.ts +0 -78
  331. package/src/lambda/scanRequest.ts +0 -169
  332. package/src/lambda/scanResults.ts +0 -29
  333. package/src/lambda/types.ts +0 -36
  334. package/src/lambda/utils.ts +0 -188
  335. package/src/sbom/generateSbom.ts +0 -45
  336. package/src/scaAnalysis/common/auditReport.js +0 -59
  337. package/src/scaAnalysis/common/commonReportingFunctionsSca.js +0 -276
  338. package/src/scaAnalysis/common/formatMessage.js +0 -67
  339. package/src/scaAnalysis/common/models/ScaReportModel.ts +0 -81
  340. package/src/scaAnalysis/common/scaParserForGoAndJava.js +0 -41
  341. package/src/scaAnalysis/common/scaServicesUpload.js +0 -155
  342. package/src/scaAnalysis/common/treeUpload.js +0 -51
  343. package/src/scaAnalysis/common/utils/reportUtilsSca.ts +0 -123
  344. package/src/scaAnalysis/dotnet/analysis.js +0 -72
  345. package/src/scaAnalysis/dotnet/index.js +0 -11
  346. package/src/scaAnalysis/go/goAnalysis.js +0 -26
  347. package/src/scaAnalysis/go/goParseDeps.js +0 -203
  348. package/src/scaAnalysis/go/goReadDepFile.js +0 -34
  349. package/src/scaAnalysis/java/analysis.js +0 -148
  350. package/src/scaAnalysis/java/index.js +0 -29
  351. package/src/scaAnalysis/java/javaBuildDepsParser.js +0 -439
  352. package/src/scaAnalysis/javascript/analysis.js +0 -111
  353. package/src/scaAnalysis/javascript/index.js +0 -104
  354. package/src/scaAnalysis/javascript/scaServiceParser.js +0 -151
  355. package/src/scaAnalysis/legacy/legacyFlow.js +0 -43
  356. package/src/scaAnalysis/php/analysis.js +0 -78
  357. package/src/scaAnalysis/php/index.js +0 -28
  358. package/src/scaAnalysis/php/phpNewServicesMapper.js +0 -77
  359. package/src/scaAnalysis/processServicesFlow.js +0 -119
  360. package/src/scaAnalysis/python/analysis.js +0 -93
  361. package/src/scaAnalysis/python/index.js +0 -16
  362. package/src/scaAnalysis/repoMode/gradleParser.js +0 -88
  363. package/src/scaAnalysis/repoMode/index.js +0 -21
  364. package/src/scaAnalysis/repoMode/mavenParser.js +0 -112
  365. package/src/scaAnalysis/ruby/analysis.js +0 -413
  366. package/src/scaAnalysis/ruby/index.js +0 -16
  367. package/src/scaAnalysis/scaAnalysis.js +0 -171
  368. package/src/scan/autoDetection.js +0 -175
  369. package/src/scan/fileUtils.js +0 -206
  370. package/src/scan/formatScanOutput.ts +0 -225
  371. package/src/scan/help.js +0 -56
  372. package/src/scan/models/groupedResultsModel.ts +0 -20
  373. package/src/scan/models/resultContentModel.ts +0 -86
  374. package/src/scan/models/scanResultsModel.ts +0 -55
  375. package/src/scan/populateProjectIdAndProjectName.js +0 -73
  376. package/src/scan/saveResults.js +0 -14
  377. package/src/scan/scan.ts +0 -68
  378. package/src/scan/scanConfig.js +0 -58
  379. package/src/scan/scanController.js +0 -98
  380. package/src/scan/scanResults.js +0 -171
  381. package/src/telemetry/telemetry.ts +0 -154
  382. package/src/utils/capabilities.js +0 -12
  383. package/src/utils/commonApi.js +0 -103
  384. package/src/utils/filterProjectPath.js +0 -25
  385. package/src/utils/generalAPI.js +0 -52
  386. package/src/utils/getConfig.ts +0 -34
  387. package/src/utils/oraWrapper.js +0 -29
  388. package/src/utils/paramsUtil/commandlineParams.js +0 -12
  389. package/src/utils/paramsUtil/configStoreParams.js +0 -19
  390. package/src/utils/paramsUtil/envVariableParams.js +0 -10
  391. package/src/utils/paramsUtil/paramHandler.js +0 -38
  392. package/src/utils/parsedCLIOptions.js +0 -32
  393. package/src/utils/requestUtils.js +0 -29
  394. package/src/utils/saveFile.js +0 -20
  395. package/src/utils/validationCheck.js +0 -39
@@ -1,413 +0,0 @@
1
- const fs = require('fs')
2
- const i18n = require('i18n')
3
-
4
- const getRubyDeps = (config, languageFiles) => {
5
- try {
6
- checkForCorrectFiles(languageFiles)
7
- const parsedGem = readAndParseGemfile(config.file)
8
- const parsedLock = readAndParseGemLockFile(config.file)
9
- if (config.legacy === false) {
10
- const rubyArray = removeRedundantAndPopulateDefinedElements(
11
- parsedLock.sources
12
- )
13
- let rubyTree = createRubyTree(rubyArray)
14
- findChildrenDependencies(rubyTree)
15
- processRootDependencies(parsedLock.dependencies, rubyTree)
16
- return rubyTree
17
- } else {
18
- return { gemfilesDependanceies: parsedGem, gemfileLock: parsedLock }
19
- }
20
- } catch (err) {
21
- throw err
22
- }
23
- }
24
-
25
- const readAndParseGemfile = file => {
26
- const gemFile = fs.readFileSync(file + '/Gemfile', 'utf8')
27
- const rubyArray = gemFile.split('\n')
28
-
29
- let filteredRubyDep = rubyArray.filter(element => {
30
- return (
31
- !element.includes('#') &&
32
- element.includes('gem') &&
33
- !element.includes('source')
34
- )
35
- })
36
-
37
- for (let i = 0; i < filteredRubyDep.length; i++) {
38
- filteredRubyDep[i] = filteredRubyDep[i].trim()
39
- }
40
-
41
- return filteredRubyDep
42
- }
43
-
44
- const readAndParseGemLockFile = file => {
45
- const lockFile = fs.readFileSync(file + '/Gemfile.lock', 'utf8')
46
- const dependencyRegEx = /^\s*([A-Za-z0-9.!@#$%\-^&*_+]*)\s*(\((.*?)\))/
47
-
48
- const lines = lockFile.split('\n')
49
-
50
- return {
51
- dependencies: getDirectDependencies(lines, dependencyRegEx),
52
- runtimeDetails: getLockFileRuntimeInfo(lines),
53
- sources: getSourceArray(lines, dependencyRegEx)
54
- }
55
- }
56
-
57
- const nonDependencyKeys = (line, sourceObject) => {
58
- const GEMFILE_KEY_VALUE = /^\s*([^:(]*)\s*\:*\s*(.*)/
59
- let parts = GEMFILE_KEY_VALUE.exec(line)
60
- let key = parts[1].trim()
61
- let value = parts[2] || ''
62
-
63
- sourceObject[key] = value
64
- return sourceObject
65
- }
66
-
67
- const populateResolveAndPlatform = (version, sourceObject) => {
68
- const depArr = version.split('-')
69
- sourceObject.resolved = depArr[0]
70
- sourceObject.platform = depArr.length > 1 ? depArr[1] : 'UNSPECIFIED'
71
- return sourceObject
72
- }
73
-
74
- const isUpperCase = str => {
75
- return str === str.toUpperCase()
76
- }
77
-
78
- const getDirectDependencies = (lines, dependencyRegEx) => {
79
- const dependencies = {}
80
-
81
- let depIndex = 0
82
- for (let i = 0; i < lines.length; i++) {
83
- if (lines[i] === 'DEPENDENCIES') {
84
- depIndex = i
85
- }
86
- }
87
- const getDepArray = lines.slice(depIndex)
88
-
89
- for (let j = 1; j < getDepArray.length; j++) {
90
- const element = getDepArray[j]
91
- if (!isUpperCase(element)) {
92
- const isDependencyWithVersion = dependencyRegEx.test(element)
93
- if (isDependencyWithVersion) {
94
- const dependency = dependencyRegEx.exec(element)
95
- let name = dependency[1]
96
- name = name.replace('!', '')
97
- dependencies[name.trim()] = dependency[3]
98
- } else {
99
- let name = element
100
- name = name.replace('!', ' ')
101
- dependencies[name.trim()] = 'UNSPECIFIED'
102
- }
103
- }
104
- }
105
-
106
- return dependencies
107
- }
108
-
109
- const getLockFileRuntimeInfo = lines => {
110
- let rubVersionIndex = 0
111
- for (let i = 0; i < lines.length; i++) {
112
- if (lines[i] === 'RUBY VERSION') {
113
- rubVersionIndex = i
114
- break
115
- }
116
- }
117
-
118
- const runtimeDetails = {}
119
- if (rubVersionIndex !== 0) {
120
- const getRubyVersionArray = lines.slice(rubVersionIndex)
121
-
122
- for (let element of getRubyVersionArray) {
123
- if (!isUpperCase(element)) {
124
- runtimeDetails['version'] = getVersion(element)
125
- runtimeDetails['patchLevel'] = getPatchLevel(element)
126
-
127
- if (element.includes('engine')) {
128
- let splitElement = element.split(' ')
129
- runtimeDetails[splitElement[0]] = splitElement[1]
130
- }
131
- }
132
- }
133
- }
134
- return runtimeDetails
135
- }
136
-
137
- const getVersion = element => {
138
- const versionRegex = /^([ruby\s0-9.*]+)/
139
- if (versionRegex.test(element)) {
140
- let version = versionRegex.exec(element)[0]
141
-
142
- if (version.includes('ruby')) {
143
- return trimWhiteSpace(version.replace('ruby', ''))
144
- }
145
- }
146
- }
147
-
148
- const getPatchLevel = element => {
149
- const patchLevelRegex = /(p\d+)/
150
- if (patchLevelRegex.test(element)) {
151
- return patchLevelRegex.exec(element)[0]
152
- }
153
- }
154
-
155
- const formatSourceArr = sourceArr => {
156
- return sourceArr.map(element => {
157
- if (element.sourceType === 'GIT') {
158
- delete element.specs
159
- }
160
-
161
- if (element.sourceType === 'GEM') {
162
- delete element.branch
163
- delete element.revision
164
- delete element.depthLevel
165
- delete element.specs
166
- }
167
-
168
- if (element.sourceType === 'PATH') {
169
- delete element.branch
170
- delete element.revision
171
- delete element.depthLevel
172
- delete element.specs
173
- delete element.platform
174
- }
175
- return element
176
- })
177
- }
178
-
179
- const getSourceArray = (lines, dependencyRegEx) => {
180
- const sourceObject = {
181
- dependencies: {}
182
- }
183
-
184
- const whitespaceRegx = /^(\s*)/
185
- let index = 0
186
-
187
- let line = 0
188
- const sources = []
189
- while ((line = lines[index++]) !== undefined) {
190
- let currentWS = whitespaceRegx.exec(line)[1].length
191
- if (!line.includes(' bundler (')) {
192
- if (currentWS === 0 && !line.includes(':') && line !== '') {
193
- sourceObject.sourceType = line
194
- }
195
-
196
- if (currentWS !== 0 && line.includes(':')) {
197
- nonDependencyKeys(line, sourceObject)
198
- }
199
-
200
- if (currentWS > 2) {
201
- let nexlineWS = whitespaceRegx.exec(lines[index])[1].length
202
- sourceObject.dependencies = buildSourceDependencyWithVersion(
203
- whitespaceRegx,
204
- dependencyRegEx,
205
- line,
206
- currentWS,
207
- sourceObject.name,
208
- sourceObject.dependencies
209
- )
210
-
211
- if (currentWS === 4 && sourceObject.depthLevel === undefined) {
212
- const dependency = dependencyRegEx.exec(line)
213
- sourceObject.name = dependency[1]
214
- sourceObject.depthLevel = currentWS
215
- populateResolveAndPlatform(dependency[3], sourceObject)
216
- }
217
-
218
- if (currentWS === 4 && sourceObject.depthLevel) {
219
- // create new Parent
220
- const dependency = dependencyRegEx.exec(line)
221
- sourceObject.name = dependency[1]
222
- sourceObject.depthLevel = currentWS
223
- populateResolveAndPlatform(dependency[3], sourceObject)
224
- }
225
-
226
- if (
227
- (currentWS === 4 && nexlineWS === 4) ||
228
- (currentWS === 6 && nexlineWS === 4) ||
229
- nexlineWS == ''
230
- ) {
231
- let newObj = {}
232
- newObj = JSON.parse(JSON.stringify(sourceObject))
233
- sources.push(newObj)
234
- sourceObject.dependencies = {}
235
- }
236
- }
237
- }
238
- }
239
- return formatSourceArr(sources)
240
- }
241
-
242
- const buildSourceDependencyWithVersion = (
243
- whitespaceRegx,
244
- dependencyRegEx,
245
- line,
246
- currentWhiteSpace,
247
- name,
248
- dependencies
249
- ) => {
250
- const isDependencyWithVersion = dependencyRegEx.test(line)
251
-
252
- if (currentWhiteSpace === 6) {
253
- const dependency = dependencyRegEx.exec(line)
254
- if (isDependencyWithVersion) {
255
- if (name !== dependency[1]) {
256
- dependencies[dependency[1]] = dependency[3]
257
- }
258
- } else {
259
- dependencies[line.trim()] = 'UNSPECIFIED'
260
- }
261
- }
262
-
263
- return dependencies
264
- }
265
-
266
- const processRootDependencies = (rootDependencies, rubyTree) => {
267
- const getParentObjectByName = queryToken =>
268
- Object.values(rubyTree).filter(({ name }) => name === queryToken)
269
-
270
- for (let parent in rootDependencies) {
271
- let parentObject = getParentObjectByName(parent)
272
-
273
- // ignore root dependencies that don't have a resolved version
274
- if (parentObject[0]) {
275
- let gav =
276
- parentObject[0].group +
277
- '/' +
278
- parentObject[0].name +
279
- '@' +
280
- parentObject[0].version
281
-
282
- rubyTree[gav] = parentObject[0]
283
- rubyTree[gav].directDependency = true
284
- }
285
- }
286
- return rubyTree
287
- }
288
-
289
- const createRubyTree = rubyArray => {
290
- let rubyTree = {}
291
- for (let x in rubyArray) {
292
- let version = rubyArray[x].resolved
293
-
294
- let gav = rubyArray[x].group + '/' + rubyArray[x].name + '@' + version
295
- rubyTree[gav] = rubyArray[x]
296
- rubyTree[gav].directDependency = false
297
- rubyTree[gav].version = version
298
-
299
- // add dependency array if none exists
300
- if (!rubyTree[gav].dependencies) {
301
- rubyTree[gav].dependencies = []
302
- }
303
-
304
- delete rubyTree[gav].resolved
305
- }
306
- return rubyTree
307
- }
308
-
309
- const findChildrenDependencies = rubyTree => {
310
- for (let dep in rubyTree) {
311
- let unResolvedChildDepsKey = Object.keys(rubyTree[dep].dependencies)
312
- rubyTree[dep].dependencies = resolveVersionOfChildDependencies(
313
- unResolvedChildDepsKey,
314
- rubyTree
315
- )
316
- }
317
- }
318
-
319
- const resolveVersionOfChildDependencies = (
320
- unResolvedChildDepsKey,
321
- rubyObject
322
- ) => {
323
- const getParentObjectByName = queryToken =>
324
- Object.values(rubyObject).filter(({ name }) => name === queryToken)
325
- let resolvedChildrenDependencies = []
326
- for (let childDep in unResolvedChildDepsKey) {
327
- let childDependencyName = unResolvedChildDepsKey[childDep]
328
- let parent = getParentObjectByName(childDependencyName)
329
- resolvedChildrenDependencies.push(
330
- 'null/' + childDependencyName + '@' + parent[0].version
331
- )
332
- }
333
- return resolvedChildrenDependencies
334
- }
335
-
336
- const removeRedundantAndPopulateDefinedElements = deps => {
337
- return deps.map(element => {
338
- if (element.sourceType === 'GIT') {
339
- delete element.sourceType
340
- delete element.remote
341
- delete element.platform
342
-
343
- element.group = null
344
- element.productionDependency = true
345
- }
346
-
347
- if (element.sourceType === 'GEM') {
348
- element.group = null
349
- element.productionDependency = true
350
-
351
- delete element.sourceType
352
- delete element.remote
353
- delete element.platform
354
- }
355
-
356
- if (element.sourceType === 'PATH') {
357
- element.group = null
358
- element.productionDependency = true
359
-
360
- delete element.platform
361
- delete element.sourceType
362
- delete element.remote
363
- }
364
-
365
- if (element.sourceType === 'BUNDLED WITH') {
366
- element.group = null
367
- element.productionDependency = true
368
-
369
- delete element.sourceType
370
- delete element.remote
371
- delete element.branch
372
- delete element.revision
373
- delete element.depthLevel
374
- delete element.specs
375
- delete element.platform
376
- }
377
- return element
378
- })
379
- }
380
-
381
- const checkForCorrectFiles = languageFiles => {
382
- if (!languageFiles.includes('Gemfile.lock')) {
383
- throw new Error(i18n.__('languageAnalysisHasNoLockFile', 'ruby'))
384
- }
385
-
386
- if (!languageFiles.includes('Gemfile')) {
387
- throw new Error(i18n.__('languageAnalysisProjectFileError', 'ruby'))
388
- }
389
- }
390
-
391
- const trimWhiteSpace = string => {
392
- return string.replace(/\s+/g, '')
393
- }
394
-
395
- module.exports = {
396
- getRubyDeps,
397
- readAndParseGemfile,
398
- readAndParseGemLockFile,
399
- nonDependencyKeys,
400
- populateResolveAndPlatform,
401
- isUpperCase,
402
- getDirectDependencies,
403
- getLockFileRuntimeInfo,
404
- getVersion,
405
- getPatchLevel,
406
- formatSourceArr,
407
- getSourceArray,
408
- checkForCorrectFiles,
409
- removeRedundantAndPopulateDefinedElements,
410
- createRubyTree,
411
- findChildrenDependencies,
412
- processRootDependencies
413
- }
@@ -1,16 +0,0 @@
1
- const analysis = require('./analysis')
2
- const { createRubyTSMessage } = require('../common/formatMessage')
3
-
4
- const rubyAnalysis = (config, languageFiles) => {
5
- const rubyDeps = analysis.getRubyDeps(config, languageFiles.RUBY)
6
-
7
- if (config.legacy === false) {
8
- return rubyDeps
9
- } else {
10
- return createRubyTSMessage(rubyDeps)
11
- }
12
- }
13
-
14
- module.exports = {
15
- rubyAnalysis
16
- }
@@ -1,171 +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('../scan/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
- autoDetection.dealWithMultiJava(filesFound)
52
-
53
- if (filesFound.length > 1 && pathWithFile) {
54
- filesFound = filesFound.filter(i =>
55
- Object.values(i)[0].includes(path.basename(config.fileName))
56
- )
57
- }
58
-
59
- // files found looks like [ { javascript: [ Array ] } ]
60
- //check we have the language and call the right analyser
61
- let messageToSend = undefined
62
- if (filesFound.length === 1) {
63
- config.packageManager = filesFound[0]?.packageManager
64
- switch (Object.keys(filesFound[0])[0]) {
65
- case JAVA:
66
- config.language = JAVA
67
- if (config.repo && !config.legacy) {
68
- try {
69
- messageToSend = await repoMode.buildRepo(config, filesFound[0])
70
- } catch (e) {
71
- throw new Error(
72
- 'Unable to build in repository mode. Check your project file'
73
- )
74
- }
75
- } else {
76
- messageToSend = await javaAnalysis.javaAnalysis(config, filesFound[0])
77
- }
78
- break
79
- case JAVASCRIPT:
80
- messageToSend = await jsAnalysis.jsAnalysis(config, filesFound[0])
81
- config.language = NODE
82
- break
83
- case PYTHON:
84
- messageToSend = pythonAnalysis(config, filesFound[0])
85
- config.language = PYTHON
86
- break
87
- case RUBY:
88
- messageToSend = rubyAnalysis(config, filesFound[0])
89
- config.language = RUBY
90
- break
91
- case PHP:
92
- messageToSend = phpAnalysis(config, filesFound[0])
93
- config.language = PHP
94
- break
95
- case GO:
96
- messageToSend = goAnalysis(config, filesFound[0])
97
- config.language = GO
98
- break
99
- case DOTNET:
100
- if (config.legacy === false) {
101
- console.log(
102
- `${chalk.bold(
103
- '\n.NET project found\n'
104
- )} Language type is unsupported.`
105
- )
106
- return
107
- } else {
108
- messageToSend = dotNetAnalysis(config, filesFound[0])
109
- config.language = DOTNET
110
- break
111
- }
112
- default:
113
- //something is wrong
114
- console.log('No supported language detected in project path')
115
- return
116
- }
117
-
118
- if (config.legacy === false) {
119
- if (!config.name) {
120
- config = await projectConfig.dealWithNoName(config)
121
- }
122
- const startTime = performance.now()
123
- console.log('') //empty log for space before spinner
124
- const reportSpinner = returnOra(i18n.__('auditSCAAnalysisBegins'))
125
- startSpinner(reportSpinner)
126
-
127
- let reportResponse = await processServices.processUpload(
128
- messageToSend,
129
- config,
130
- reportSpinner
131
- )
132
-
133
- const reportModelLibraryList = convertGenericToTypedReportModelSca(
134
- reportResponse.reportArray
135
- )
136
- await auditReport.processAuditReport(
137
- config,
138
- reportModelLibraryList,
139
- reportResponse.reportId
140
- )
141
-
142
- succeedSpinner(reportSpinner, i18n.__('auditSCAAnalysisComplete'))
143
-
144
- const endTime = performance.now() - startTime
145
- const scanDurationMs = endTime - startTime
146
- console.log(
147
- `----- completed in ${(scanDurationMs / 1000).toFixed(2)}s -----`
148
- )
149
- } else {
150
- await legacyFlow(config, messageToSend)
151
- }
152
- } else {
153
- if (filesFound.length === 0) {
154
- console.log(i18n.__('languageAnalysisNoLanguage'))
155
- console.log(i18n.__('languageAnalysisNoLanguageHelpLine'))
156
- throw new Error()
157
- } else {
158
- console.log(chalk.bold(`\nMultiple language files detected \n`))
159
- filesFound.forEach(file => {
160
- console.log(`${Object.keys(file)[0]} : `, Object.values(file)[0])
161
- })
162
- throw new Error(
163
- `Please use --file to audit one language only. \nExample: contrast audit --file package-lock.json`
164
- )
165
- }
166
- }
167
- }
168
-
169
- module.exports = {
170
- processSca
171
- }