@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,151 +0,0 @@
1
- const parseJS = rawNode => {
2
- let dependencyTree = {}
3
- let combinedPackageJSONDep = {
4
- ...rawNode.packageJSON?.dependencies,
5
- ...rawNode.packageJSON?.devDependencies
6
- }
7
- let analyseLock = chooseLockFile(rawNode)
8
-
9
- if (analyseLock.type === 'yarn') {
10
- dependencyTree = yarnCreateDepTree(
11
- dependencyTree,
12
- combinedPackageJSONDep,
13
- analyseLock.lockFile,
14
- rawNode
15
- )
16
- }
17
-
18
- if (analyseLock.type === 'npm') {
19
- dependencyTree = npmCreateDepTree(
20
- dependencyTree,
21
- combinedPackageJSONDep,
22
- analyseLock.lockFile,
23
- rawNode
24
- )
25
- }
26
-
27
- return dependencyTree
28
- }
29
-
30
- const npmCreateDepTree = (
31
- dependencyTree,
32
- combinedPackageJSONDep,
33
- packageLock,
34
- rawNode
35
- ) => {
36
- for (const [key, value] of Object.entries(packageLock)) {
37
- dependencyTree[key] = {
38
- name: key,
39
- version: getResolvedVersion(key, packageLock),
40
- group: null,
41
- productionDependency: checkIfInPackageJSON(
42
- rawNode.packageJSON.dependencies,
43
- key
44
- ),
45
- directDependency: checkIfInPackageJSON(combinedPackageJSONDep, key),
46
- dependencies: createNPMChildDependencies(packageLock, key)
47
- }
48
- }
49
- return dependencyTree
50
- }
51
-
52
- const yarnCreateDepTree = (
53
- dependencyTree,
54
- combinedPackageJSONDep,
55
- packageLock,
56
- rawNode
57
- ) => {
58
- for (const [key, value] of Object.entries(packageLock)) {
59
- let gav = getNameFromGAV(key)
60
- let nag = getDepNameWithoutVersion(key)
61
- dependencyTree[key] = {
62
- name: gav,
63
- version: getResolvedVersion(key, packageLock),
64
- group: null,
65
- productionDependency: checkIfInPackageJSON(
66
- rawNode.packageJSON.dependencies,
67
- nag
68
- ),
69
- directDependency: checkIfInPackageJSON(combinedPackageJSONDep, nag),
70
- dependencies: createChildDependencies(packageLock, key)
71
- }
72
- }
73
- return dependencyTree
74
- }
75
-
76
- const chooseLockFile = rawNode => {
77
- if (rawNode?.yarn?.yarnLockFile !== undefined) {
78
- return { lockFile: rawNode?.yarn?.yarnLockFile?.object, type: 'yarn' }
79
- } else if (rawNode.npmLockFile !== undefined) {
80
- return { lockFile: rawNode?.npmLockFile?.parsedPackages, type: 'npm' }
81
- } else {
82
- return undefined
83
- }
84
- }
85
-
86
- const createKeyName = (dep, version) => {
87
- return dep + '@' + version
88
- }
89
-
90
- const checkIfInPackageJSON = (list, dep) => {
91
- return Object.keys(list).includes(dep)
92
- }
93
-
94
- const createChildDependencies = (lockFileDep, currentDep) => {
95
- let depArray = []
96
- if (lockFileDep[currentDep]?.dependencies) {
97
- for (const [key, value] of Object.entries(
98
- lockFileDep[currentDep]?.dependencies
99
- )) {
100
- depArray.push(createKeyName(key, value))
101
- }
102
- }
103
- return depArray
104
- }
105
-
106
- const createNPMChildDependencies = (lockFileDep, currentDep) => {
107
- let depArray = []
108
- if (lockFileDep[currentDep]?.dependencies) {
109
- for (const [key, value] of Object.entries(
110
- lockFileDep[currentDep]?.dependencies
111
- )) {
112
- depArray.push(key)
113
- }
114
- }
115
- return depArray
116
- }
117
-
118
- const getDepNameWithoutVersion = depKey => {
119
- let dependency = depKey.split('@')
120
- if (dependency.length - 1 > 1) {
121
- return '@' + dependency[1]
122
- }
123
- return dependency[0]
124
- }
125
-
126
- const getNameFromGAV = depKey => {
127
- let dependency = depKey.split('/')
128
- if (dependency.length == 2) {
129
- dependency = getDepNameWithoutVersion(dependency[1])
130
- return dependency
131
- }
132
- if (dependency.length == 1) {
133
- dependency = getDepNameWithoutVersion(depKey)
134
- return dependency
135
- }
136
- //what should we do if there's no version? The service will fall over but do we want to throw error for only one wrong version?
137
- return depKey
138
- }
139
-
140
- const getResolvedVersion = (depKey, packageLock) => {
141
- return packageLock[depKey]?.version
142
- }
143
-
144
- module.exports = {
145
- parseJS,
146
- checkIfInPackageJSON,
147
- getNameFromGAV,
148
- getResolvedVersion,
149
- chooseLockFile,
150
- createNPMChildDependencies
151
- }
@@ -1,43 +0,0 @@
1
- const auditController = require('../../commands/audit/auditController')
2
- const {
3
- returnOra,
4
- startSpinner,
5
- succeedSpinner
6
- } = require('../../utils/oraWrapper')
7
- const i18n = require('i18n')
8
- const treeUpload = require('../common/treeUpload')
9
- const {
10
- pollForSnapshotCompletion
11
- } = require('../../audit/languageAnalysisEngine/sendSnapshot')
12
- const { vulnerabilityReportV2 } = require('../../audit/report/reportingFeature')
13
- const { auditSave } = require('../../audit/save')
14
-
15
- const legacyFlow = async (config, messageToSend) => {
16
- const startTime = performance.now()
17
- if (!config.applicationId) {
18
- config.applicationId = await auditController.dealWithNoAppId(config)
19
- }
20
-
21
- console.log('') //empty log for space before spinner
22
- //send message to TS
23
- const reportSpinner = returnOra(i18n.__('auditSCAAnalysisBegins'))
24
- startSpinner(reportSpinner)
25
- const snapshotResponse = await treeUpload.commonSendSnapShot(
26
- messageToSend,
27
- config
28
- )
29
-
30
- // poll for completion
31
- await pollForSnapshotCompletion(config, snapshotResponse.id, reportSpinner)
32
- succeedSpinner(reportSpinner, i18n.__('auditSCAAnalysisComplete'))
33
-
34
- await vulnerabilityReportV2(config, snapshotResponse.id)
35
- const endTime = performance.now() - startTime
36
- const scanDurationMs = endTime - startTime
37
-
38
- console.log(`----- completed in ${(scanDurationMs / 1000).toFixed(2)}s -----`)
39
- }
40
-
41
- module.exports = {
42
- legacyFlow
43
- }
@@ -1,78 +0,0 @@
1
- const fs = require('fs')
2
- const i18n = require('i18n')
3
- const _ = require('lodash')
4
-
5
- const readFile = (config, nameOfFile) => {
6
- if (config.file) {
7
- try {
8
- return fs.readFileSync(config.file + '/' + nameOfFile, 'utf8')
9
- } catch (error) {
10
- console.log('Unable to find file')
11
- console.log(error)
12
- }
13
- }
14
- }
15
-
16
- const parseProjectFiles = php => {
17
- try {
18
- // composer.json
19
- php.composerJSON.dependencies = php.composerJSON.require
20
- php.composerJSON.devDependencies = php.composerJSON['require-dev']
21
-
22
- // composer.lock
23
- php.lockFile = php.rawLockFileContents
24
- let packages = _.keyBy(php.lockFile.packages, 'name')
25
- let packagesDev = _.keyBy(php.lockFile['packages-dev'], 'name')
26
- php.lockFile.dependencies = _.merge(packages, packagesDev)
27
-
28
- const listOfTopDep = Object.keys(php.lockFile.dependencies)
29
-
30
- Object.entries(php.lockFile.dependencies).forEach(([key, value]) => {
31
- if (value.require) {
32
- const listOfRequiresDep = Object.keys(value.require)
33
- listOfRequiresDep.forEach(dep => {
34
- if (!listOfTopDep.includes(dep)) {
35
- addChildDepToLockFileAsOwnObj(php, value['require'], dep)
36
- }
37
- })
38
- }
39
-
40
- if (value['require-dev']) {
41
- const listOfRequiresDep = Object.keys(value['require-dev'])
42
- listOfRequiresDep.forEach(dep => {
43
- if (!listOfTopDep.includes(dep)) {
44
- addChildDepToLockFileAsOwnObj(php, value['require-dev'], dep)
45
- }
46
- })
47
- }
48
- })
49
- formatParentDepToLockFile(php)
50
- delete php.rawLockFileContents
51
- return php
52
- } catch (err) {
53
- return console.log(i18n.__('phpParseComposerLock', php) + `${err.message}`) // not sure on this
54
- }
55
- }
56
-
57
- function addChildDepToLockFileAsOwnObj(php, depObj, key) {
58
- php.lockFile.dependencies[key] = { version: depObj[key] }
59
- }
60
-
61
- function formatParentDepToLockFile(php) {
62
- for (const [key, value] of Object.entries(php.lockFile.dependencies)) {
63
- let requires = {}
64
- for (const [childKey, childValue] of Object.entries(value)) {
65
- if (childKey === 'require' || childKey === 'require-dev') {
66
- requires = _.merge(requires, childValue)
67
- php.lockFile.dependencies[key].requires = requires
68
- delete php.lockFile.dependencies[key].require
69
- delete php.lockFile.dependencies[key]['require-dev']
70
- }
71
- }
72
- }
73
- }
74
-
75
- module.exports = {
76
- parseProjectFiles,
77
- readFile
78
- }
@@ -1,28 +0,0 @@
1
- const { readFile, parseProjectFiles } = require('./analysis')
2
- const { createPhpTSMessage } = require('../common/formatMessage')
3
- const { parsePHPLockFileForScaServices } = require('./phpNewServicesMapper')
4
-
5
- const phpAnalysis = config => {
6
- let analysis = readFiles(config)
7
-
8
- if (config.legacy === false) {
9
- return parsePHPLockFileForScaServices(analysis.rawLockFileContents)
10
- } else {
11
- const phpDep = parseProjectFiles(analysis)
12
- return createPhpTSMessage(phpDep)
13
- }
14
- }
15
-
16
- const readFiles = config => {
17
- let php = {}
18
-
19
- php.composerJSON = JSON.parse(readFile(config, 'composer.json'))
20
-
21
- php.rawLockFileContents = JSON.parse(readFile(config, 'composer.lock'))
22
-
23
- return php
24
- }
25
-
26
- module.exports = {
27
- phpAnalysis: phpAnalysis
28
- }
@@ -1,77 +0,0 @@
1
- const { keyBy, merge } = require('lodash')
2
-
3
- const parsePHPLockFileForScaServices = phpLockFile => {
4
- const packages = keyBy(phpLockFile.packages, 'name')
5
- const packagesDev = keyBy(phpLockFile['packages-dev'], 'name')
6
-
7
- return merge(buildDepTree(packages, true), buildDepTree(packagesDev, false))
8
- }
9
-
10
- const buildDepTree = (packages, productionDependency) => {
11
- //builds deps into flat structure
12
- const dependencyTree = {}
13
-
14
- for (const packagesKey in packages) {
15
- const currentObj = packages[packagesKey]
16
- const { group, name } = findGroupAndName(currentObj.name)
17
-
18
- const key = `${group}/${name}@${currentObj.version}`
19
- dependencyTree[key] = {
20
- group: group,
21
- name: name,
22
- version: currentObj.version,
23
- directDependency: true,
24
- productionDependency: productionDependency,
25
- dependencies: []
26
- }
27
-
28
- const mergedChildDeps = merge(
29
- buildSubDepsIntoFlatStructure(currentObj.require),
30
- buildSubDepsIntoFlatStructure(currentObj['require-dev'])
31
- )
32
-
33
- for (const childKey in mergedChildDeps) {
34
- const { group, name } = findGroupAndName(childKey)
35
- const builtKey = `${group}/${name}`
36
- dependencyTree[builtKey] = mergedChildDeps[childKey]
37
- }
38
- }
39
- return dependencyTree
40
- }
41
-
42
- // currently sub deps will be built into a flat structure
43
- // but not ingested via the new services as they do not have concrete versions
44
- const buildSubDepsIntoFlatStructure = childDeps => {
45
- const dependencyTree = {}
46
-
47
- for (const dep in childDeps) {
48
- const version = childDeps[dep]
49
- const { group, name } = findGroupAndName(dep)
50
- const key = `${group}/${name}`
51
- dependencyTree[key] = {
52
- group: group,
53
- name: name,
54
- version: version,
55
- directDependency: false,
56
- productionDependency: false,
57
- dependencies: []
58
- }
59
- }
60
- return dependencyTree
61
- }
62
-
63
- const findGroupAndName = groupAndName => {
64
- if (groupAndName.includes('/')) {
65
- const groupName = groupAndName.split('/')
66
- return { group: groupName[0], name: groupName[1] }
67
- } else {
68
- return { group: groupAndName, name: groupAndName }
69
- }
70
- }
71
-
72
- module.exports = {
73
- parsePHPLockFileForScaServices,
74
- buildDepTree,
75
- buildSubDepsIntoFlatStructure,
76
- findGroupAndName
77
- }
@@ -1,126 +0,0 @@
1
- const projectConfig = require('../commands/github/projectGroup')
2
- const repoService = require('../commands/github/repoServices')
3
- const scaServicesUpload = require('../scaAnalysis/common/scaServicesUpload')
4
- const { shortenFilePath } = require('../scan/fileUtils')
5
-
6
- const dealWithNoProjectId = async (analysis, config, reportSpinner) => {
7
- await projectConfig.registerNewProjectGroup(config)
8
- let projectId = await projectConfig.getProjectIdByOrg(config)
9
- await projectConfig.registerProjectIdOnCliServices(config, projectId)
10
- config.projectId = projectId
11
- return await scaServicesUpload.scaTreeUpload(analysis, config, reportSpinner)
12
- }
13
-
14
- const repoProcess = async (analysis, config, reportSpinner) => {
15
- if (config.debug || config.verbose) {
16
- console.log('in repository process')
17
- console.log('repository id: ', config.repositoryId)
18
- }
19
- if (config.repositoryId === '') {
20
- console.log('Failed to retrieve Repository Id')
21
- process.exit(1)
22
- }
23
-
24
- let shortenedProjectName = shortenFilePath(config.fileName)
25
-
26
- let repoInfo = await repoService.retrieveProjectInfoViaRepoId(config)
27
-
28
- repoInfo = repoInfo.find(
29
- element =>
30
- config.fileName === element.path &&
31
- shortenedProjectName === element.name &&
32
- config.projectGroupId === element.projectGroupId
33
- )
34
-
35
- // console.log('repoInfo', repoInfo)
36
-
37
- // if(repoInfo !== undefined) {
38
- // console.log('re-register / register first time')
39
- // const language = repoInfo.language === 'JAVASCRIPT' ? 'NODE' : repoInfo.language
40
- // const additionalData = {
41
- // projectGroupId: repoInfo.projectGroupId,
42
- // projectGroupName: repoInfo.name,
43
- // projectLanguage: language,
44
- // projectType: 'REPOSITORY'
45
- // }
46
- //
47
- // // check project exists in sca / register (just in case, it failed in the past)
48
- // await projectConfig.registerProjectIdOnCliServices(
49
- // config,
50
- // repoInfo.projectId,
51
- // additionalData
52
- // )
53
- // }
54
-
55
- if (
56
- config.projectGroupId &&
57
- !repoInfo?.projectId &&
58
- (repoInfo === undefined || repoInfo.length === 0)
59
- ) {
60
- console.log(
61
- '*** has projectGroupId, no projectId and repo has no project found that matches'
62
- )
63
- repoInfo = await projectConfig.registerProjectWithGroupProjectId(
64
- config,
65
- shortenedProjectName
66
- )
67
- console.log('new registered group', repoInfo)
68
- const language =
69
- repoInfo.language === 'JAVASCRIPT' ? 'NODE' : repoInfo.language
70
-
71
- // const additionalData = {
72
- // projectGroupId: repoInfo.projectGroupId,
73
- // projectGroupName: repoInfo.name,
74
- // projectLanguage: language,
75
- // projectType: 'REPOSITORY'
76
- // }
77
-
78
- await projectConfig.registerProjectIdOnCliServices(
79
- config,
80
- repoInfo.projectId,
81
- shortenedProjectName
82
- )
83
- }
84
- config.projectId = repoInfo.projectId
85
- return await scaServicesUpload.scaTreeUpload(analysis, config, reportSpinner)
86
- }
87
-
88
- const trackProcess = async (analysis, config, reportSpinner) => {
89
- let projectId = await projectConfig.getProjectIdByOrg(config)
90
-
91
- if (projectId === '') {
92
- return dealWithNoProjectId(analysis, config, reportSpinner)
93
- }
94
- config.projectId = projectId
95
- // we can always register just in case but normally we exit when
96
- await projectConfig.registerProjectIdOnCliServices(config, projectId)
97
- return await scaServicesUpload.scaTreeUpload(analysis, config, reportSpinner)
98
- }
99
-
100
- const processUpload = async (analysis, config, reportSpinner) => {
101
- // if repo but no repoId -> RegisterRepo -> GroupProjectFlow THEN scaTreeUpload
102
- // if cli tracked but no projectId -> registerNewProjectGroup THEN scaTreeUpload
103
- // if cli not tracked and no projectID -> noProjectUpload
104
- // if cli not tracked and projectID -> scaTreeUpload}
105
-
106
- if (config.repositoryId) {
107
- return repoProcess(analysis, config, reportSpinner)
108
- }
109
-
110
- if (config.track) {
111
- return trackProcess(analysis, config, reportSpinner)
112
- }
113
-
114
- if (!config.track) {
115
- return await scaServicesUpload.noProjectUpload(
116
- analysis,
117
- config,
118
- reportSpinner
119
- )
120
- }
121
- }
122
-
123
- module.exports = {
124
- processUpload,
125
- repoProcess
126
- }
@@ -1,93 +0,0 @@
1
- const multiReplace = require('string-multiple-replace')
2
- const fs = require('fs')
3
- const i18n = require('i18n')
4
-
5
- const readAndParseProjectFile = file => {
6
- const filePath = filePathForWindows(file + '/Pipfile')
7
- const pipFile = fs.readFileSync(filePath, 'utf8')
8
-
9
- const matcherObj = { '"': '' }
10
- const sequencer = ['"']
11
- const parsedPipfile = multiReplace(pipFile, matcherObj, sequencer)
12
-
13
- const pythonArray = parsedPipfile.split('\n')
14
-
15
- return pythonArray.filter(element => element !== '' && !element.includes('#'))
16
- }
17
-
18
- const readAndParseLockFile = file => {
19
- const filePath = filePathForWindows(file + '/Pipfile.lock')
20
- const lockFile = fs.readFileSync(filePath, 'utf8')
21
- let parsedPipLock = JSON.parse(lockFile)
22
- parsedPipLock['defaults'] = parsedPipLock['default']
23
- delete parsedPipLock['default']
24
- return parsedPipLock
25
- }
26
-
27
- const readLockFile = file => {
28
- const filePath = filePathForWindows(file + '/Pipfile.lock')
29
- const lockFile = fs.readFileSync(filePath, 'utf8')
30
- let parsedPipLock = JSON.parse(lockFile)
31
- return parsedPipLock['default']
32
- }
33
-
34
- const scaPythonParser = pythonDependencies => {
35
- let pythonParsedDeps = {}
36
- for (let key in pythonDependencies) {
37
- pythonParsedDeps[key] = {}
38
- pythonParsedDeps[key].version = pythonDependencies[key].version.replace(
39
- '==',
40
- ''
41
- )
42
- pythonParsedDeps[key].group = null
43
- pythonParsedDeps[key].name = key
44
- pythonParsedDeps[key].productionDependency = true
45
- pythonParsedDeps[key].dependencies = []
46
- pythonParsedDeps[key].directDependency = true
47
- }
48
- return pythonParsedDeps
49
- }
50
-
51
- const checkForCorrectFiles = languageFiles => {
52
- if (!languageFiles.includes('Pipfile.lock')) {
53
- throw new Error(i18n.__('languageAnalysisHasNoLockFile', 'python'))
54
- }
55
-
56
- if (!languageFiles.includes('Pipfile')) {
57
- throw new Error(i18n.__('languageAnalysisProjectFileError', 'python'))
58
- }
59
- }
60
-
61
- const getPythonDeps = (config, languageFiles) => {
62
- try {
63
- if (config.legacy === false) {
64
- let pythonLockFileContents = readLockFile(config.file)
65
- return scaPythonParser(pythonLockFileContents)
66
- } else {
67
- checkForCorrectFiles(languageFiles)
68
- const parseProject = readAndParseProjectFile(config.file)
69
- const parsePip = readAndParseLockFile(config.file)
70
-
71
- return { pipfileLock: parsePip, pipfilDependanceies: parseProject }
72
- }
73
- } catch (err) {
74
- console.log(err.message.toString())
75
- process.exit(1)
76
- }
77
- }
78
-
79
- const filePathForWindows = path => {
80
- if (process.platform === 'win32') {
81
- path = path.replace(/\//g, '\\')
82
- }
83
- return path
84
- }
85
-
86
- module.exports = {
87
- getPythonDeps,
88
- scaPythonParser,
89
- readAndParseLockFile,
90
- readAndParseProjectFile,
91
- checkForCorrectFiles,
92
- readLockFile
93
- }
@@ -1,16 +0,0 @@
1
- const { createPythonTSMessage } = require('../common/formatMessage')
2
- const { getPythonDeps, secondaryParser } = require('./analysis')
3
-
4
- const pythonAnalysis = (config, languageFiles) => {
5
- const pythonDeps = getPythonDeps(config, languageFiles.PYTHON)
6
-
7
- if (config.legacy === false) {
8
- return pythonDeps
9
- } else {
10
- return createPythonTSMessage(pythonDeps)
11
- }
12
- }
13
-
14
- module.exports = {
15
- pythonAnalysis
16
- }
@@ -1,88 +0,0 @@
1
- const g2js = require('gradle-to-js/lib/parser')
2
-
3
- const readBuildGradleFile = async project => {
4
- const gradleFilePath = project.cwd + '/build.gradle'
5
- return await g2js.parseFile(gradleFilePath)
6
- }
7
-
8
- const filterGav = (groupId, artifactId, version, gradleJson) => {
9
- if (groupId === '') {
10
- if (artifactId.includes(':')) {
11
- groupId = artifactId.split(':')[0].replace("'", '')
12
- }
13
- }
14
-
15
- if (version === '') {
16
- if (artifactId.includes(':')) {
17
- artifactId.split(':').length > 2
18
- ? (version = artifactId.split(':')[2].replace("'", ''))
19
- : (version = null)
20
- }
21
- }
22
-
23
- if (artifactId.split(':').length > 1) {
24
- artifactId = artifactId.split(':')[1].replace("'", '')
25
- }
26
-
27
- if (version === null) {
28
- version = getVersion(gradleJson, groupId)
29
- }
30
- return { groupId, artifactId, version }
31
- }
32
-
33
- const parseGradleJson = gradleJson => {
34
- let deps = gradleJson.dependencies
35
- let dependencyTree = {}
36
-
37
- if (deps === undefined) {
38
- console.log('Unable to find any dependencies in your project file.')
39
- process.exit(0)
40
- }
41
-
42
- for (let a in deps) {
43
- let dependencyType = deps[a].type
44
-
45
- if (dependencyType === 'implementation') {
46
- let groupId = deps[a].group
47
- let artifactId = deps[a].name
48
- let version = deps[a].version
49
-
50
- let filteredGav = filterGav(groupId, artifactId, version, gradleJson)
51
-
52
- let depName =
53
- filteredGav.groupId +
54
- '/' +
55
- filteredGav.artifactId +
56
- '@' +
57
- filteredGav.version
58
-
59
- let parsedDependency = {
60
- name: filteredGav.artifactId,
61
- group: filteredGav.groupId,
62
- version: filteredGav.version,
63
- directDependency: true,
64
- isProduction: true,
65
- dependencies: []
66
- }
67
- dependencyTree[depName] = parsedDependency
68
- }
69
- }
70
- return dependencyTree
71
- }
72
-
73
- const getVersion = (gradleJson, dependencyWithoutVersion) => {
74
- let parentVersion = gradleJson.plugins[0].version
75
- let parentGroupName = gradleJson.plugins[0].id
76
- if (parentGroupName === dependencyWithoutVersion) {
77
- return parentVersion
78
- } else {
79
- return null
80
- }
81
- }
82
-
83
- module.exports = {
84
- readBuildGradleFile,
85
- parseGradleJson,
86
- getVersion,
87
- filterGav
88
- }