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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/README.md +51 -1
  2. package/dist/audit/catalogueApplication/catalogueApplication.js +6 -10
  3. package/dist/audit/catalogueApplication/catalogueApplication.js.map +1 -0
  4. package/dist/audit/languageAnalysisEngine/commonApi.js +3 -6
  5. package/dist/audit/languageAnalysisEngine/commonApi.js.map +1 -0
  6. package/dist/audit/languageAnalysisEngine/filterProjectPath.js +1 -0
  7. package/dist/audit/languageAnalysisEngine/filterProjectPath.js.map +1 -0
  8. package/dist/audit/languageAnalysisEngine/getProjectRootFilenames.js +9 -12
  9. package/dist/audit/languageAnalysisEngine/getProjectRootFilenames.js.map +1 -0
  10. package/dist/audit/languageAnalysisEngine/sendSnapshot.js +15 -19
  11. package/dist/audit/languageAnalysisEngine/sendSnapshot.js.map +1 -0
  12. package/dist/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js +9 -9
  13. package/dist/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js.map +1 -0
  14. package/dist/audit/report/commonReportingFunctions.js +33 -48
  15. package/dist/audit/report/commonReportingFunctions.js.map +1 -0
  16. package/dist/audit/report/models/reportGuidanceModel.js +2 -5
  17. package/dist/audit/report/models/reportGuidanceModel.js.map +1 -0
  18. package/dist/audit/report/models/reportLibraryModel.js +3 -7
  19. package/dist/audit/report/models/reportLibraryModel.js.map +1 -0
  20. package/dist/audit/report/models/reportListModel.js +4 -9
  21. package/dist/audit/report/models/reportListModel.js.map +1 -0
  22. package/dist/audit/report/models/reportOutputModel.js +4 -9
  23. package/dist/audit/report/models/reportOutputModel.js.map +1 -0
  24. package/dist/audit/report/models/reportSeverityModel.js +2 -5
  25. package/dist/audit/report/models/reportSeverityModel.js.map +1 -0
  26. package/dist/audit/report/models/severityCountModel.js +3 -5
  27. package/dist/audit/report/models/severityCountModel.js.map +1 -0
  28. package/dist/audit/report/reportingFeature.js +27 -55
  29. package/dist/audit/report/reportingFeature.js.map +1 -0
  30. package/dist/audit/report/utils/reportUtils.js +28 -59
  31. package/dist/audit/report/utils/reportUtils.js.map +1 -0
  32. package/dist/audit/save.js +14 -16
  33. package/dist/audit/save.js.map +1 -0
  34. package/dist/cliConstants.js +17 -18
  35. package/dist/cliConstants.js.map +1 -0
  36. package/dist/commands/audit/auditConfig.js +7 -10
  37. package/dist/commands/audit/auditConfig.js.map +1 -0
  38. package/dist/commands/audit/auditController.js +9 -13
  39. package/dist/commands/audit/auditController.js.map +1 -0
  40. package/dist/commands/audit/help.js +23 -25
  41. package/dist/commands/audit/help.js.map +1 -0
  42. package/dist/commands/audit/processAudit.js +9 -12
  43. package/dist/commands/audit/processAudit.js.map +1 -0
  44. package/dist/commands/audit/saveFile.js +3 -6
  45. package/dist/commands/audit/saveFile.js.map +1 -0
  46. package/dist/commands/auth/auth.js +25 -24
  47. package/dist/commands/auth/auth.js.map +1 -0
  48. package/dist/commands/config/config.js +12 -13
  49. package/dist/commands/config/config.js.map +1 -0
  50. package/dist/commands/github/fingerprintConfig.js +8 -11
  51. package/dist/commands/github/fingerprintConfig.js.map +1 -0
  52. package/dist/commands/github/processFingerprint.js +12 -15
  53. package/dist/commands/github/processFingerprint.js.map +1 -0
  54. package/dist/commands/github/projectGroup.js +25 -32
  55. package/dist/commands/github/projectGroup.js.map +1 -0
  56. package/dist/commands/github/repoServices.js +11 -21
  57. package/dist/commands/github/repoServices.js.map +1 -0
  58. package/dist/commands/learn/learn.js +3 -6
  59. package/dist/commands/learn/learn.js.map +1 -0
  60. package/dist/commands/learn/processLearn.js +3 -6
  61. package/dist/commands/learn/processLearn.js.map +1 -0
  62. package/dist/commands/scan/processScan.js +11 -14
  63. package/dist/commands/scan/processScan.js.map +1 -0
  64. package/dist/common/HTTPClient.js +123 -94
  65. package/dist/common/HTTPClient.js.map +1 -0
  66. package/dist/common/autoDetection.js +26 -33
  67. package/dist/common/autoDetection.js.map +1 -0
  68. package/dist/common/baseRequest.js +14 -18
  69. package/dist/common/baseRequest.js.map +1 -0
  70. package/dist/common/commonHelp.js +13 -13
  71. package/dist/common/commonHelp.js.map +1 -0
  72. package/dist/common/errorHandling.js +30 -39
  73. package/dist/common/errorHandling.js.map +1 -0
  74. package/dist/common/fail.js +6 -12
  75. package/dist/common/fail.js.map +1 -0
  76. package/dist/common/versionChecker.js +16 -19
  77. package/dist/common/versionChecker.js.map +1 -0
  78. package/dist/constants/constants.js +44 -65
  79. package/dist/constants/constants.js.map +1 -0
  80. package/dist/constants/lambda.js +8 -5
  81. package/dist/constants/lambda.js.map +1 -0
  82. package/dist/constants/locales.js +6 -9
  83. package/dist/constants/locales.js.map +1 -0
  84. package/dist/index.js +36 -39
  85. package/dist/index.js.map +1 -0
  86. package/dist/lambda/analytics.js +6 -9
  87. package/dist/lambda/analytics.js.map +1 -0
  88. package/dist/lambda/arn.js +6 -9
  89. package/dist/lambda/arn.js.map +1 -0
  90. package/dist/lambda/aws.js +29 -34
  91. package/dist/lambda/aws.js.map +1 -0
  92. package/dist/lambda/cliError.js +13 -41
  93. package/dist/lambda/cliError.js.map +1 -0
  94. package/dist/lambda/constants.js +3 -4
  95. package/dist/lambda/constants.js.map +1 -0
  96. package/dist/lambda/help.js +39 -44
  97. package/dist/lambda/help.js.map +1 -0
  98. package/dist/lambda/lambda.js +61 -65
  99. package/dist/lambda/lambda.js.map +1 -0
  100. package/dist/lambda/lambdaUtils.js +38 -32
  101. package/dist/lambda/lambdaUtils.js.map +1 -0
  102. package/dist/lambda/logUtils.js +21 -17
  103. package/dist/lambda/logUtils.js.map +1 -0
  104. package/dist/lambda/scanDetailCompletion.js +19 -25
  105. package/dist/lambda/scanDetailCompletion.js.map +1 -0
  106. package/dist/lambda/scanRequest.js +34 -41
  107. package/dist/lambda/scanRequest.js.map +1 -0
  108. package/dist/lambda/scanResults.js +8 -10
  109. package/dist/lambda/scanResults.js.map +1 -0
  110. package/dist/lambda/types.js +5 -7
  111. package/dist/lambda/types.js.map +1 -0
  112. package/dist/lambda/utils.js +33 -35
  113. package/dist/lambda/utils.js.map +1 -0
  114. package/dist/sbom/generateSbom.js +6 -10
  115. package/dist/sbom/generateSbom.js.map +1 -0
  116. package/dist/scaAnalysis/common/auditReport.js +8 -12
  117. package/dist/scaAnalysis/common/auditReport.js.map +1 -0
  118. package/dist/scaAnalysis/common/commonReportingFunctionsSca.js +26 -32
  119. package/dist/scaAnalysis/common/commonReportingFunctionsSca.js.map +1 -0
  120. package/dist/scaAnalysis/common/formatMessage.js +8 -17
  121. package/dist/scaAnalysis/common/formatMessage.js.map +1 -0
  122. package/dist/scaAnalysis/common/models/ScaReportModel.js +4 -9
  123. package/dist/scaAnalysis/common/models/ScaReportModel.js.map +1 -0
  124. package/dist/scaAnalysis/common/scaParserForGoAndJava.js +10 -9
  125. package/dist/scaAnalysis/common/scaParserForGoAndJava.js.map +1 -0
  126. package/dist/scaAnalysis/common/scaServicesUpload.js +21 -22
  127. package/dist/scaAnalysis/common/scaServicesUpload.js.map +1 -0
  128. package/dist/scaAnalysis/common/treeUpload.js +7 -10
  129. package/dist/scaAnalysis/common/treeUpload.js.map +1 -0
  130. package/dist/scaAnalysis/common/utils/reportUtilsSca.js +21 -29
  131. package/dist/scaAnalysis/common/utils/reportUtilsSca.js.map +1 -0
  132. package/dist/scaAnalysis/dotnet/analysis.js +12 -18
  133. package/dist/scaAnalysis/dotnet/analysis.js.map +1 -0
  134. package/dist/scaAnalysis/dotnet/index.js +4 -7
  135. package/dist/scaAnalysis/dotnet/index.js.map +1 -0
  136. package/dist/scaAnalysis/go/goAnalysis.js +8 -11
  137. package/dist/scaAnalysis/go/goAnalysis.js.map +1 -0
  138. package/dist/scaAnalysis/go/goParseDeps.js +9 -7
  139. package/dist/scaAnalysis/go/goParseDeps.js.map +1 -0
  140. package/dist/scaAnalysis/go/goReadDepFile.js +10 -8
  141. package/dist/scaAnalysis/go/goReadDepFile.js.map +1 -0
  142. package/dist/scaAnalysis/java/analysis.js +23 -20
  143. package/dist/scaAnalysis/java/analysis.js.map +1 -0
  144. package/dist/scaAnalysis/java/index.js +7 -10
  145. package/dist/scaAnalysis/java/index.js.map +1 -0
  146. package/dist/scaAnalysis/java/javaBuildDepsParser.js +43 -43
  147. package/dist/scaAnalysis/java/javaBuildDepsParser.js.map +1 -0
  148. package/dist/scaAnalysis/javascript/analysis.js +16 -20
  149. package/dist/scaAnalysis/javascript/analysis.js.map +1 -0
  150. package/dist/scaAnalysis/javascript/index.js +17 -19
  151. package/dist/scaAnalysis/javascript/index.js.map +1 -0
  152. package/dist/scaAnalysis/javascript/scaServiceParser.js +8 -15
  153. package/dist/scaAnalysis/javascript/scaServiceParser.js.map +1 -0
  154. package/dist/scaAnalysis/legacy/legacyFlow.js +13 -15
  155. package/dist/scaAnalysis/legacy/legacyFlow.js.map +1 -0
  156. package/dist/scaAnalysis/php/analysis.js +15 -16
  157. package/dist/scaAnalysis/php/analysis.js.map +1 -0
  158. package/dist/scaAnalysis/php/index.js +5 -8
  159. package/dist/scaAnalysis/php/index.js.map +1 -0
  160. package/dist/scaAnalysis/php/phpNewServicesMapper.js +9 -12
  161. package/dist/scaAnalysis/php/phpNewServicesMapper.js.map +1 -0
  162. package/dist/scaAnalysis/processServicesFlow.js +50 -25
  163. package/dist/scaAnalysis/processServicesFlow.js.map +1 -0
  164. package/dist/scaAnalysis/python/analysis.js +16 -23
  165. package/dist/scaAnalysis/python/analysis.js.map +1 -0
  166. package/dist/scaAnalysis/python/index.js +4 -7
  167. package/dist/scaAnalysis/python/index.js.map +1 -0
  168. package/dist/scaAnalysis/repoMode/gradleParser.js +7 -13
  169. package/dist/scaAnalysis/repoMode/gradleParser.js.map +1 -0
  170. package/dist/scaAnalysis/repoMode/index.js +9 -12
  171. package/dist/scaAnalysis/repoMode/index.js.map +1 -0
  172. package/dist/scaAnalysis/repoMode/mavenParser.js +12 -12
  173. package/dist/scaAnalysis/repoMode/mavenParser.js.map +1 -0
  174. package/dist/scaAnalysis/ruby/analysis.js +32 -46
  175. package/dist/scaAnalysis/ruby/analysis.js.map +1 -0
  176. package/dist/scaAnalysis/ruby/index.js +5 -8
  177. package/dist/scaAnalysis/ruby/index.js.map +1 -0
  178. package/dist/scaAnalysis/scaAnalysis.js +49 -51
  179. package/dist/scaAnalysis/scaAnalysis.js.map +1 -0
  180. package/dist/scan/fileUtils.js +27 -36
  181. package/dist/scan/fileUtils.js.map +1 -0
  182. package/dist/scan/formatScanOutput.js +47 -61
  183. package/dist/scan/formatScanOutput.js.map +1 -0
  184. package/dist/scan/help.js +8 -11
  185. package/dist/scan/help.js.map +1 -0
  186. package/dist/scan/models/groupedResultsModel.js +2 -5
  187. package/dist/scan/models/groupedResultsModel.js.map +1 -0
  188. package/dist/scan/models/resultContentModel.js +2 -2
  189. package/dist/scan/models/resultContentModel.js.map +1 -0
  190. package/dist/scan/models/scanResultsModel.js +2 -5
  191. package/dist/scan/models/scanResultsModel.js.map +1 -0
  192. package/dist/scan/populateProjectIdAndProjectName.js +9 -12
  193. package/dist/scan/populateProjectIdAndProjectName.js.map +1 -0
  194. package/dist/scan/saveResults.js +3 -6
  195. package/dist/scan/saveResults.js.map +1 -0
  196. package/dist/scan/scan.js +24 -31
  197. package/dist/scan/scan.js.map +1 -0
  198. package/dist/scan/scanConfig.js +14 -12
  199. package/dist/scan/scanConfig.js.map +1 -0
  200. package/dist/scan/scanController.js +17 -20
  201. package/dist/scan/scanController.js.map +1 -0
  202. package/dist/scan/scanResults.js +27 -34
  203. package/dist/scan/scanResults.js.map +1 -0
  204. package/dist/telemetry/telemetry.js +29 -59
  205. package/dist/telemetry/telemetry.js.map +1 -0
  206. package/dist/utils/capabilities.js +1 -0
  207. package/dist/utils/capabilities.js.map +1 -0
  208. package/dist/utils/commonApi.js +15 -24
  209. package/dist/utils/commonApi.js.map +1 -0
  210. package/dist/utils/filterProjectPath.js +1 -0
  211. package/dist/utils/filterProjectPath.js.map +1 -0
  212. package/dist/utils/generalAPI.js +11 -17
  213. package/dist/utils/generalAPI.js.map +1 -0
  214. package/dist/utils/getConfig.js +7 -13
  215. package/dist/utils/getConfig.js.map +1 -0
  216. package/dist/utils/oraWrapper.js +7 -14
  217. package/dist/utils/oraWrapper.js.map +1 -0
  218. package/dist/utils/paramsUtil/commandlineParams.js +2 -5
  219. package/dist/utils/paramsUtil/commandlineParams.js.map +1 -0
  220. package/dist/utils/paramsUtil/configStoreParams.js +9 -10
  221. package/dist/utils/paramsUtil/configStoreParams.js.map +1 -0
  222. package/dist/utils/paramsUtil/envVariableParams.js +2 -3
  223. package/dist/utils/paramsUtil/envVariableParams.js.map +1 -0
  224. package/dist/utils/paramsUtil/paramHandler.js +12 -13
  225. package/dist/utils/paramsUtil/paramHandler.js.map +1 -0
  226. package/dist/utils/parsedCLIOptions.js +4 -7
  227. package/dist/utils/parsedCLIOptions.js.map +1 -0
  228. package/dist/utils/requestUtils.js +7 -13
  229. package/dist/utils/requestUtils.js.map +1 -0
  230. package/dist/utils/saveFile.js +8 -11
  231. package/dist/utils/saveFile.js.map +1 -0
  232. package/dist/utils/validationCheck.js +5 -11
  233. package/dist/utils/validationCheck.js.map +1 -0
  234. package/package.json +32 -41
  235. package/.prettierignore +0 -1
  236. package/bin/contrast.js +0 -2
  237. package/dist/audit/languageAnalysisEngine/util/requestUtils.js +0 -14
  238. package/dist/lambda/__mocks__/aws.js +0 -21
  239. package/dist/lambda/__mocks__/lambdaConfig.json +0 -42
  240. package/src/audit/catalogueApplication/catalogueApplication.js +0 -51
  241. package/src/audit/languageAnalysisEngine/commonApi.js +0 -20
  242. package/src/audit/languageAnalysisEngine/filterProjectPath.js +0 -21
  243. package/src/audit/languageAnalysisEngine/getProjectRootFilenames.js +0 -36
  244. package/src/audit/languageAnalysisEngine/sendSnapshot.js +0 -57
  245. package/src/audit/languageAnalysisEngine/util/requestUtils.js +0 -17
  246. package/src/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js +0 -63
  247. package/src/audit/report/commonReportingFunctions.js +0 -412
  248. package/src/audit/report/models/reportGuidanceModel.ts +0 -5
  249. package/src/audit/report/models/reportLibraryModel.ts +0 -30
  250. package/src/audit/report/models/reportListModel.ts +0 -49
  251. package/src/audit/report/models/reportOutputModel.ts +0 -29
  252. package/src/audit/report/models/reportSeverityModel.ts +0 -18
  253. package/src/audit/report/models/severityCountModel.ts +0 -22
  254. package/src/audit/report/reportingFeature.ts +0 -110
  255. package/src/audit/report/utils/reportUtils.ts +0 -165
  256. package/src/audit/save.js +0 -67
  257. package/src/cliConstants.js +0 -523
  258. package/src/commands/audit/auditConfig.js +0 -18
  259. package/src/commands/audit/auditController.js +0 -50
  260. package/src/commands/audit/help.js +0 -72
  261. package/src/commands/audit/processAudit.js +0 -34
  262. package/src/commands/audit/saveFile.js +0 -15
  263. package/src/commands/auth/auth.js +0 -146
  264. package/src/commands/config/config.js +0 -41
  265. package/src/commands/github/fingerprintConfig.js +0 -19
  266. package/src/commands/github/processFingerprint.js +0 -37
  267. package/src/commands/github/projectGroup.js +0 -298
  268. package/src/commands/github/repoServices.js +0 -122
  269. package/src/commands/learn/learn.js +0 -10
  270. package/src/commands/learn/processLearn.js +0 -13
  271. package/src/commands/scan/processScan.js +0 -42
  272. package/src/common/HTTPClient.js +0 -775
  273. package/src/common/autoDetection.js +0 -209
  274. package/src/common/baseRequest.ts +0 -83
  275. package/src/common/commonHelp.js +0 -53
  276. package/src/common/errorHandling.js +0 -157
  277. package/src/common/fail.js +0 -79
  278. package/src/common/versionChecker.js +0 -75
  279. package/src/constants/constants.js +0 -71
  280. package/src/constants/lambda.js +0 -85
  281. package/src/constants/locales.js +0 -365
  282. package/src/index.ts +0 -142
  283. package/src/lambda/__mocks__/aws.ts +0 -32
  284. package/src/lambda/__mocks__/lambdaConfig.json +0 -42
  285. package/src/lambda/analytics.ts +0 -9
  286. package/src/lambda/arn.ts +0 -33
  287. package/src/lambda/aws.ts +0 -248
  288. package/src/lambda/cliError.ts +0 -72
  289. package/src/lambda/constants.ts +0 -11
  290. package/src/lambda/help.ts +0 -92
  291. package/src/lambda/lambda.ts +0 -230
  292. package/src/lambda/lambdaUtils.ts +0 -111
  293. package/src/lambda/logUtils.ts +0 -64
  294. package/src/lambda/scanDetailCompletion.ts +0 -78
  295. package/src/lambda/scanRequest.ts +0 -169
  296. package/src/lambda/scanResults.ts +0 -29
  297. package/src/lambda/types.ts +0 -36
  298. package/src/lambda/utils.ts +0 -188
  299. package/src/sbom/generateSbom.ts +0 -45
  300. package/src/scaAnalysis/common/auditReport.js +0 -59
  301. package/src/scaAnalysis/common/commonReportingFunctionsSca.js +0 -276
  302. package/src/scaAnalysis/common/formatMessage.js +0 -67
  303. package/src/scaAnalysis/common/models/ScaReportModel.ts +0 -81
  304. package/src/scaAnalysis/common/scaParserForGoAndJava.js +0 -41
  305. package/src/scaAnalysis/common/scaServicesUpload.js +0 -159
  306. package/src/scaAnalysis/common/treeUpload.js +0 -51
  307. package/src/scaAnalysis/common/utils/reportUtilsSca.ts +0 -123
  308. package/src/scaAnalysis/dotnet/analysis.js +0 -72
  309. package/src/scaAnalysis/dotnet/index.js +0 -11
  310. package/src/scaAnalysis/go/goAnalysis.js +0 -26
  311. package/src/scaAnalysis/go/goParseDeps.js +0 -203
  312. package/src/scaAnalysis/go/goReadDepFile.js +0 -34
  313. package/src/scaAnalysis/java/analysis.js +0 -148
  314. package/src/scaAnalysis/java/index.js +0 -29
  315. package/src/scaAnalysis/java/javaBuildDepsParser.js +0 -439
  316. package/src/scaAnalysis/javascript/analysis.js +0 -111
  317. package/src/scaAnalysis/javascript/index.js +0 -104
  318. package/src/scaAnalysis/javascript/scaServiceParser.js +0 -151
  319. package/src/scaAnalysis/legacy/legacyFlow.js +0 -43
  320. package/src/scaAnalysis/php/analysis.js +0 -78
  321. package/src/scaAnalysis/php/index.js +0 -28
  322. package/src/scaAnalysis/php/phpNewServicesMapper.js +0 -77
  323. package/src/scaAnalysis/processServicesFlow.js +0 -126
  324. package/src/scaAnalysis/python/analysis.js +0 -93
  325. package/src/scaAnalysis/python/index.js +0 -16
  326. package/src/scaAnalysis/repoMode/gradleParser.js +0 -88
  327. package/src/scaAnalysis/repoMode/index.js +0 -21
  328. package/src/scaAnalysis/repoMode/mavenParser.js +0 -138
  329. package/src/scaAnalysis/ruby/analysis.js +0 -413
  330. package/src/scaAnalysis/ruby/index.js +0 -16
  331. package/src/scaAnalysis/scaAnalysis.js +0 -172
  332. package/src/scan/fileUtils.js +0 -218
  333. package/src/scan/formatScanOutput.ts +0 -225
  334. package/src/scan/help.js +0 -56
  335. package/src/scan/models/groupedResultsModel.ts +0 -20
  336. package/src/scan/models/resultContentModel.ts +0 -86
  337. package/src/scan/models/scanResultsModel.ts +0 -55
  338. package/src/scan/populateProjectIdAndProjectName.js +0 -73
  339. package/src/scan/saveResults.js +0 -14
  340. package/src/scan/scan.ts +0 -68
  341. package/src/scan/scanConfig.js +0 -58
  342. package/src/scan/scanController.js +0 -98
  343. package/src/scan/scanResults.js +0 -171
  344. package/src/telemetry/telemetry.ts +0 -154
  345. package/src/utils/capabilities.js +0 -12
  346. package/src/utils/commonApi.js +0 -103
  347. package/src/utils/filterProjectPath.js +0 -25
  348. package/src/utils/generalAPI.js +0 -52
  349. package/src/utils/getConfig.ts +0 -34
  350. package/src/utils/oraWrapper.js +0 -29
  351. package/src/utils/paramsUtil/commandlineParams.js +0 -12
  352. package/src/utils/paramsUtil/configStoreParams.js +0 -19
  353. package/src/utils/paramsUtil/envVariableParams.js +0 -10
  354. package/src/utils/paramsUtil/paramHandler.js +0 -38
  355. package/src/utils/parsedCLIOptions.js +0 -32
  356. package/src/utils/requestUtils.js +0 -29
  357. package/src/utils/saveFile.js +0 -20
  358. package/src/utils/validationCheck.js +0 -39
