@contrast/contrast 2.0.2-beta.0 → 2.0.2-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/assess/assessConfig.js +9 -0
- package/dist/assess/assessConfig.js.map +1 -0
- package/dist/assess/help.js +37 -0
- package/dist/assess/help.js.map +1 -0
- package/dist/assess/http/index.js +39 -0
- package/dist/assess/http/index.js.map +1 -0
- package/dist/assess/index.js +69 -0
- package/dist/assess/index.js.map +1 -0
- package/dist/assess/metadata/findYamlFile.js +59 -0
- package/dist/assess/metadata/findYamlFile.js.map +1 -0
- package/dist/assess/metadata/index.js +37 -0
- package/dist/assess/metadata/index.js.map +1 -0
- package/dist/assess/metadata/utils.js +159 -0
- package/dist/assess/metadata/utils.js.map +1 -0
- package/dist/assess/printing/index.js +11 -0
- package/dist/assess/printing/index.js.map +1 -0
- package/dist/assess/printing/utils.js +119 -0
- package/dist/assess/printing/utils.js.map +1 -0
- package/dist/audit/auditConfig.js +9 -0
- package/dist/audit/auditConfig.js.map +1 -0
- package/dist/{commands/audit → audit}/auditController.js +9 -13
- package/dist/audit/auditController.js.map +1 -0
- package/dist/audit/auditRequests.js +193 -0
- package/dist/audit/auditRequests.js.map +1 -0
- package/dist/audit/auditRequestsLegacy.js +63 -0
- package/dist/audit/auditRequestsLegacy.js.map +1 -0
- package/dist/audit/catalogueApplication/catalogueApplication.js +16 -29
- package/dist/audit/catalogueApplication/catalogueApplication.js.map +1 -0
- package/dist/audit/help.js +68 -0
- package/dist/audit/help.js.map +1 -0
- package/dist/audit/languageAnalysisEngine/commonApi.js +12 -14
- package/dist/audit/languageAnalysisEngine/commonApi.js.map +1 -0
- package/dist/audit/languageAnalysisEngine/filterProjectPath.js +2 -1
- 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 +18 -30
- 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/processAudit.js +21 -0
- package/dist/audit/processAudit.js.map +1 -0
- package/dist/audit/report/commonReportingFunctions.js +33 -61
- 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/{commands/audit → audit}/saveFile.js +3 -6
- package/dist/audit/saveFile.js.map +1 -0
- package/dist/auth/auth.js +103 -0
- package/dist/auth/auth.js.map +1 -0
- package/dist/auth/authRequests.js +18 -0
- package/dist/auth/authRequests.js.map +1 -0
- package/dist/cliConstants.js +48 -18
- package/dist/cliConstants.js.map +1 -0
- package/dist/commands/config/config.js +12 -13
- package/dist/commands/config/config.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/common/HTTPClient.js +193 -94
- package/dist/common/HTTPClient.js.map +1 -0
- package/dist/{scan → common}/autoDetection.js +53 -36
- package/dist/common/autoDetection.js.map +1 -0
- package/dist/common/baseRequest.js +59 -23
- 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 +49 -63
- 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/stringManipulations.js +8 -0
- package/dist/common/stringManipulations.js.map +1 -0
- package/dist/common/versionChecker.js +16 -19
- package/dist/common/versionChecker.js.map +1 -0
- package/dist/constants/constants.js +46 -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 +14 -10
- package/dist/constants/locales.js.map +1 -0
- package/dist/github/fingerprintConfig.js +10 -0
- package/dist/github/fingerprintConfig.js.map +1 -0
- package/dist/github/processFingerprint.js +25 -0
- package/dist/github/processFingerprint.js.map +1 -0
- package/dist/github/projectGroup.js +225 -0
- package/dist/github/projectGroup.js.map +1 -0
- package/dist/github/repoServices.js +91 -0
- package/dist/github/repoServices.js.map +1 -0
- package/dist/index.js +42 -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 +59 -90
- package/dist/scaAnalysis/common/scaServicesUpload.js.map +1 -0
- package/dist/scaAnalysis/common/treeUpload.js +15 -25
- 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 +86 -32
- 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 +109 -73
- 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 +36 -40
- 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 +22 -60
- package/dist/scan/populateProjectIdAndProjectName.js.map +1 -0
- package/dist/scan/processScan.js +28 -0
- package/dist/scan/processScan.js.map +1 -0
- package/dist/scan/saveResults.js +3 -6
- package/dist/scan/saveResults.js.map +1 -0
- package/dist/scan/scan.js +33 -53
- 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 +19 -21
- package/dist/scan/scanController.js.map +1 -0
- package/dist/scan/scanRequests.js +86 -0
- package/dist/scan/scanRequests.js.map +1 -0
- package/dist/scan/scanResults.js +26 -72
- 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 +2 -1
- package/dist/utils/capabilities.js.map +1 -0
- package/dist/utils/commonApi.js +58 -50
- package/dist/utils/commonApi.js.map +1 -0
- package/dist/utils/filterProjectPath.js +2 -1
- package/dist/utils/filterProjectPath.js.map +1 -0
- package/dist/utils/generalAPI.js +11 -33
- package/dist/utils/generalAPI.js.map +1 -0
- package/dist/utils/getConfig.js +8 -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 +40 -48
- package/.prettierignore +0 -1
- package/bin/contrast.js +0 -2
- package/dist/audit/languageAnalysisEngine/util/requestUtils.js +0 -14
- package/dist/commands/audit/auditConfig.js +0 -12
- package/dist/commands/audit/help.js +0 -70
- package/dist/commands/audit/processAudit.js +0 -24
- package/dist/commands/auth/auth.js +0 -120
- package/dist/commands/github/fingerprintConfig.js +0 -13
- package/dist/commands/github/processFingerprint.js +0 -28
- package/dist/commands/github/projectGroup.js +0 -254
- package/dist/commands/github/repoServices.js +0 -108
- package/dist/commands/scan/processScan.js +0 -31
- 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 -522
- 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 -294
- 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/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 -155
- 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 -119
- 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 -112
- package/src/scaAnalysis/ruby/analysis.js +0 -413
- package/src/scaAnalysis/ruby/index.js +0 -16
- package/src/scaAnalysis/scaAnalysis.js +0 -171
- package/src/scan/autoDetection.js +0 -175
- package/src/scan/fileUtils.js +0 -206
- 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
package/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Contrast CLI
|
|
2
2
|
|
|
3
|
-
Use the ‘contrast’ command for fast and accurate security analysis of your applications, APIs,
|
|
3
|
+
Use the ‘contrast’ command for fast and accurate security analysis of your applications, APIs,
|
|
4
|
+
serverless functions, and libraries.
|
|
4
5
|
|
|
5
6
|
## Supported
|
|
6
7
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { getCommandLineArgsCustom } from '../utils/parsedCLIOptions.js';
|
|
2
|
+
import { commandLineDefinitions } from '../cliConstants.js';
|
|
3
|
+
import { getAuth } from '../utils/paramsUtil/paramHandler.js';
|
|
4
|
+
export const getAssessConfig = async (contrastConf, command, argv) => {
|
|
5
|
+
const auditParameters = await getCommandLineArgsCustom(contrastConf, command, argv, commandLineDefinitions.assessOptionDefinitions);
|
|
6
|
+
const paramsAuth = getAuth(auditParameters);
|
|
7
|
+
return { ...paramsAuth, ...auditParameters };
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=assessConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assessConfig.js","sourceRoot":"","sources":["../../src/assess/assessConfig.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAA;AAE7D,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IACnE,MAAM,eAAe,GAAG,MAAM,wBAAwB,CACpD,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,sBAAsB,CAAC,uBAAuB,CAC/C,CAAA;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAC3C,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,eAAe,EAAE,CAAA;AAC9C,CAAC,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import commandLineUsage from 'command-line-usage';
|
|
2
|
+
import i18n from 'i18n';
|
|
3
|
+
import { commandLineDefinitions } from '../cliConstants.js';
|
|
4
|
+
import { commonHelpLinks } from '../common/commonHelp.js';
|
|
5
|
+
export const assessUsageGuide = commandLineUsage([
|
|
6
|
+
{
|
|
7
|
+
header: i18n.__('constantsHeader')
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
header: i18n.__('assessHeader')
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
header: i18n.__('constantsAssessOptions'),
|
|
14
|
+
optionList: commandLineDefinitions.assessOptionDefinitions,
|
|
15
|
+
hide: [
|
|
16
|
+
'project-id',
|
|
17
|
+
'organization-id',
|
|
18
|
+
'api-key',
|
|
19
|
+
'authorization',
|
|
20
|
+
'host',
|
|
21
|
+
'proxy',
|
|
22
|
+
'help',
|
|
23
|
+
'ff',
|
|
24
|
+
'cert-self-signed',
|
|
25
|
+
'key',
|
|
26
|
+
'cacert',
|
|
27
|
+
'cert',
|
|
28
|
+
'verbose',
|
|
29
|
+
'debug',
|
|
30
|
+
'experimental'
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
commonHelpLinks()[0],
|
|
34
|
+
commonHelpLinks()[1],
|
|
35
|
+
commonHelpLinks()[2]
|
|
36
|
+
]);
|
|
37
|
+
//# sourceMappingURL=help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/assess/help.js"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;IAC/C;QACE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC;KACnC;IACD;QACE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC;KAChC;IACD;QACE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC;QACzC,UAAU,EAAE,sBAAsB,CAAC,uBAAuB;QAC1D,IAAI,EAAE;YACJ,YAAY;YACZ,iBAAiB;YACjB,SAAS;YACT,eAAe;YACf,MAAM;YACN,OAAO;YACP,MAAM;YACN,IAAI;YACJ,kBAAkB;YAClB,KAAK;YACL,QAAQ;YACR,MAAM;YACN,SAAS;YACT,OAAO;YACP,cAAc;SACf;KACF;IACD,eAAe,EAAE,CAAC,CAAC,CAAC;IACpB,eAAe,EAAE,CAAC,CAAC,CAAC;IACpB,eAAe,EAAE,CAAC,CAAC,CAAC;CACrB,CAAC,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { getHttpClient } from '../../utils/commonApi.js';
|
|
2
|
+
import { returnOra, startSpinner, succeedSpinner } from '../../utils/oraWrapper.js';
|
|
3
|
+
import { sleep } from '../../utils/requestUtils.js';
|
|
4
|
+
const TEAM_SERVER_REQUEST_DELAY = 3000; // add a 3 second delay
|
|
5
|
+
export const createClient = config => getHttpClient(config);
|
|
6
|
+
export const getInstanceFromMetadataFilter = async (httpClient, buildNumber, applicationId, hasLoggedMessage = false, oraMessage) => {
|
|
7
|
+
const instanceGuid = await httpClient.getInstanceFromMetadataFilter(buildNumber, applicationId);
|
|
8
|
+
const sessionRegistration = oraMessage || returnOra('Waiting for the session to be created.');
|
|
9
|
+
if (!instanceGuid.body.agentSessions[0]?.agentSessionId) {
|
|
10
|
+
if (!hasLoggedMessage) {
|
|
11
|
+
startSpinner(sessionRegistration);
|
|
12
|
+
hasLoggedMessage = true;
|
|
13
|
+
}
|
|
14
|
+
await sleep(TEAM_SERVER_REQUEST_DELAY);
|
|
15
|
+
return getInstanceFromMetadataFilter(httpClient, buildNumber, applicationId, hasLoggedMessage, sessionRegistration);
|
|
16
|
+
}
|
|
17
|
+
succeedSpinner(sessionRegistration, 'Session created.');
|
|
18
|
+
return instanceGuid.body.agentSessions[0].agentSessionId;
|
|
19
|
+
};
|
|
20
|
+
export const getAppId = async (httpClient, config, hasLoggedMessage = false, oraMessage) => {
|
|
21
|
+
const res = await httpClient.getAppId(config);
|
|
22
|
+
const applicationRegistration = oraMessage ||
|
|
23
|
+
returnOra('Contrast Assess started, waiting for the application to be registered.');
|
|
24
|
+
if (res.body) {
|
|
25
|
+
let obj = res.body.applications;
|
|
26
|
+
if (obj.length > 0) {
|
|
27
|
+
succeedSpinner(applicationRegistration, 'Application registered.');
|
|
28
|
+
return obj[0].app_id;
|
|
29
|
+
}
|
|
30
|
+
if (!hasLoggedMessage) {
|
|
31
|
+
startSpinner(applicationRegistration);
|
|
32
|
+
hasLoggedMessage = true;
|
|
33
|
+
}
|
|
34
|
+
await sleep(TEAM_SERVER_REQUEST_DELAY);
|
|
35
|
+
return getAppId(httpClient, config, hasLoggedMessage, applicationRegistration);
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/assess/http/index.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EACL,SAAS,EACT,YAAY,EACZ,cAAc,EACf,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAA;AAEnD,MAAM,yBAAyB,GAAG,IAAI,CAAA,CAAC,uBAAuB;AAE9D,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;AAE3D,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAChD,UAAU,EACV,WAAW,EACX,aAAa,EACb,gBAAgB,GAAG,KAAK,EACxB,UAAU,EACV,EAAE;IACF,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,6BAA6B,CACjE,WAAW,EACX,aAAa,CACd,CAAA;IACD,MAAM,mBAAmB,GACvB,UAAU,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAA;IAEnE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE;QACvD,IAAI,CAAC,gBAAgB,EAAE;YACrB,YAAY,CAAC,mBAAmB,CAAC,CAAA;YACjC,gBAAgB,GAAG,IAAI,CAAA;SACxB;QAED,MAAM,KAAK,CAAC,yBAAyB,CAAC,CAAA;QACtC,OAAO,6BAA6B,CAClC,UAAU,EACV,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,mBAAmB,CACpB,CAAA;KACF;IAED,cAAc,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAAA;IACvD,OAAO,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,CAAA;AAC1D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,UAAU,EACV,MAAM,EACN,gBAAgB,GAAG,KAAK,EACxB,UAAU,EACV,EAAE;IACF,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC7C,MAAM,uBAAuB,GAC3B,UAAU;QACV,SAAS,CACP,wEAAwE,CACzE,CAAA;IAEH,IAAI,GAAG,CAAC,IAAI,EAAE;QACZ,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAA;QAC/B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,cAAc,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,CAAA;YAClE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;SACrB;QAED,IAAI,CAAC,gBAAgB,EAAE;YACrB,YAAY,CAAC,uBAAuB,CAAC,CAAA;YACrC,gBAAgB,GAAG,IAAI,CAAA;SACxB;QAED,MAAM,KAAK,CAAC,yBAAyB,CAAC,CAAA;QACtC,OAAO,QAAQ,CACb,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,uBAAuB,CACxB,CAAA;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { createClient, getInstanceFromMetadataFilter, getAppId } from './http/index.js';
|
|
2
|
+
import { getAssessConfig } from './assessConfig.js';
|
|
3
|
+
import { printVulnerability } from './printing/index.js';
|
|
4
|
+
import { emptyListSpinner } from './printing/utils.js';
|
|
5
|
+
import { retrieveAndSetAgentCredentials } from './metadata/index.js';
|
|
6
|
+
import { getBuildNumber } from './metadata/utils.js';
|
|
7
|
+
import { assessUsageGuide } from './help.js';
|
|
8
|
+
const printedVulnerabilities = new Map();
|
|
9
|
+
const { start: displayEmptyListMessage, stop: removeEmptyListMessage } = emptyListSpinner();
|
|
10
|
+
export const processAssess = async (contrastConf, argvMain) => {
|
|
11
|
+
if (argvMain.indexOf('--help') !== -1) {
|
|
12
|
+
console.log(assessUsageGuide);
|
|
13
|
+
return process.exit(0);
|
|
14
|
+
}
|
|
15
|
+
/* Probably needs a little refactoring */
|
|
16
|
+
const config = await getAssessConfig(contrastConf, 'assess', argvMain);
|
|
17
|
+
const reportNotes = config.reportNotes;
|
|
18
|
+
const yamlData = await retrieveAndSetAgentCredentials(config);
|
|
19
|
+
const buildNumber = getBuildNumber(yamlData.application.session_metadata);
|
|
20
|
+
const applicationName = yamlData.application.name;
|
|
21
|
+
config.applicationName = applicationName;
|
|
22
|
+
const httpClient = createClient(config);
|
|
23
|
+
const applicationId = await getAppId(httpClient, config);
|
|
24
|
+
if (!applicationId) {
|
|
25
|
+
throw new Error('Something went wrong!');
|
|
26
|
+
}
|
|
27
|
+
const retrievedInstanceGuid = await getInstanceFromMetadataFilter(httpClient, buildNumber, applicationId);
|
|
28
|
+
return setAssessListener(httpClient, applicationId, retrievedInstanceGuid, reportNotes);
|
|
29
|
+
};
|
|
30
|
+
async function getVulnerabilitiesDetails(tailData, httpClient) {
|
|
31
|
+
return Promise.all(tailData.body.items.map(({ vulnerability }) => httpClient.getVulnerabilityDetails(vulnerability.uuid).then(details => {
|
|
32
|
+
vulnerability.details = details.body;
|
|
33
|
+
return vulnerability;
|
|
34
|
+
})));
|
|
35
|
+
}
|
|
36
|
+
async function printVulnerabilities(vulnerabilities, reportNotes) {
|
|
37
|
+
if (vulnerabilities.length === 0) {
|
|
38
|
+
displayEmptyListMessage();
|
|
39
|
+
}
|
|
40
|
+
vulnerabilities.forEach(vulnerability => {
|
|
41
|
+
if (printedVulnerabilities.has(vulnerability.uuid) ||
|
|
42
|
+
(vulnerability.severity === 'NOTE' && !reportNotes)) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
removeEmptyListMessage();
|
|
46
|
+
printVulnerability(vulnerability, console.log);
|
|
47
|
+
printedVulnerabilities.set(vulnerability.uuid, true);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
async function setAssessListener(httpClient, applicationId, retrievedInstanceGuid, reportNotes) {
|
|
51
|
+
return httpClient
|
|
52
|
+
.getAssessData(applicationId, retrievedInstanceGuid)
|
|
53
|
+
.then(tailData => {
|
|
54
|
+
if (tailData.statusCode !== 200) {
|
|
55
|
+
throw new Error('Something went wrong!');
|
|
56
|
+
}
|
|
57
|
+
return getVulnerabilitiesDetails(tailData, httpClient);
|
|
58
|
+
})
|
|
59
|
+
.then(vulnerabilities => printVulnerabilities(vulnerabilities, reportNotes))
|
|
60
|
+
.then(() => {
|
|
61
|
+
// Request data again
|
|
62
|
+
setTimeout(() => {
|
|
63
|
+
setAssessListener(httpClient, applicationId, retrievedInstanceGuid, reportNotes).catch(err => {
|
|
64
|
+
throw new Error(err);
|
|
65
|
+
});
|
|
66
|
+
}, 3000);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assess/index.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { CONTRAST_FILE_NAME } from './utils.js';
|
|
4
|
+
export function findContrastSecurityYaml(process) {
|
|
5
|
+
// Check for a contrast_security.yaml file in the current working directory
|
|
6
|
+
const currentDir = process.cwd();
|
|
7
|
+
const currentFile = path.join(currentDir, CONTRAST_FILE_NAME);
|
|
8
|
+
if (fs.existsSync(currentFile)) {
|
|
9
|
+
return currentFile;
|
|
10
|
+
}
|
|
11
|
+
// Check for a contrast_security.yaml file - Ruby on Rails
|
|
12
|
+
const rubyFilePath = path.join(currentDir, `./config/${CONTRAST_FILE_NAME}`);
|
|
13
|
+
if (fs.existsSync(rubyFilePath)) {
|
|
14
|
+
return rubyFilePath;
|
|
15
|
+
}
|
|
16
|
+
// Check for a contrast_security.yaml file - Django
|
|
17
|
+
const djangoFilePath = path.join(currentDir, `./settings/${CONTRAST_FILE_NAME}`);
|
|
18
|
+
if (fs.existsSync(djangoFilePath)) {
|
|
19
|
+
return djangoFilePath;
|
|
20
|
+
}
|
|
21
|
+
// Check for a contrast_security.yaml file in an agent-specific configuration directory
|
|
22
|
+
const agentName = getAgentName(process);
|
|
23
|
+
const agentConfigDir = getAgentConfigDir(agentName, process);
|
|
24
|
+
if (fs.existsSync(agentConfigDir)) {
|
|
25
|
+
return agentConfigDir;
|
|
26
|
+
}
|
|
27
|
+
// Check for a contrast_security.yaml file within the server's /etc/contrast directory
|
|
28
|
+
const serverFile = getServerConfigFile(process);
|
|
29
|
+
if (fs.existsSync(serverFile)) {
|
|
30
|
+
return serverFile;
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
function getAgentConfigDir(agentName, process) {
|
|
35
|
+
// Get the agent-specific configuration directory based on the current platform
|
|
36
|
+
if (process.platform === 'win32') {
|
|
37
|
+
return path.join(process.env.ProgramData, 'Contrast', agentName, CONTRAST_FILE_NAME);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
return path.join('/etc', 'contrast', agentName, CONTRAST_FILE_NAME);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function getServerConfigFile(process) {
|
|
44
|
+
// Get the server's configuration file based on the current platform
|
|
45
|
+
if (process.platform === 'win32') {
|
|
46
|
+
return path.join(process.env.ProgramData, 'Contrast', CONTRAST_FILE_NAME);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
return path.join('/etc/contrast/', CONTRAST_FILE_NAME);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function getAgentName(process) {
|
|
53
|
+
// You can use the agent's environment variable to get the agent name
|
|
54
|
+
// For example, for Node.js agent, you can use the CONTRAST__NAME environment variable
|
|
55
|
+
// For Java agent, you can use the CONTRAST__APPLICATION__NAME environment variable
|
|
56
|
+
// Here's an example of how you can get the agent name for the Node.js agent:
|
|
57
|
+
return process.env.CONTRAST__NAME || 'node';
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=findYamlFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findYamlFile.js","sourceRoot":"","sources":["../../../src/assess/metadata/findYamlFile.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,UAAU,wBAAwB,CAAC,OAAO;IAC9C,2EAA2E;IAC3E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAChC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAA;IAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;QAC9B,OAAO,WAAW,CAAA;KACnB;IAED,0DAA0D;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,kBAAkB,EAAE,CAAC,CAAA;IAC5E,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAC/B,OAAO,YAAY,CAAA;KACpB;IAED,mDAAmD;IACnD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAC9B,UAAU,EACV,cAAc,kBAAkB,EAAE,CACnC,CAAA;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;QACjC,OAAO,cAAc,CAAA;KACtB;IAED,uFAAuF;IACvF,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IACvC,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAC5D,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;QACjC,OAAO,cAAc,CAAA;KACtB;IAED,sFAAsF;IACtF,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QAC7B,OAAO,UAAU,CAAA;KAClB;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAS,EAAE,OAAO;IAC3C,+EAA+E;IAC/E,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;QAChC,OAAO,IAAI,CAAC,IAAI,CACd,OAAO,CAAC,GAAG,CAAC,WAAW,EACvB,UAAU,EACV,SAAS,EACT,kBAAkB,CACnB,CAAA;KACF;SAAM;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAA;KACpE;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAO;IAClC,oEAAoE;IACpE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAA;KAC1E;SAAM;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAA;KACvD;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAO;IAC3B,qEAAqE;IACrE,sFAAsF;IACtF,mFAAmF;IACnF,6EAA6E;IAC7E,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,CAAA;AAC7C,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { createClient } from '../http/index.js';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import yaml from 'js-yaml';
|
|
4
|
+
import { findContrastSecurityYaml } from './findYamlFile.js';
|
|
5
|
+
import { saveYamlData, createYamlFile, isYamlFileCreated, normalizeYamlPath } from './utils.js';
|
|
6
|
+
export const retrieveAndSetAgentCredentials = async (config) => {
|
|
7
|
+
const httpClient = createClient(config);
|
|
8
|
+
const agentCredentials = await httpClient.getAgentCredentials(config);
|
|
9
|
+
if (agentCredentials.body != null) {
|
|
10
|
+
const { configPath } = config;
|
|
11
|
+
let filePath;
|
|
12
|
+
if (configPath) {
|
|
13
|
+
if (isYamlFileCreated(configPath)) {
|
|
14
|
+
filePath = normalizeYamlPath(configPath);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
filePath = createYamlFile(configPath);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (!filePath) {
|
|
21
|
+
filePath = await findContrastSecurityYaml(process);
|
|
22
|
+
}
|
|
23
|
+
if (!filePath) {
|
|
24
|
+
filePath = createYamlFile();
|
|
25
|
+
}
|
|
26
|
+
const yamlData = yaml.load(fs.readFileSync(filePath, 'utf8'));
|
|
27
|
+
saveYamlData(config.host, agentCredentials, yamlData, filePath);
|
|
28
|
+
// todo research on env vars below
|
|
29
|
+
// setting env vars is a nono, can only apply to the process within the app that sets them
|
|
30
|
+
// needs to be done in the shells config e.g. zshrc etc, not to be done by an app, can possible mess it up (netskope does it)
|
|
31
|
+
// order of export can matter as well depending on the apps in use by a user
|
|
32
|
+
// stick to yaml and keep it in directory cli is ran in or store it to a agent default location per system
|
|
33
|
+
return yamlData;
|
|
34
|
+
}
|
|
35
|
+
throw new Error('unable to retrieve agent credentials');
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/assess/metadata/index.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,SAAS,CAAA;AAC1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,YAAY,CAAA;AAEnB,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,EAAC,MAAM,EAAC,EAAE;IAC3D,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAErE,IAAI,gBAAgB,CAAC,IAAI,IAAI,IAAI,EAAE;QACjC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;QAC7B,IAAI,QAAQ,CAAA;QAEZ,IAAI,UAAU,EAAE;YACd,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE;gBACjC,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAA;aACzC;iBAAM;gBACL,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;aACtC;SACF;QAED,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAA;SACnD;QAED,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG,cAAc,EAAE,CAAA;SAC5B;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;QAC7D,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAE/D,kCAAkC;QAClC,0FAA0F;QAC1F,6HAA6H;QAC7H,4EAA4E;QAC5E,0GAA0G;QAE1G,OAAO,QAAQ,CAAA;KAChB;IAED,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;AACzD,CAAC,CAAA"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import os from 'os';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import yaml from 'js-yaml';
|
|
5
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
6
|
+
const API_URL_PATH = '/Contrast/';
|
|
7
|
+
export const CONTRAST_FILE_NAME = 'contrast_security.yaml';
|
|
8
|
+
export const winDirectory = () => path.join(process.env.ProgramData, 'Contrast');
|
|
9
|
+
export const defaultDirectory = '/etc/contrast';
|
|
10
|
+
export function getBuildNumber(str) {
|
|
11
|
+
return str
|
|
12
|
+
.split(',')
|
|
13
|
+
.find(kv => kv.startsWith('buildNumber='))
|
|
14
|
+
?.split('=')[1];
|
|
15
|
+
}
|
|
16
|
+
function replaceBuildNumber(str, newBuildNumber) {
|
|
17
|
+
const pairs = str.split(',');
|
|
18
|
+
const buildNumberIndex = pairs.findIndex(pair => pair.startsWith('buildNumber='));
|
|
19
|
+
if (buildNumberIndex !== -1) {
|
|
20
|
+
pairs[buildNumberIndex] = `buildNumber=${newBuildNumber}`;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
pairs.push(`buildNumber=${newBuildNumber}`);
|
|
24
|
+
}
|
|
25
|
+
return pairs.filter(pair => pair !== '').join(',');
|
|
26
|
+
}
|
|
27
|
+
export function isDirectoryWriteable(directory) {
|
|
28
|
+
try {
|
|
29
|
+
fs.accessSync(directory, fs.constants.W_OK);
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
function getDirname(pathStr) {
|
|
37
|
+
const parsedPath = path.parse(pathStr);
|
|
38
|
+
return parsedPath.ext ? parsedPath.dir : pathStr;
|
|
39
|
+
}
|
|
40
|
+
function getDirectory(configPath) {
|
|
41
|
+
const platform = os.platform();
|
|
42
|
+
const isWindows = platform === 'win32';
|
|
43
|
+
if (configPath) {
|
|
44
|
+
const directory = getDirname(configPath);
|
|
45
|
+
return {
|
|
46
|
+
directory,
|
|
47
|
+
isDefaultDirectory: isWindows
|
|
48
|
+
? directory === winDirectory()
|
|
49
|
+
: directory === defaultDirectory
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// Check the current platform and determine the directory to save the YAML file
|
|
53
|
+
if (isWindows) {
|
|
54
|
+
return {
|
|
55
|
+
directory: winDirectory(),
|
|
56
|
+
isDefaultDirectory: true
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
directory: defaultDirectory,
|
|
61
|
+
isDefaultDirectory: true
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export function isYamlFileCreated(configPath) {
|
|
65
|
+
const normalizedPath = normalizeYamlPath(configPath);
|
|
66
|
+
if (fs.existsSync(normalizedPath)) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
export function normalizeYamlPath(configPath) {
|
|
72
|
+
const { directory } = getDirectory(configPath);
|
|
73
|
+
return path.join(directory, CONTRAST_FILE_NAME);
|
|
74
|
+
}
|
|
75
|
+
export const createYamlFile = configPath => {
|
|
76
|
+
const { directory, isDefaultDirectory } = getDirectory(configPath);
|
|
77
|
+
if (!fs.existsSync(directory)) {
|
|
78
|
+
if (configPath && !isDefaultDirectory) {
|
|
79
|
+
throw new Error('The provided path does not exist!');
|
|
80
|
+
}
|
|
81
|
+
// The default directory doesn't exist, so we need to create it
|
|
82
|
+
try {
|
|
83
|
+
fs.mkdirSync(directory, { recursive: true });
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
if (err.code === 'EACCES') {
|
|
87
|
+
throw new Error(`Permission denied: cannot write to ${directory}`);
|
|
88
|
+
}
|
|
89
|
+
throw new Error(err);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Check if the directory is writable
|
|
93
|
+
if (!isDirectoryWriteable(directory)) {
|
|
94
|
+
throw new Error(`Permission denied: cannot write to ${directory}`);
|
|
95
|
+
}
|
|
96
|
+
const yamlData = yaml.dump({});
|
|
97
|
+
const filePath = path.join(directory, CONTRAST_FILE_NAME);
|
|
98
|
+
// Write the YAML data to a file
|
|
99
|
+
try {
|
|
100
|
+
fs.writeFileSync(filePath, yamlData, { flag: 'w+' });
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
throw new Error(`Cannot write to file ${filePath}`);
|
|
104
|
+
}
|
|
105
|
+
return filePath;
|
|
106
|
+
};
|
|
107
|
+
export const saveYamlData = (host, agentCredentials, yamlData = {}, fileName) => {
|
|
108
|
+
yamlData.api = {
|
|
109
|
+
...yamlData.api,
|
|
110
|
+
url: `${host}${API_URL_PATH}`,
|
|
111
|
+
api_key: agentCredentials.body.api_key,
|
|
112
|
+
service_key: agentCredentials.body.service_key,
|
|
113
|
+
user_name: agentCredentials.body.user_uid
|
|
114
|
+
};
|
|
115
|
+
yamlData.application = {
|
|
116
|
+
...yamlData.application,
|
|
117
|
+
session_metadata: replaceBuildNumber(yamlData.application?.session_metadata || '', uuidv4())
|
|
118
|
+
};
|
|
119
|
+
yamlData.inventory = {
|
|
120
|
+
...yamlData.inventory,
|
|
121
|
+
analyze_libraries: false
|
|
122
|
+
};
|
|
123
|
+
yamlData.agent = {
|
|
124
|
+
...yamlData.agent,
|
|
125
|
+
diagnostics: {
|
|
126
|
+
...yamlData.agent?.diagnostics,
|
|
127
|
+
enable: false
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
if (!yamlData.application.name) {
|
|
131
|
+
yamlData.application.name = 'ContrastAssessApplication';
|
|
132
|
+
}
|
|
133
|
+
yamlData.assess = {
|
|
134
|
+
...yamlData.assess,
|
|
135
|
+
enable: true
|
|
136
|
+
};
|
|
137
|
+
yamlData.protect = {
|
|
138
|
+
...yamlData.protect,
|
|
139
|
+
enable: false
|
|
140
|
+
};
|
|
141
|
+
try {
|
|
142
|
+
const filePath = path.resolve(fileName);
|
|
143
|
+
const dirPath = getDirname(filePath);
|
|
144
|
+
// Ensure the directory exists
|
|
145
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
146
|
+
// Write the file
|
|
147
|
+
fs.writeFileSync(filePath, yaml.dump(yamlData), 'utf-8');
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
if (err.code === 'EACCES') {
|
|
151
|
+
throw new Error(`Permission denied: cannot write to ${fileName}`);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
throw new Error(`Error saving YAML data to file ${fileName}: ${err}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return yamlData;
|
|
158
|
+
};
|
|
159
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/assess/metadata/utils.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { buildHeader, buildDetails } from './utils.js';
|
|
2
|
+
export const printVulnerability = (vulnerability, logger) => {
|
|
3
|
+
const header = buildHeader(vulnerability);
|
|
4
|
+
const keyValues = buildDetails(vulnerability);
|
|
5
|
+
logger(header);
|
|
6
|
+
Object.values(keyValues).forEach(({ key, value }) => {
|
|
7
|
+
logger(key + value);
|
|
8
|
+
});
|
|
9
|
+
logger('\n');
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/assess/printing/index.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE;IAC1D,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,CAAA;IACzC,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;IAE7C,MAAM,CAAC,MAAM,CAAC,CAAA;IAEd,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;QAClD,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,CAAA;AACd,CAAC,CAAA"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { CRITICAL_COLOUR, HIGH_COLOUR, MEDIUM_COLOUR, LOW_COLOUR, NOTE_COLOUR, BLUE_TEXT_COLOUR } from '../../constants/constants.js';
|
|
2
|
+
import { returnOra, startSpinner, stopSpinner } from '../../utils/oraWrapper.js';
|
|
3
|
+
import { wrapText, setOffsetForNewLine } from '../../common/stringManipulations.js';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
const severityToColor = severity => {
|
|
6
|
+
switch (severity) {
|
|
7
|
+
case 'CRITICAL':
|
|
8
|
+
return CRITICAL_COLOUR;
|
|
9
|
+
case 'HIGH':
|
|
10
|
+
return HIGH_COLOUR;
|
|
11
|
+
case 'MEDIUM':
|
|
12
|
+
return MEDIUM_COLOUR;
|
|
13
|
+
case 'LOW':
|
|
14
|
+
return LOW_COLOUR;
|
|
15
|
+
case 'NOTE':
|
|
16
|
+
return NOTE_COLOUR;
|
|
17
|
+
default:
|
|
18
|
+
return NOTE_COLOUR;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
export const buildHeader = vulnerability => {
|
|
22
|
+
const color = severityToColor(vulnerability.severity);
|
|
23
|
+
const title = vulnerability.title.split(' from ');
|
|
24
|
+
let header = '';
|
|
25
|
+
if (title.length >= 1) {
|
|
26
|
+
header =
|
|
27
|
+
chalk.hex(color)(`${vulnerability.application.name} - [${vulnerability.severity}]`) +
|
|
28
|
+
chalk.hex(color).bold(` ${title[0]}`) +
|
|
29
|
+
' from ' +
|
|
30
|
+
title.slice(1).join(' ') +
|
|
31
|
+
`${vulnerability.title}`;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
header =
|
|
35
|
+
chalk.hex(color)(`${vulnerability.application.name} - [${vulnerability.severity}]`) + ` ${vulnerability.title}`;
|
|
36
|
+
}
|
|
37
|
+
header = wrapText(header, 160);
|
|
38
|
+
return header;
|
|
39
|
+
};
|
|
40
|
+
const buildDetailsKey = (key, keyWidth) => {
|
|
41
|
+
return chalk.bold(key.padStart(keyWidth) + ': ');
|
|
42
|
+
};
|
|
43
|
+
const buildSource = (chapter, keyWidth, wrapNumber) => {
|
|
44
|
+
const key = buildDetailsKey('Source', keyWidth);
|
|
45
|
+
const value = setOffsetForNewLine(wrapText(chapter.body, wrapNumber), keyWidth + 2).trimStart();
|
|
46
|
+
return { key, value };
|
|
47
|
+
};
|
|
48
|
+
const buildLocation = (chapter, keyWidth, wrapNumber) => {
|
|
49
|
+
const key = buildDetailsKey('Location', keyWidth);
|
|
50
|
+
const value = setOffsetForNewLine(chalk.hex(BLUE_TEXT_COLOUR)(wrapText(chapter.body, wrapNumber)), keyWidth + 2).trimStart();
|
|
51
|
+
return { key, value };
|
|
52
|
+
};
|
|
53
|
+
const buildDataFlow = (chapter, keyWidth, wrapNumber) => {
|
|
54
|
+
const key = buildDetailsKey('Dataflow', keyWidth);
|
|
55
|
+
const value = chalk.hex('#e63025')(wrapText(chapter.body, wrapNumber));
|
|
56
|
+
return { key, value };
|
|
57
|
+
};
|
|
58
|
+
const buildConfiguration = (chapter, keyWidth, wrapNumber) => {
|
|
59
|
+
const key = buildDetailsKey('Configuration', keyWidth);
|
|
60
|
+
const value = setOffsetForNewLine(wrapText(chapter.body, wrapNumber), keyWidth + 2).trimStart();
|
|
61
|
+
return { key, value };
|
|
62
|
+
};
|
|
63
|
+
const buildProperties = (chapter, keyWidth, wrapNumber) => {
|
|
64
|
+
const key = buildDetailsKey('Properties', keyWidth);
|
|
65
|
+
const properties = Object.keys(chapter.properties)
|
|
66
|
+
.map(value => value)
|
|
67
|
+
.join(',');
|
|
68
|
+
const value = setOffsetForNewLine(wrapText(chapter.introText + ' ' + properties, wrapNumber), keyWidth + 2).trimStart();
|
|
69
|
+
return { key, value };
|
|
70
|
+
};
|
|
71
|
+
export const buildDetails = vulnerability => {
|
|
72
|
+
const wrapNumber = 90;
|
|
73
|
+
const keyWidth = 10;
|
|
74
|
+
const issue = buildDetailsKey('Issue', keyWidth);
|
|
75
|
+
const issueValue = setOffsetForNewLine(wrapText(vulnerability.details.story.risk.text, wrapNumber), keyWidth + 2).trimStart();
|
|
76
|
+
const keyValues = {};
|
|
77
|
+
vulnerability.details.story.chapters.forEach(chapter => {
|
|
78
|
+
switch (chapter.type) {
|
|
79
|
+
case 'source':
|
|
80
|
+
keyValues.source = buildSource(chapter, keyWidth, wrapNumber);
|
|
81
|
+
break;
|
|
82
|
+
case 'location':
|
|
83
|
+
keyValues.location = buildLocation(chapter, keyWidth, wrapNumber);
|
|
84
|
+
break;
|
|
85
|
+
case 'dataflow':
|
|
86
|
+
keyValues.dataflow = buildDataFlow(chapter, keyWidth, wrapNumber);
|
|
87
|
+
break;
|
|
88
|
+
case 'properties':
|
|
89
|
+
keyValues.properties = buildProperties(chapter, keyWidth, wrapNumber);
|
|
90
|
+
break;
|
|
91
|
+
case 'configuration':
|
|
92
|
+
keyValues.configuration = buildConfiguration(chapter, keyWidth, wrapNumber);
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
keyValues.issue = { key: issue, value: issueValue.trimStart() };
|
|
97
|
+
return keyValues;
|
|
98
|
+
};
|
|
99
|
+
export const emptyListSpinner = () => {
|
|
100
|
+
const message = returnOra('Waiting for vulnerability to be reported.');
|
|
101
|
+
let emptyListMessageDisplayed = false;
|
|
102
|
+
const start = () => {
|
|
103
|
+
if (emptyListMessageDisplayed)
|
|
104
|
+
return;
|
|
105
|
+
startSpinner(message);
|
|
106
|
+
emptyListMessageDisplayed = true;
|
|
107
|
+
};
|
|
108
|
+
const stop = () => {
|
|
109
|
+
if (!emptyListMessageDisplayed)
|
|
110
|
+
return;
|
|
111
|
+
stopSpinner(message);
|
|
112
|
+
emptyListMessageDisplayed = false;
|
|
113
|
+
};
|
|
114
|
+
return {
|
|
115
|
+
start,
|
|
116
|
+
stop
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/assess/printing/utils.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { getCommandLineArgsCustom } from '../utils/parsedCLIOptions.js';
|
|
2
|
+
import { commandLineDefinitions } from '../cliConstants.js';
|
|
3
|
+
import { getAuth } from '../utils/paramsUtil/paramHandler.js';
|
|
4
|
+
export const getAuditConfig = async (contrastConf, command, argv) => {
|
|
5
|
+
const auditParameters = await getCommandLineArgsCustom(contrastConf, command, argv, commandLineDefinitions.auditOptionDefinitions);
|
|
6
|
+
const paramsAuth = getAuth(auditParameters);
|
|
7
|
+
return { ...paramsAuth, ...auditParameters };
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=auditConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditConfig.js","sourceRoot":"","sources":["../../src/audit/auditConfig.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAA;AAE7D,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAClE,MAAM,eAAe,GAAG,MAAM,wBAAwB,CACpD,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,sBAAsB,CAAC,sBAAsB,CAC9C,CAAA;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAC3C,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,eAAe,EAAE,CAAA;AAC9C,CAAC,CAAA"}
|