@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.
- package/README.md +51 -1
- package/dist/audit/catalogueApplication/catalogueApplication.js +6 -10
- package/dist/audit/catalogueApplication/catalogueApplication.js.map +1 -0
- package/dist/audit/languageAnalysisEngine/commonApi.js +3 -6
- package/dist/audit/languageAnalysisEngine/commonApi.js.map +1 -0
- package/dist/audit/languageAnalysisEngine/filterProjectPath.js +1 -0
- package/dist/audit/languageAnalysisEngine/filterProjectPath.js.map +1 -0
- package/dist/audit/languageAnalysisEngine/getProjectRootFilenames.js +9 -12
- package/dist/audit/languageAnalysisEngine/getProjectRootFilenames.js.map +1 -0
- package/dist/audit/languageAnalysisEngine/sendSnapshot.js +15 -19
- package/dist/audit/languageAnalysisEngine/sendSnapshot.js.map +1 -0
- package/dist/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js +9 -9
- package/dist/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js.map +1 -0
- package/dist/audit/report/commonReportingFunctions.js +33 -48
- package/dist/audit/report/commonReportingFunctions.js.map +1 -0
- package/dist/audit/report/models/reportGuidanceModel.js +2 -5
- package/dist/audit/report/models/reportGuidanceModel.js.map +1 -0
- package/dist/audit/report/models/reportLibraryModel.js +3 -7
- package/dist/audit/report/models/reportLibraryModel.js.map +1 -0
- package/dist/audit/report/models/reportListModel.js +4 -9
- package/dist/audit/report/models/reportListModel.js.map +1 -0
- package/dist/audit/report/models/reportOutputModel.js +4 -9
- package/dist/audit/report/models/reportOutputModel.js.map +1 -0
- package/dist/audit/report/models/reportSeverityModel.js +2 -5
- package/dist/audit/report/models/reportSeverityModel.js.map +1 -0
- package/dist/audit/report/models/severityCountModel.js +3 -5
- package/dist/audit/report/models/severityCountModel.js.map +1 -0
- package/dist/audit/report/reportingFeature.js +27 -55
- package/dist/audit/report/reportingFeature.js.map +1 -0
- package/dist/audit/report/utils/reportUtils.js +28 -59
- package/dist/audit/report/utils/reportUtils.js.map +1 -0
- package/dist/audit/save.js +14 -16
- package/dist/audit/save.js.map +1 -0
- package/dist/cliConstants.js +17 -18
- package/dist/cliConstants.js.map +1 -0
- package/dist/commands/audit/auditConfig.js +7 -10
- package/dist/commands/audit/auditConfig.js.map +1 -0
- package/dist/commands/audit/auditController.js +9 -13
- package/dist/commands/audit/auditController.js.map +1 -0
- package/dist/commands/audit/help.js +23 -25
- package/dist/commands/audit/help.js.map +1 -0
- package/dist/commands/audit/processAudit.js +9 -12
- package/dist/commands/audit/processAudit.js.map +1 -0
- package/dist/commands/audit/saveFile.js +3 -6
- package/dist/commands/audit/saveFile.js.map +1 -0
- package/dist/commands/auth/auth.js +25 -24
- package/dist/commands/auth/auth.js.map +1 -0
- package/dist/commands/config/config.js +12 -13
- package/dist/commands/config/config.js.map +1 -0
- package/dist/commands/github/fingerprintConfig.js +8 -11
- package/dist/commands/github/fingerprintConfig.js.map +1 -0
- package/dist/commands/github/processFingerprint.js +12 -15
- package/dist/commands/github/processFingerprint.js.map +1 -0
- package/dist/commands/github/projectGroup.js +25 -32
- package/dist/commands/github/projectGroup.js.map +1 -0
- package/dist/commands/github/repoServices.js +11 -21
- package/dist/commands/github/repoServices.js.map +1 -0
- package/dist/commands/learn/learn.js +3 -6
- package/dist/commands/learn/learn.js.map +1 -0
- package/dist/commands/learn/processLearn.js +3 -6
- package/dist/commands/learn/processLearn.js.map +1 -0
- package/dist/commands/scan/processScan.js +11 -14
- package/dist/commands/scan/processScan.js.map +1 -0
- package/dist/common/HTTPClient.js +123 -94
- package/dist/common/HTTPClient.js.map +1 -0
- package/dist/common/autoDetection.js +26 -33
- package/dist/common/autoDetection.js.map +1 -0
- package/dist/common/baseRequest.js +14 -18
- package/dist/common/baseRequest.js.map +1 -0
- package/dist/common/commonHelp.js +13 -13
- package/dist/common/commonHelp.js.map +1 -0
- package/dist/common/errorHandling.js +30 -39
- package/dist/common/errorHandling.js.map +1 -0
- package/dist/common/fail.js +6 -12
- package/dist/common/fail.js.map +1 -0
- package/dist/common/versionChecker.js +16 -19
- package/dist/common/versionChecker.js.map +1 -0
- package/dist/constants/constants.js +44 -65
- package/dist/constants/constants.js.map +1 -0
- package/dist/constants/lambda.js +8 -5
- package/dist/constants/lambda.js.map +1 -0
- package/dist/constants/locales.js +6 -9
- package/dist/constants/locales.js.map +1 -0
- package/dist/index.js +36 -39
- package/dist/index.js.map +1 -0
- package/dist/lambda/analytics.js +6 -9
- package/dist/lambda/analytics.js.map +1 -0
- package/dist/lambda/arn.js +6 -9
- package/dist/lambda/arn.js.map +1 -0
- package/dist/lambda/aws.js +29 -34
- package/dist/lambda/aws.js.map +1 -0
- package/dist/lambda/cliError.js +13 -41
- package/dist/lambda/cliError.js.map +1 -0
- package/dist/lambda/constants.js +3 -4
- package/dist/lambda/constants.js.map +1 -0
- package/dist/lambda/help.js +39 -44
- package/dist/lambda/help.js.map +1 -0
- package/dist/lambda/lambda.js +61 -65
- package/dist/lambda/lambda.js.map +1 -0
- package/dist/lambda/lambdaUtils.js +38 -32
- package/dist/lambda/lambdaUtils.js.map +1 -0
- package/dist/lambda/logUtils.js +21 -17
- package/dist/lambda/logUtils.js.map +1 -0
- package/dist/lambda/scanDetailCompletion.js +19 -25
- package/dist/lambda/scanDetailCompletion.js.map +1 -0
- package/dist/lambda/scanRequest.js +34 -41
- package/dist/lambda/scanRequest.js.map +1 -0
- package/dist/lambda/scanResults.js +8 -10
- package/dist/lambda/scanResults.js.map +1 -0
- package/dist/lambda/types.js +5 -7
- package/dist/lambda/types.js.map +1 -0
- package/dist/lambda/utils.js +33 -35
- package/dist/lambda/utils.js.map +1 -0
- package/dist/sbom/generateSbom.js +6 -10
- package/dist/sbom/generateSbom.js.map +1 -0
- package/dist/scaAnalysis/common/auditReport.js +8 -12
- package/dist/scaAnalysis/common/auditReport.js.map +1 -0
- package/dist/scaAnalysis/common/commonReportingFunctionsSca.js +26 -32
- package/dist/scaAnalysis/common/commonReportingFunctionsSca.js.map +1 -0
- package/dist/scaAnalysis/common/formatMessage.js +8 -17
- package/dist/scaAnalysis/common/formatMessage.js.map +1 -0
- package/dist/scaAnalysis/common/models/ScaReportModel.js +4 -9
- package/dist/scaAnalysis/common/models/ScaReportModel.js.map +1 -0
- package/dist/scaAnalysis/common/scaParserForGoAndJava.js +10 -9
- package/dist/scaAnalysis/common/scaParserForGoAndJava.js.map +1 -0
- package/dist/scaAnalysis/common/scaServicesUpload.js +21 -22
- package/dist/scaAnalysis/common/scaServicesUpload.js.map +1 -0
- package/dist/scaAnalysis/common/treeUpload.js +7 -10
- package/dist/scaAnalysis/common/treeUpload.js.map +1 -0
- package/dist/scaAnalysis/common/utils/reportUtilsSca.js +21 -29
- package/dist/scaAnalysis/common/utils/reportUtilsSca.js.map +1 -0
- package/dist/scaAnalysis/dotnet/analysis.js +12 -18
- package/dist/scaAnalysis/dotnet/analysis.js.map +1 -0
- package/dist/scaAnalysis/dotnet/index.js +4 -7
- package/dist/scaAnalysis/dotnet/index.js.map +1 -0
- package/dist/scaAnalysis/go/goAnalysis.js +8 -11
- package/dist/scaAnalysis/go/goAnalysis.js.map +1 -0
- package/dist/scaAnalysis/go/goParseDeps.js +9 -7
- package/dist/scaAnalysis/go/goParseDeps.js.map +1 -0
- package/dist/scaAnalysis/go/goReadDepFile.js +10 -8
- package/dist/scaAnalysis/go/goReadDepFile.js.map +1 -0
- package/dist/scaAnalysis/java/analysis.js +23 -20
- package/dist/scaAnalysis/java/analysis.js.map +1 -0
- package/dist/scaAnalysis/java/index.js +7 -10
- package/dist/scaAnalysis/java/index.js.map +1 -0
- package/dist/scaAnalysis/java/javaBuildDepsParser.js +43 -43
- package/dist/scaAnalysis/java/javaBuildDepsParser.js.map +1 -0
- package/dist/scaAnalysis/javascript/analysis.js +16 -20
- package/dist/scaAnalysis/javascript/analysis.js.map +1 -0
- package/dist/scaAnalysis/javascript/index.js +17 -19
- package/dist/scaAnalysis/javascript/index.js.map +1 -0
- package/dist/scaAnalysis/javascript/scaServiceParser.js +8 -15
- package/dist/scaAnalysis/javascript/scaServiceParser.js.map +1 -0
- package/dist/scaAnalysis/legacy/legacyFlow.js +13 -15
- package/dist/scaAnalysis/legacy/legacyFlow.js.map +1 -0
- package/dist/scaAnalysis/php/analysis.js +15 -16
- package/dist/scaAnalysis/php/analysis.js.map +1 -0
- package/dist/scaAnalysis/php/index.js +5 -8
- package/dist/scaAnalysis/php/index.js.map +1 -0
- package/dist/scaAnalysis/php/phpNewServicesMapper.js +9 -12
- package/dist/scaAnalysis/php/phpNewServicesMapper.js.map +1 -0
- package/dist/scaAnalysis/processServicesFlow.js +50 -25
- package/dist/scaAnalysis/processServicesFlow.js.map +1 -0
- package/dist/scaAnalysis/python/analysis.js +16 -23
- package/dist/scaAnalysis/python/analysis.js.map +1 -0
- package/dist/scaAnalysis/python/index.js +4 -7
- package/dist/scaAnalysis/python/index.js.map +1 -0
- package/dist/scaAnalysis/repoMode/gradleParser.js +7 -13
- package/dist/scaAnalysis/repoMode/gradleParser.js.map +1 -0
- package/dist/scaAnalysis/repoMode/index.js +9 -12
- package/dist/scaAnalysis/repoMode/index.js.map +1 -0
- package/dist/scaAnalysis/repoMode/mavenParser.js +12 -12
- package/dist/scaAnalysis/repoMode/mavenParser.js.map +1 -0
- package/dist/scaAnalysis/ruby/analysis.js +32 -46
- package/dist/scaAnalysis/ruby/analysis.js.map +1 -0
- package/dist/scaAnalysis/ruby/index.js +5 -8
- package/dist/scaAnalysis/ruby/index.js.map +1 -0
- package/dist/scaAnalysis/scaAnalysis.js +49 -51
- package/dist/scaAnalysis/scaAnalysis.js.map +1 -0
- package/dist/scan/fileUtils.js +27 -36
- package/dist/scan/fileUtils.js.map +1 -0
- package/dist/scan/formatScanOutput.js +47 -61
- package/dist/scan/formatScanOutput.js.map +1 -0
- package/dist/scan/help.js +8 -11
- package/dist/scan/help.js.map +1 -0
- package/dist/scan/models/groupedResultsModel.js +2 -5
- package/dist/scan/models/groupedResultsModel.js.map +1 -0
- package/dist/scan/models/resultContentModel.js +2 -2
- package/dist/scan/models/resultContentModel.js.map +1 -0
- package/dist/scan/models/scanResultsModel.js +2 -5
- package/dist/scan/models/scanResultsModel.js.map +1 -0
- package/dist/scan/populateProjectIdAndProjectName.js +9 -12
- package/dist/scan/populateProjectIdAndProjectName.js.map +1 -0
- package/dist/scan/saveResults.js +3 -6
- package/dist/scan/saveResults.js.map +1 -0
- package/dist/scan/scan.js +24 -31
- package/dist/scan/scan.js.map +1 -0
- package/dist/scan/scanConfig.js +14 -12
- package/dist/scan/scanConfig.js.map +1 -0
- package/dist/scan/scanController.js +17 -20
- package/dist/scan/scanController.js.map +1 -0
- package/dist/scan/scanResults.js +27 -34
- package/dist/scan/scanResults.js.map +1 -0
- package/dist/telemetry/telemetry.js +29 -59
- package/dist/telemetry/telemetry.js.map +1 -0
- package/dist/utils/capabilities.js +1 -0
- package/dist/utils/capabilities.js.map +1 -0
- package/dist/utils/commonApi.js +15 -24
- package/dist/utils/commonApi.js.map +1 -0
- package/dist/utils/filterProjectPath.js +1 -0
- package/dist/utils/filterProjectPath.js.map +1 -0
- package/dist/utils/generalAPI.js +11 -17
- package/dist/utils/generalAPI.js.map +1 -0
- package/dist/utils/getConfig.js +7 -13
- package/dist/utils/getConfig.js.map +1 -0
- package/dist/utils/oraWrapper.js +7 -14
- package/dist/utils/oraWrapper.js.map +1 -0
- package/dist/utils/paramsUtil/commandlineParams.js +2 -5
- package/dist/utils/paramsUtil/commandlineParams.js.map +1 -0
- package/dist/utils/paramsUtil/configStoreParams.js +9 -10
- package/dist/utils/paramsUtil/configStoreParams.js.map +1 -0
- package/dist/utils/paramsUtil/envVariableParams.js +2 -3
- package/dist/utils/paramsUtil/envVariableParams.js.map +1 -0
- package/dist/utils/paramsUtil/paramHandler.js +12 -13
- package/dist/utils/paramsUtil/paramHandler.js.map +1 -0
- package/dist/utils/parsedCLIOptions.js +4 -7
- package/dist/utils/parsedCLIOptions.js.map +1 -0
- package/dist/utils/requestUtils.js +7 -13
- package/dist/utils/requestUtils.js.map +1 -0
- package/dist/utils/saveFile.js +8 -11
- package/dist/utils/saveFile.js.map +1 -0
- package/dist/utils/validationCheck.js +5 -11
- package/dist/utils/validationCheck.js.map +1 -0
- package/package.json +32 -41
- package/.prettierignore +0 -1
- package/bin/contrast.js +0 -2
- package/dist/audit/languageAnalysisEngine/util/requestUtils.js +0 -14
- package/dist/lambda/__mocks__/aws.js +0 -21
- package/dist/lambda/__mocks__/lambdaConfig.json +0 -42
- package/src/audit/catalogueApplication/catalogueApplication.js +0 -51
- package/src/audit/languageAnalysisEngine/commonApi.js +0 -20
- package/src/audit/languageAnalysisEngine/filterProjectPath.js +0 -21
- package/src/audit/languageAnalysisEngine/getProjectRootFilenames.js +0 -36
- package/src/audit/languageAnalysisEngine/sendSnapshot.js +0 -57
- package/src/audit/languageAnalysisEngine/util/requestUtils.js +0 -17
- package/src/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js +0 -63
- package/src/audit/report/commonReportingFunctions.js +0 -412
- package/src/audit/report/models/reportGuidanceModel.ts +0 -5
- package/src/audit/report/models/reportLibraryModel.ts +0 -30
- package/src/audit/report/models/reportListModel.ts +0 -49
- package/src/audit/report/models/reportOutputModel.ts +0 -29
- package/src/audit/report/models/reportSeverityModel.ts +0 -18
- package/src/audit/report/models/severityCountModel.ts +0 -22
- package/src/audit/report/reportingFeature.ts +0 -110
- package/src/audit/report/utils/reportUtils.ts +0 -165
- package/src/audit/save.js +0 -67
- package/src/cliConstants.js +0 -523
- package/src/commands/audit/auditConfig.js +0 -18
- package/src/commands/audit/auditController.js +0 -50
- package/src/commands/audit/help.js +0 -72
- package/src/commands/audit/processAudit.js +0 -34
- package/src/commands/audit/saveFile.js +0 -15
- package/src/commands/auth/auth.js +0 -146
- package/src/commands/config/config.js +0 -41
- package/src/commands/github/fingerprintConfig.js +0 -19
- package/src/commands/github/processFingerprint.js +0 -37
- package/src/commands/github/projectGroup.js +0 -298
- package/src/commands/github/repoServices.js +0 -122
- package/src/commands/learn/learn.js +0 -10
- package/src/commands/learn/processLearn.js +0 -13
- package/src/commands/scan/processScan.js +0 -42
- package/src/common/HTTPClient.js +0 -775
- package/src/common/autoDetection.js +0 -209
- package/src/common/baseRequest.ts +0 -83
- package/src/common/commonHelp.js +0 -53
- package/src/common/errorHandling.js +0 -157
- package/src/common/fail.js +0 -79
- package/src/common/versionChecker.js +0 -75
- package/src/constants/constants.js +0 -71
- package/src/constants/lambda.js +0 -85
- package/src/constants/locales.js +0 -365
- package/src/index.ts +0 -142
- package/src/lambda/__mocks__/aws.ts +0 -32
- package/src/lambda/__mocks__/lambdaConfig.json +0 -42
- package/src/lambda/analytics.ts +0 -9
- package/src/lambda/arn.ts +0 -33
- package/src/lambda/aws.ts +0 -248
- package/src/lambda/cliError.ts +0 -72
- package/src/lambda/constants.ts +0 -11
- package/src/lambda/help.ts +0 -92
- package/src/lambda/lambda.ts +0 -230
- package/src/lambda/lambdaUtils.ts +0 -111
- package/src/lambda/logUtils.ts +0 -64
- package/src/lambda/scanDetailCompletion.ts +0 -78
- package/src/lambda/scanRequest.ts +0 -169
- package/src/lambda/scanResults.ts +0 -29
- package/src/lambda/types.ts +0 -36
- package/src/lambda/utils.ts +0 -188
- package/src/sbom/generateSbom.ts +0 -45
- package/src/scaAnalysis/common/auditReport.js +0 -59
- package/src/scaAnalysis/common/commonReportingFunctionsSca.js +0 -276
- package/src/scaAnalysis/common/formatMessage.js +0 -67
- package/src/scaAnalysis/common/models/ScaReportModel.ts +0 -81
- package/src/scaAnalysis/common/scaParserForGoAndJava.js +0 -41
- package/src/scaAnalysis/common/scaServicesUpload.js +0 -159
- package/src/scaAnalysis/common/treeUpload.js +0 -51
- package/src/scaAnalysis/common/utils/reportUtilsSca.ts +0 -123
- package/src/scaAnalysis/dotnet/analysis.js +0 -72
- package/src/scaAnalysis/dotnet/index.js +0 -11
- package/src/scaAnalysis/go/goAnalysis.js +0 -26
- package/src/scaAnalysis/go/goParseDeps.js +0 -203
- package/src/scaAnalysis/go/goReadDepFile.js +0 -34
- package/src/scaAnalysis/java/analysis.js +0 -148
- package/src/scaAnalysis/java/index.js +0 -29
- package/src/scaAnalysis/java/javaBuildDepsParser.js +0 -439
- package/src/scaAnalysis/javascript/analysis.js +0 -111
- package/src/scaAnalysis/javascript/index.js +0 -104
- package/src/scaAnalysis/javascript/scaServiceParser.js +0 -151
- package/src/scaAnalysis/legacy/legacyFlow.js +0 -43
- package/src/scaAnalysis/php/analysis.js +0 -78
- package/src/scaAnalysis/php/index.js +0 -28
- package/src/scaAnalysis/php/phpNewServicesMapper.js +0 -77
- package/src/scaAnalysis/processServicesFlow.js +0 -126
- package/src/scaAnalysis/python/analysis.js +0 -93
- package/src/scaAnalysis/python/index.js +0 -16
- package/src/scaAnalysis/repoMode/gradleParser.js +0 -88
- package/src/scaAnalysis/repoMode/index.js +0 -21
- package/src/scaAnalysis/repoMode/mavenParser.js +0 -138
- package/src/scaAnalysis/ruby/analysis.js +0 -413
- package/src/scaAnalysis/ruby/index.js +0 -16
- package/src/scaAnalysis/scaAnalysis.js +0 -172
- package/src/scan/fileUtils.js +0 -218
- package/src/scan/formatScanOutput.ts +0 -225
- package/src/scan/help.js +0 -56
- package/src/scan/models/groupedResultsModel.ts +0 -20
- package/src/scan/models/resultContentModel.ts +0 -86
- package/src/scan/models/scanResultsModel.ts +0 -55
- package/src/scan/populateProjectIdAndProjectName.js +0 -73
- package/src/scan/saveResults.js +0 -14
- package/src/scan/scan.ts +0 -68
- package/src/scan/scanConfig.js +0 -58
- package/src/scan/scanController.js +0 -98
- package/src/scan/scanResults.js +0 -171
- package/src/telemetry/telemetry.ts +0 -154
- package/src/utils/capabilities.js +0 -12
- package/src/utils/commonApi.js +0 -103
- package/src/utils/filterProjectPath.js +0 -25
- package/src/utils/generalAPI.js +0 -52
- package/src/utils/getConfig.ts +0 -34
- package/src/utils/oraWrapper.js +0 -29
- package/src/utils/paramsUtil/commandlineParams.js +0 -12
- package/src/utils/paramsUtil/configStoreParams.js +0 -19
- package/src/utils/paramsUtil/envVariableParams.js +0 -10
- package/src/utils/paramsUtil/paramHandler.js +0 -38
- package/src/utils/parsedCLIOptions.js +0 -32
- package/src/utils/requestUtils.js +0 -29
- package/src/utils/saveFile.js +0 -20
- 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
|
-
}
|