@@ -1,439 +0,0 @@
1
- const i18n = require('i18n')
2
- const StringBuilder = require('string-builder')
3
- let sb = new StringBuilder()
4
-
5
- const parseBuildDeps = (config, input) => {
6
- const { mvnDependancyTreeOutput, projectType } = input
7
- try {
8
- return parseGradle(mvnDependancyTreeOutput, config, projectType)
9
- } catch (err) {
10
- throw new Error(i18n.__('javaParseProjectFile') + `${err.message}`)
11
- }
12
- }
13
-
14
- const preParser = shavedOutput => {
15
- let obj = []
16
- for (let dep in shavedOutput) {
17
- shavedOutput[dep] = shaveDependencyType(shavedOutput[dep])
18
-
19
- obj.push(
20
- shavedOutput[dep]
21
- .replace('+-', '+---')
22
- .replace('[INFO]', '')
23
- .replace('\\-', '\\---')
24
- .replace(':jar:', ':')
25
- .replace(' +', '+')
26
- .replace(' |', '|')
27
- .replace(' \\', '\\')
28
- .replace(':runtime', '')
29
- )
30
- }
31
-
32
- let depTree = []
33
- for (let x in obj) {
34
- let nodeLevel = computeRelationToLastElement(obj[x])
35
-
36
- let notLastLevel =
37
- obj[x].startsWith('|') ||
38
- obj[x].startsWith('+') ||
39
- obj[x].startsWith('\\')
40
-
41
- if (notLastLevel) {
42
- if (nodeLevel === 0) {
43
- depTree.push(obj[x])
44
- } else {
45
- let level = computeLevel(nodeLevel)
46
- let validatedLevel = addIndentation(nodeLevel === 2 ? 5 : level, obj[x])
47
- depTree.push(validatedLevel)
48
- }
49
- } else {
50
- let level = computeLevel(nodeLevel)
51
- let validatedLevel = addIndentation(nodeLevel === 3 ? 5 : level, obj[x])
52
- depTree.push(validatedLevel)
53
- }
54
- }
55
-
56
- return depTree
57
- }
58
-
59
- const shaveDependencyType = dep => {
60
- if (dep.endsWith('\r')) {
61
- dep = dep.slice(0, -1)
62
- }
63
-
64
- if (dep.endsWith(':test')) {
65
- dep = dep.slice(0, -5)
66
- }
67
-
68
- if (dep.endsWith(':compile')) {
69
- dep = dep.slice(0, -8)
70
- }
71
-
72
- if (dep.endsWith(':provided')) {
73
- dep = dep.slice(0, -9)
74
- }
75
-
76
- return dep
77
- }
78
-
79
- const shaveOutput = (gradleDependencyTreeOutput, projectType) => {
80
- let shavedOutput = gradleDependencyTreeOutput.split('\n')
81
-
82
- if (projectType === 'maven') {
83
- shavedOutput = preParser(shavedOutput)
84
- }
85
-
86
- let obj = []
87
- for (let key in shavedOutput) {
88
- if (shavedOutput[key].includes('project :')) {
89
- //skip
90
- } else if (
91
- shavedOutput[key].includes('+---') ||
92
- shavedOutput[key].includes('\\---')
93
- ) {
94
- obj.push(shavedOutput[key])
95
- }
96
- }
97
- return obj
98
- }
99
-
100
- const computeIndentation = element => {
101
- let hasPlus = element.includes('+')
102
- let hasSlash = element.includes('\\')
103
- if (hasPlus) {
104
- return element.substring(element.indexOf('+'))
105
- }
106
- if (hasSlash) {
107
- return element.substring(element.indexOf('\\'))
108
- }
109
- }
110
-
111
- const computeLevel = nodeLevel => {
112
- let num = [5, 8, 11, 14, 17, 20]
113
- for (let z in num) {
114
- if (num[z] === nodeLevel) {
115
- let n = parseInt(z)
116
- return 5 * (n + 2)
117
- }
118
- }
119
- }
120
-
121
- const addIndentation = (number, str) => {
122
- str = computeIndentation(str)
123
- sb.clear() // need to clear so each dep doesn't append to the string
124
- for (let j = 0; j < number; j++) {
125
- sb.append(' ')
126
- }
127
- sb.append(str)
128
- return sb.toString()
129
- }
130
-
131
- const computeRelationToLastElement = element => {
132
- let hasPlus = element.includes('+---')
133
- let hasSlash = element.includes('\\---')
134
- if (hasPlus) {
135
- return element.split('+---')[0].length
136
- }
137
- if (hasSlash) {
138
- return element.split('\\---')[0].length
139
- }
140
- }
141
-
142
- const stripElement = element => {
143
- const initialStrippedElement = element
144
- .replace(/[|]/g, '')
145
- .replace('+---', '')
146
- .replace('\\---', '')
147
- .replace(/[' ']/g, '')
148
- .replace('(c)', '')
149
- .replace('->', '@')
150
- .replace('(*)', '')
151
-
152
- //work out Gradle resolved versioning e.g. org.slf4j:slf4j-api:1.7.25 -> 1.7.22
153
- //take 1.7.22
154
- const splitElements = initialStrippedElement.split(':')
155
- if (
156
- splitElements[2] !== undefined &&
157
- splitElements[2] !== null &&
158
- splitElements[2].includes('@')
159
- ) {
160
- const splitVersions = splitElements[2].split('@')
161
- return initialStrippedElement
162
- .replace(':' + splitVersions[0], '')
163
- .replace('@', ':')
164
- }
165
-
166
- return initialStrippedElement
167
- }
168
-
169
- const checkVersion = element => {
170
- let version = element.split(':')
171
- return version[version.length - 1]
172
- }
173
-
174
- const createElement = (element, isRoot) => {
175
- let tree
176
- let cleanElement = stripElement(element)
177
- let splitGroupName = cleanElement.split(':')
178
-
179
- let validateVersion = false
180
- if (!element.includes('->')) {
181
- validateVersion = true
182
- }
183
-
184
- tree = {
185
- artifactID: splitGroupName[1],
186
- group: splitGroupName[0],
187
- version: validateVersion
188
- ? checkVersion(cleanElement)
189
- : splitGroupName[splitGroupName.length - 1],
190
- scope: 'compile',
191
- type: isRoot ? 'direct' : 'transitive',
192
- edges: {}
193
- }
194
- return tree
195
- }
196
-
197
- const getElementHeader = element => {
198
- let elementHeader = stripElement(element)
199
- elementHeader = elementHeader.replace(':', '/')
200
- elementHeader = elementHeader.replace(':', '@')
201
-
202
- return elementHeader
203
- }
204
-
205
- const buildElement = (element, rootElement, parentOfCurrent, tree, isRoot) => {
206
- let childElement = createElement(element, isRoot)
207
- let elementHeader = getElementHeader(element)
208
- let levelsArray = [rootElement, parentOfCurrent]
209
- const treeNode = getNestedObject(tree, levelsArray)
210
- const rootNode = getNestedObject(tree, [rootElement])
211
-
212
- // eslint-disable-next-line
213
- if (!rootNode.hasOwnProperty(elementHeader)) {
214
- tree[rootElement][elementHeader] = childElement
215
- }
216
- treeNode.edges[elementHeader] = elementHeader
217
- }
218
-
219
- const hasChildren = (nextNodeLevel, nodeLevel) => {
220
- if (nextNodeLevel > nodeLevel) {
221
- return true
222
- }
223
- }
224
-
225
- const lastChild = (nextNodeLevel, nodeLevel) => {
226
- if (nextNodeLevel < nodeLevel) {
227
- return true
228
- }
229
- }
230
-
231
- const calculateLevels = (nextNodeLevel, nodeLevel) => {
232
- return (nodeLevel - nextNodeLevel) / 5
233
- }
234
-
235
- const buildTree = shavedOutput => {
236
- let tree = {}
237
- let rootElement
238
- let levelNodes = []
239
-
240
- shavedOutput.forEach((element, index) => {
241
- if (index === 0) {
242
- // console.log(element, index)
243
- let cleanElement = stripElement(element)
244
- let elementHeader = getElementHeader(cleanElement)
245
- let splitElement = element.split(' ')
246
- let splitGroupName = splitElement[1].split(':')
247
-
248
- let validateVersion = false
249
- if (!element.includes('->')) {
250
- validateVersion = true
251
- }
252
-
253
- tree[splitGroupName[0]] = {}
254
- tree[splitGroupName[0]][elementHeader] = {
255
- artifactID: splitGroupName[1],
256
- group: splitGroupName[0],
257
- version: validateVersion
258
- ? checkVersion(cleanElement)
259
- : splitElement[splitElement.length - 1],
260
- scope: 'compile',
261
- type: 'direct',
262
- edges: {}
263
- }
264
-
265
- rootElement = splitGroupName[0]
266
- levelNodes.push(elementHeader)
267
- }
268
-
269
- if (shavedOutput.length - 1 === index) {
270
- // console.log(element, index)
271
- const parentOfCurrent = levelNodes[levelNodes.length - 1]
272
- let nodeLevel = computeRelationToLastElement(element)
273
-
274
- let validateVersion = false
275
- if (!element.includes('->')) {
276
- validateVersion = true
277
- }
278
-
279
- if (nodeLevel === 0) {
280
- let cleanElement = stripElement(element)
281
- let elementHeader = getElementHeader(cleanElement)
282
- let splitElement = element.split(' ')
283
- let splitGroupName = splitElement[1].split(':')
284
- tree[rootElement][elementHeader] = {
285
- artifactID: splitGroupName[1],
286
- group: splitGroupName[0],
287
- version: validateVersion
288
- ? checkVersion(cleanElement)
289
- : splitElement[splitElement.length - 1],
290
- scope: 'compile',
291
- type: 'direct',
292
- edges: {}
293
- }
294
- } else {
295
- buildElement(element, rootElement, parentOfCurrent, tree)
296
- }
297
- }
298
-
299
- if (index >= 1 && index < shavedOutput.length - 1) {
300
- let nodeLevel = computeRelationToLastElement(element)
301
- let nextNodeLevel = computeRelationToLastElement(shavedOutput[index + 1])
302
- const parentOfCurrent = levelNodes[levelNodes.length - 1]
303
-
304
- let isRoot = false
305
- if (nodeLevel === 0) {
306
- isRoot = true
307
- }
308
-
309
- // useful for debugging
310
- // console.log(
311
- // element,
312
- // index,
313
- // 'nodeLevel:',
314
- // nodeLevel,
315
- // 'nextNodeLevel:',
316
- // nextNodeLevel,
317
- // 'parentofCurrent:',
318
- // parentOfCurrent
319
- // )
320
-
321
- if (isRoot) {
322
- let cleanElement = stripElement(element)
323
- let elementHeader = getElementHeader(cleanElement)
324
- let splitElement = element.split(' ')
325
- let splitGroupName = splitElement[1].split(':')
326
-
327
- let validateVersion = false
328
- if (!element.includes('->')) {
329
- validateVersion = true
330
- }
331
-
332
- tree[rootElement][elementHeader] = {
333
- artifactID: splitGroupName[1],
334
- group: splitGroupName[0],
335
- version: validateVersion
336
- ? checkVersion(cleanElement)
337
- : splitElement[splitElement.length - 1],
338
- scope: 'compile',
339
- type: 'direct',
340
- edges: {}
341
- }
342
- levelNodes.push(elementHeader)
343
- return
344
- }
345
-
346
- let elementHeader = getElementHeader(element)
347
- buildElement(element, rootElement, parentOfCurrent, tree, isRoot)
348
-
349
- if (hasChildren(nextNodeLevel, nodeLevel)) {
350
- buildElement(element, rootElement, parentOfCurrent, tree, isRoot)
351
- levelNodes.push(elementHeader)
352
- }
353
-
354
- if (lastChild(nextNodeLevel, nodeLevel)) {
355
- let levelDifference = calculateLevels(nextNodeLevel, nodeLevel)
356
- if (levelDifference === 0) {
357
- levelNodes.pop()
358
- } else {
359
- let i
360
- for (i = 0; i < levelDifference; i++) {
361
- levelNodes.pop()
362
- }
363
- }
364
- }
365
- }
366
- })
367
-
368
- return tree
369
- }
370
-
371
- const getNestedObject = (nestedObj, pathArr) => {
372
- return pathArr.reduce(
373
- (obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined),
374
- nestedObj
375
- )
376
- }
377
-
378
- // emit any "+--- project :" within the tree
379
- const parseSubProject = shavedOutput => {
380
- let obj = []
381
- for (let key in shavedOutput) {
382
- if (!shavedOutput[key].includes('project')) {
383
- obj.push(shavedOutput[key])
384
- }
385
- }
386
- return obj
387
- }
388
-
389
- const validateIndentation = shavedOutput => {
390
- let validatedTree = []
391
- shavedOutput.forEach((element, index) => {
392
- let nextNodeLevel
393
- let nodeLevel = computeRelationToLastElement(element)
394
- if (shavedOutput[index + 1] !== undefined) {
395
- nextNodeLevel = computeRelationToLastElement(shavedOutput[index + 1])
396
- }
397
- if (index === 0) {
398
- validatedTree.push(shavedOutput[index])
399
- validatedTree.push(shavedOutput[index + 1])
400
- } else if (nextNodeLevel > nodeLevel + 5) {
401
- return
402
- } else {
403
- validatedTree.push(shavedOutput[index + 1])
404
- }
405
- })
406
- validatedTree.pop()
407
- return validatedTree
408
- }
409
-
410
- const parseGradle = (gradleDependencyTreeOutput, config, projectType) => {
411
- let shavedOutput = shaveOutput(gradleDependencyTreeOutput, projectType)
412
- if (config.subProject) {
413
- let subProject = parseSubProject(shavedOutput)
414
- let validatedOutput = validateIndentation(subProject)
415
- return buildTree(validatedOutput)
416
- } else {
417
- let validatedOutput = validateIndentation(shavedOutput)
418
- return buildTree(validatedOutput)
419
- }
420
- }
421
-
422
- module.exports = {
423
- parseBuildDeps,
424
- shaveOutput,
425
- validateIndentation,
426
- calculateLevels,
427
- lastChild,
428
- hasChildren,
429
- getElementHeader,
430
- createElement,
431
- stripElement,
432
- checkVersion,
433
- computeRelationToLastElement,
434
- addIndentation,
435
- computeLevel,
436
- computeIndentation,
437
- shaveDependencyType,
438
- preParser
439
- }
@@ -1,111 +0,0 @@
1
- const fs = require('fs')
2
- const yarnParser = require('@yarnpkg/lockfile')
3
- const yaml = require('js-yaml')
4
- const i18n = require('i18n')
5
- const {
6
- formatKey
7
- } = require('../../audit/nodeAnalysisEngine/parseYarn2LockFileContents')
8
-
9
- const readFile = async (config, languageFiles, nameOfFile) => {
10
- const index = languageFiles.findIndex(v => v.includes(nameOfFile))
11
-
12
- if (config.file) {
13
- return fs.readFileSync(config.file.concat(languageFiles[index]), 'utf8')
14
- } else {
15
- throw new Error('could not find file')
16
- }
17
- }
18
-
19
- const readYarn = async (config, languageFiles, nameOfFile) => {
20
- let yarn = {
21
- yarnVersion: 1,
22
- rawYarnLockFileContents: ''
23
- }
24
-
25
- try {
26
- let rawYarnLockFileContents = await readFile(
27
- config,
28
- languageFiles,
29
- nameOfFile
30
- )
31
- yarn.rawYarnLockFileContents = rawYarnLockFileContents
32
-
33
- if (
34
- !yarn.rawYarnLockFileContents.includes('lockfile v1') ||
35
- yarn.rawYarnLockFileContents.includes('__metadata')
36
- ) {
37
- yarn.rawYarnLockFileContents = yaml.load(rawYarnLockFileContents)
38
- yarn.yarnVersion = 2
39
- }
40
-
41
- return yarn
42
- } catch (err) {
43
- throw new Error(i18n.__('nodeReadYarnLockFileError') + `${err.message}`)
44
- }
45
- }
46
-
47
- const parseNpmLockFile = async npmLockFile => {
48
- try {
49
- if (!npmLockFile.parsedPackages) {
50
- npmLockFile.parsedPackages = {}
51
- }
52
-
53
- Object.entries(npmLockFile.packages).forEach(
54
- ([packageKey, packageValue]) => {
55
- if (packageKey.includes('node_modules/')) {
56
- //remove object keys node modules prefixing
57
- //e.g: node_modules/@aws-amplify/datastore/node_modules/uuid --> @aws-amplify/datastore/uuid
58
- packageKey = packageKey.replace(/(node_modules\/)+/g, '')
59
- }
60
-
61
- npmLockFile.parsedPackages[packageKey] = packageValue
62
- }
63
- )
64
-
65
- //remove base project package - unneeded
66
- delete npmLockFile.parsedPackages['']
67
-
68
- return npmLockFile
69
- } catch (err) {
70
- throw new Error(i18n.__('NodeParseNPM') + `${err.message}`)
71
- }
72
- }
73
-
74
- const parseYarnLockFile = async js => {
75
- try {
76
- js.yarn.yarnLockFile = {}
77
- if (js.yarn.yarnVersion === 1) {
78
- js.yarn.yarnLockFile = yarnParser.parse(js.yarn.rawYarnLockFileContents)
79
- delete js.yarn.rawYarnLockFileContents
80
- return js
81
- } else {
82
- js.yarn.yarnLockFile['object'] = js.yarn.rawYarnLockFileContents
83
- delete js.yarn.yarnLockFile['object'].__metadata
84
- js.yarn.yarnLockFile['type'] = 'success'
85
-
86
- Object.entries(js.yarn.rawYarnLockFileContents).forEach(
87
- ([key, value]) => {
88
- const rawKeyNames = key.split(',')
89
- const keyNames = formatKey(rawKeyNames)
90
-
91
- keyNames.forEach(name => {
92
- js.yarn.yarnLockFile.object[name] = value
93
- })
94
- }
95
- )
96
- return js
97
- }
98
- } catch (err) {
99
- throw new Error(
100
- i18n.__('NodeParseYarn', js.yarn.yarnVersion) + `${err.message}`
101
- )
102
- }
103
- }
104
-
105
- module.exports = {
106
- readYarn,
107
- parseYarnLockFile,
108
- parseNpmLockFile,
109
- readFile,
110
- formatKey
111
- }
@@ -1,104 +0,0 @@
1
- const analysis = require('./analysis')
2
- const i18n = require('i18n')
3
- const formatMessage = require('../common/formatMessage')
4
- const scaServiceParser = require('./scaServiceParser')
5
-
6
- const jsAnalysis = async (config, languageFiles) => {
7
- checkForCorrectFiles(languageFiles)
8
-
9
- if (!config.file.endsWith('/')) {
10
- config.file = config.file.concat('/')
11
- }
12
- return buildNodeTree(config, languageFiles.JAVASCRIPT)
13
- }
14
- const buildNodeTree = async (config, files) => {
15
- let analysis = await readFiles(config, files)
16
- const rawNode = await parseFiles(config, files, analysis)
17
- if (config.legacy === false) {
18
- return scaServiceParser.parseJS(rawNode)
19
- }
20
-
21
- return formatMessage.createJavaScriptTSMessage(rawNode)
22
- }
23
-
24
- const readFiles = async (config, files) => {
25
- let js = {}
26
-
27
- js.packageJSON = JSON.parse(
28
- await analysis.readFile(config, files, 'package.json')
29
- )
30
-
31
- if (files.includes('package-lock.json')) {
32
- js.rawLockFileContents = await analysis.readFile(
33
- config,
34
- files,
35
- 'package-lock.json'
36
- )
37
- }
38
- if (files.includes('yarn.lock')) {
39
- js.yarn = {}
40
- js.yarn = await analysis.readYarn(config, files, 'yarn.lock')
41
- }
42
-
43
- return js
44
- }
45
-
46
- const parseFiles = async (config, files, js) => {
47
- if (files.includes('package-lock.json')) {
48
- const npmLockFile = JSON.parse(js.rawLockFileContents)
49
-
50
- const currentLockFileVersion = npmLockFile.lockfileVersion
51
- const generalRebuildMessage =
52
- '\nPlease update to Node 16+ & NPM 8+ or 9+ and then rebuild your package files.' +
53
- '\nMore info here: https://docs.npmjs.com/cli/v9/configuring-npm/package-lock-json'
54
-
55
- if (currentLockFileVersion === 1) {
56
- throw new Error(
57
- `NPM lockfileVersion 1 is no longer supported. \n ${generalRebuildMessage}`
58
- )
59
- }
60
-
61
- if (!currentLockFileVersion || !npmLockFile.packages) {
62
- throw new Error(
63
- `package-lock.json needs to be in the NPM v2 or v3 format. \n ${generalRebuildMessage}`
64
- )
65
- }
66
-
67
- if (currentLockFileVersion === 3 && config.legacy) {
68
- throw new Error(`NPM lockfileVersion 3 is not support with --legacy`)
69
- }
70
-
71
- js.npmLockFile = await analysis.parseNpmLockFile(npmLockFile)
72
- }
73
-
74
- if (files.includes('yarn.lock')) {
75
- js = await analysis.parseYarnLockFile(js)
76
- }
77
-
78
- return js
79
- }
80
-
81
- const checkForCorrectFiles = languageFiles => {
82
- if (
83
- languageFiles.JAVASCRIPT.includes('package-lock.json') &&
84
- languageFiles.JAVASCRIPT.includes('yarn.lock')
85
- ) {
86
- throw new Error(
87
- i18n.__('languageAnalysisHasMultipleLockFiles', 'javascript')
88
- )
89
- }
90
-
91
- if (
92
- !languageFiles.JAVASCRIPT.includes('package-lock.json') &&
93
- !languageFiles.JAVASCRIPT.includes('yarn.lock')
94
- ) {
95
- throw new Error(i18n.__('languageAnalysisHasNoLockFile', 'javascript'))
96
- }
97
-
98
- if (!languageFiles.JAVASCRIPT.includes('package.json')) {
99
- throw new Error(i18n.__('languageAnalysisHasNoPackageJsonFile'))
100
- }
101
- }
102
- module.exports = {
103
- jsAnalysis
104
- }