From 32dc1fb02d3993f965dbe6829539dd5c0e0f5430 Mon Sep 17 00:00:00 2001 From: attiasas Date: Thu, 12 Feb 2026 12:47:29 +0200 Subject: [PATCH 01/26] add IncludeDirs option to Xray Bom Lib --- sca/bom/xrayplugin/plugin/config.go | 2 ++ sca/bom/xrayplugin/xraylibbom.go | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/sca/bom/xrayplugin/plugin/config.go b/sca/bom/xrayplugin/plugin/config.go index 216586a8c..3d5c9f21b 100644 --- a/sca/bom/xrayplugin/plugin/config.go +++ b/sca/bom/xrayplugin/plugin/config.go @@ -12,4 +12,6 @@ type Config struct { Version string `json:"version,omitempty"` // [Optional] Patterns (git ignore like) to ignore when scanning the target. IgnorePatterns []string `json:"ignorePatterns,omitempty"` + // [Optional] Specific directories to scan. + IncludeDirs []string `json:"includeDirs,omitempty"` } diff --git a/sca/bom/xrayplugin/xraylibbom.go b/sca/bom/xrayplugin/xraylibbom.go index 02686ce55..4e6dd5fb4 100644 --- a/sca/bom/xrayplugin/xraylibbom.go +++ b/sca/bom/xrayplugin/xraylibbom.go @@ -18,6 +18,7 @@ import ( type XrayLibBomGenerator struct { binaryPath string ignorePatterns []string + includeDirs []string totalTargets int } @@ -49,6 +50,14 @@ func WithIgnorePatterns(ignorePatterns []string) bom.SbomGeneratorOption { } } +func WithIncludeDirs(includeDirs []string) bom.SbomGeneratorOption { + return func(sg bom.SbomGenerator) { + if sbg, ok := sg.(*XrayLibBomGenerator); ok { + sbg.includeDirs = includeDirs + } + } +} + func (sbg *XrayLibBomGenerator) WithOptions(options ...bom.SbomGeneratorOption) bom.SbomGenerator { for _, option := range options { option(sbg) @@ -114,6 +123,7 @@ func (sbg *XrayLibBomGenerator) executeScanner(xrayLibBinary string, target resu Type: string(cyclonedx.ComponentTypeFile), Name: target.Target, IgnorePatterns: sbg.ignorePatterns, + IncludeDirs: sbg.includeDirs, } if scanConfigStr, err := utils.GetAsJsonString(scanConfig, false, true); err == nil { log.Debug(fmt.Sprintf("Scan configuration: %s", scanConfigStr)) From 1a1a65996b5c18b8f93a6c42cb4f8464e745810f Mon Sep 17 00:00:00 2001 From: attiasas Date: Thu, 12 Feb 2026 16:22:02 +0200 Subject: [PATCH 02/26] prepare to pass working dirs --- commands/audit/audit.go | 23 +++++++----- sca/bom/bomgenerator.go | 37 +++++++++++++------ sca/bom/xrayplugin/xraylibbom.go | 61 ++------------------------------ utils/results/results.go | 4 +++ 4 files changed, 47 insertions(+), 78 deletions(-) diff --git a/commands/audit/audit.go b/commands/audit/audit.go index 47d6c6fc6..7ec00cc06 100644 --- a/commands/audit/audit.go +++ b/commands/audit/audit.go @@ -176,22 +176,30 @@ func logScanPaths(workingDirs []string, isRecursiveScan bool) { log.Info("Scanning paths:", strings.Join(workingDirs, ", ")) } -func (auditCmd *AuditCommand) Run() (err error) { - isRecursiveScan := false +func getRelatedWorkingDirs(auditCmd *AuditCommand) (workingDirs []string, isRecursiveScan bool, err error) { if _, ok := auditCmd.bomGenerator.(*xrayplugin.XrayLibBomGenerator); ok { if len(auditCmd.workingDirs) > 1 { - return errors.New("the 'audit' command with the 'Xray lib' BOM generator supports only one working directory. Please provide a single working directory") + return nil, false, errors.New("the 'audit' command with the 'Xray lib' BOM generator supports only one working directory. Please provide a single working directory") } + // OLD logic: } else if utils.IsScanRequested(utils.SourceCode, utils.ScaScan, auditCmd.ScansToPerform()...) || auditCmd.IncludeSbom { // Only in case of SCA scan / SBOM requested and if no workingDirs were provided by the user // We apply a recursive scan on the root repository isRecursiveScan = len(auditCmd.workingDirs) == 0 } - workingDirs, err := coreutils.GetFullPathsWorkingDirs(auditCmd.workingDirs) + workingDirs, err = coreutils.GetFullPathsWorkingDirs(auditCmd.workingDirs) if err != nil { return } logScanPaths(workingDirs, isRecursiveScan) + return +} + +func (auditCmd *AuditCommand) Run() (err error) { + workingDirs, isRecursiveScan, err := getRelatedWorkingDirs(auditCmd) + if err != nil { + return + } serverDetails, err := auditCmd.ServerDetails() if err != nil { return @@ -340,9 +348,7 @@ func getScanLogicOptions(params *AuditParams) (bomGenOptions []bom.SbomGenerator // Build Info Bom Generator Options buildinfo.WithParams(buildParams), // Xray-Scan-Plugin Bom Generator Options - xrayplugin.WithTotalTargets(len(params.workingDirs)), xrayplugin.WithBinaryPath(params.CustomBomGenBinaryPath()), - xrayplugin.WithIgnorePatterns(params.Exclusions()), } // Scan Strategies Options scanGraphParams, err := params.ToXrayScanGraphParams() @@ -421,6 +427,7 @@ func populateScanTargets(cmdResults *results.SecurityCommandResults, params *Aud bom.GenerateSbomForTarget(params.BomGenerator().WithOptions(buildinfo.WithDescriptors(targetResult.GetDescriptors())), bom.SbomGeneratorParams{ Target: targetResult, + TotalTargets: len(cmdResults.Targets), AllowPartialResults: params.AllowPartialResults(), ScanResultsOutputDir: params.scanResultsOutputDir, // Diff mode - SCA @@ -493,11 +500,11 @@ func detectScanTargets(cmdResults *results.SecurityCommandResults, params *Audit // No technology was detected, add scan without descriptors. (so no sca scan will be performed and set at target level) if len(workingDirs) == 0 { // Requested technology (from params) descriptors/indicators were not found or recursive scan with NoTech value, add scan without descriptors. - cmdResults.NewScanResults(results.ScanTarget{Target: requestedDirectory, Technology: tech}) + cmdResults.NewScanResults(results.ScanTarget{Target: requestedDirectory, Technology: tech, Exclude: params.Exclusions()}) } for workingDir, descriptors := range workingDirs { // Add scan for each detected working directory. - targetResults := cmdResults.NewScanResults(results.ScanTarget{Target: workingDir, Technology: tech}) + targetResults := cmdResults.NewScanResults(results.ScanTarget{Target: workingDir, Technology: tech, Exclude: params.Exclusions()}) if tech != techutils.NoTech { targetResults.SetDescriptors(descriptors...) } diff --git a/sca/bom/bomgenerator.go b/sca/bom/bomgenerator.go index 4d022fb2c..57214a4de 100644 --- a/sca/bom/bomgenerator.go +++ b/sca/bom/bomgenerator.go @@ -2,6 +2,7 @@ package bom import ( "fmt" + "time" "github.com/CycloneDX/cyclonedx-go" @@ -28,6 +29,7 @@ type SbomGeneratorOption func(sg SbomGenerator) type SbomGeneratorParams struct { Target *results.TargetResults + TotalTargets int AllowPartialResults bool ScanResultsOutputDir string @@ -36,6 +38,12 @@ type SbomGeneratorParams struct { } func GenerateSbomForTarget(generator SbomGenerator, params SbomGeneratorParams) { + startLog := "Generating SBOM" + if params.TotalTargets > 1 { + startLog += fmt.Sprintf(" for target: %s", params.Target.Target) + } + log.Info(startLog + "...") + startTime := time.Now() // Generate the SBOM for the target sbom, err := generator.GenerateSbom(params.Target.ScanTarget) if err != nil { @@ -47,6 +55,9 @@ func GenerateSbomForTarget(generator SbomGenerator, params SbomGeneratorParams) // If in diff mode, get the diff SBOM compared to the previous target result sbom = getDiffSbom(sbom, params) } + if err := logLibComponents(sbom, params.TotalTargets, params.Target.Target, startTime); err != nil { + log.Warn(fmt.Sprintf("Failed to log library components in SBOM for %s: %s", params.Target.Target, err.Error())) + } // Set the SBOM in the target results and update target information updateTarget(params.Target, sbom) // Save the SBOM to a file @@ -75,9 +86,6 @@ func getDiffSbom(sbom *cyclonedx.BOM, params SbomGeneratorParams) *cyclonedx.BOM func updateTarget(target *results.TargetResults, sbom *cyclonedx.BOM) { target.SetSbom(sbom) target.ResultsStatus.UpdateStatus(results.CmdStepSbom, utils.NewIntPtr(0)) - if err := logLibComponents(sbom.Components); err != nil { - log.Warn(fmt.Sprintf("Failed to log library components in SBOM for %s: %s", target.Target, err.Error())) - } if target.Name != "" { // Target name is already set, no need to update. return @@ -104,21 +112,28 @@ func updateTarget(target *results.TargetResults, sbom *cyclonedx.BOM) { target.Name, _, _ = techutils.SplitPackageURL(rootComponent.PackageURL) } -func logLibComponents(components *[]cyclonedx.Component) (err error) { - if log.GetLogger().GetLogLevel() != log.DEBUG { - // Avoid printing and marshaling if not on DEBUG mode. - return - } +func logLibComponents(output *cyclonedx.BOM, totalTargets int, target string, startTime time.Time) (err error) { libs := []string{} - if components != nil { - for _, component := range *components { + if output != nil && output.Components != nil { + for _, component := range *output.Components { if component.Type == cyclonedx.ComponentTypeLibrary { libs = append(libs, techutils.PurlToXrayComponentId(component.PackageURL)) } } } + outLog := "SBOM generated" + if totalTargets > 1 { + outLog += fmt.Sprintf(" for target '%s'", target) + } + outLog += ";" if len(libs) == 0 { - log.Debug("No library components found.") + outLog += " no library components were found" + } else { + outLog += fmt.Sprintf(" found %d library components", len(libs)) + } + log.Info(fmt.Sprintf("%s (duration %s)", outLog, time.Since(startTime).String())) + if log.GetLogger().GetLogLevel() != log.DEBUG || len(libs) == 0 { + // Avoid printing and marshaling if not on DEBUG mode or no library components found. return } // Log the unique library components in the SBOM. diff --git a/sca/bom/xrayplugin/xraylibbom.go b/sca/bom/xrayplugin/xraylibbom.go index 4e6dd5fb4..793e980e2 100644 --- a/sca/bom/xrayplugin/xraylibbom.go +++ b/sca/bom/xrayplugin/xraylibbom.go @@ -3,7 +3,6 @@ package xrayplugin import ( "fmt" "os/exec" - "time" "github.com/CycloneDX/cyclonedx-go" "github.com/jfrog/jfrog-cli-security/sca/bom" @@ -17,23 +16,12 @@ import ( type XrayLibBomGenerator struct { binaryPath string - ignorePatterns []string - includeDirs []string - totalTargets int } func NewXrayLibBomGenerator() *XrayLibBomGenerator { return &XrayLibBomGenerator{} } -func WithTotalTargets(totalTargets int) bom.SbomGeneratorOption { - return func(sg bom.SbomGenerator) { - if sbg, ok := sg.(*XrayLibBomGenerator); ok { - sbg.totalTargets = totalTargets - } - } -} - func WithBinaryPath(binaryPath string) bom.SbomGeneratorOption { return func(sg bom.SbomGenerator) { if sbg, ok := sg.(*XrayLibBomGenerator); ok { @@ -42,22 +30,6 @@ func WithBinaryPath(binaryPath string) bom.SbomGeneratorOption { } } -func WithIgnorePatterns(ignorePatterns []string) bom.SbomGeneratorOption { - return func(sg bom.SbomGenerator) { - if sbg, ok := sg.(*XrayLibBomGenerator); ok { - sbg.ignorePatterns = ignorePatterns - } - } -} - -func WithIncludeDirs(includeDirs []string) bom.SbomGeneratorOption { - return func(sg bom.SbomGenerator) { - if sbg, ok := sg.(*XrayLibBomGenerator); ok { - sbg.includeDirs = includeDirs - } - } -} - func (sbg *XrayLibBomGenerator) WithOptions(options ...bom.SbomGeneratorOption) bom.SbomGenerator { for _, option := range options { option(sbg) @@ -84,22 +56,15 @@ func (sbg *XrayLibBomGenerator) PrepareGenerator() (err error) { } func (sbg *XrayLibBomGenerator) GenerateSbom(target results.ScanTarget) (sbom *cyclonedx.BOM, err error) { - startLog := "Generating SBOM" - if sbg.totalTargets > 1 { - startLog += fmt.Sprintf(" for target: %s", target.Target) - } - log.Info(startLog + "...") binaryPath, err := sbg.getXrayLibExecutablePath() if err != nil || binaryPath == "" { return nil, fmt.Errorf("failed to get local Xray-Lib executable path: %w", err) } log.Debug(fmt.Sprintf("Using Xray-Lib executable at: %s", binaryPath)) - startTime := time.Now() // Run the xray-lib command to generate the SBOM if sbom, err = sbg.executeScanner(binaryPath, target); err != nil { return nil, fmt.Errorf("failed to execute Xray-Lib command: %w", err) } - sbg.logScannerOutput(sbom, target.Target, startTime) return } @@ -122,8 +87,8 @@ func (sbg *XrayLibBomGenerator) executeScanner(xrayLibBinary string, target resu BomRef: cdxutils.GetFileRef(target.Target), Type: string(cyclonedx.ComponentTypeFile), Name: target.Target, - IgnorePatterns: sbg.ignorePatterns, - IncludeDirs: sbg.includeDirs, + IgnorePatterns: target.Exclude, + IncludeDirs: target.Include, } if scanConfigStr, err := utils.GetAsJsonString(scanConfig, false, true); err == nil { log.Debug(fmt.Sprintf("Scan configuration: %s", scanConfigStr)) @@ -131,28 +96,6 @@ func (sbg *XrayLibBomGenerator) executeScanner(xrayLibBinary string, target resu return scanner.Scan(target.Target, scanConfig) } -func (sbg *XrayLibBomGenerator) logScannerOutput(output *cyclonedx.BOM, target string, startTime time.Time) { - libComponents := []string{} - if output != nil && output.Components != nil { - for _, component := range *output.Components { - if component.Type == cyclonedx.ComponentTypeLibrary { - libComponents = append(libComponents, component.PackageURL) - } - } - } - outLog := "SBOM generated" - if sbg.totalTargets > 1 { - outLog += fmt.Sprintf(" for target '%s'", target) - } - outLog += ";" - if len(libComponents) == 0 { - outLog += " no library components were found" - } else { - outLog += fmt.Sprintf(" found %d library components", len(libComponents)) - } - log.Info(fmt.Sprintf("%s (duration %s)", outLog, time.Since(startTime).String())) -} - func (sbg *XrayLibBomGenerator) CleanUp() (err error) { // No cleanup needed for XrayLibBomGenerator return nil diff --git a/utils/results/results.go b/utils/results/results.go index 9be9038bc..afd6fc718 100644 --- a/utils/results/results.go +++ b/utils/results/results.go @@ -212,6 +212,10 @@ type JasScanResults struct { type ScanTarget struct { // Physical location of the target: Working directory (audit) / binary to scan (scan / docker scan) Target string `json:"target,omitempty"` + // Optional field to provide the include patterns of the target + Include []string `json:"include,omitempty"` + // Optional field to provide the exclude patterns of the target + Exclude []string `json:"exclude,omitempty"` // Logical name of the target (build name / module name / docker image name...) Name string `json:"name,omitempty"` // Optional field (not used only in build scan) to provide the technology of the target From 26955ad1361877dea0accaba8f17d95d3b76ef6b Mon Sep 17 00:00:00 2001 From: attiasas Date: Thu, 12 Feb 2026 16:22:17 +0200 Subject: [PATCH 03/26] format --- sca/bom/xrayplugin/xraylibbom.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sca/bom/xrayplugin/xraylibbom.go b/sca/bom/xrayplugin/xraylibbom.go index 793e980e2..fb001fdc9 100644 --- a/sca/bom/xrayplugin/xraylibbom.go +++ b/sca/bom/xrayplugin/xraylibbom.go @@ -15,7 +15,7 @@ import ( ) type XrayLibBomGenerator struct { - binaryPath string + binaryPath string } func NewXrayLibBomGenerator() *XrayLibBomGenerator { From b00447458d144c65936345b550be2b4b07c318a3 Mon Sep 17 00:00:00 2001 From: attiasas Date: Thu, 12 Feb 2026 17:52:29 +0200 Subject: [PATCH 04/26] use isSingleTarget, start deprecate old JAS interface to remove apps-config in new flow --- commands/audit/audit.go | 48 ++++++++++++++++++----- commands/audit/auditparams.go | 10 +++++ jas/applicability/applicabilitymanager.go | 2 +- jas/common.go | 7 ++-- jas/iac/iacscanner.go | 2 +- jas/runner/jasrunner.go | 6 +-- jas/sast/sastscanner.go | 2 +- jas/secrets/secretsscanner.go | 2 +- 8 files changed, 59 insertions(+), 20 deletions(-) diff --git a/commands/audit/audit.go b/commands/audit/audit.go index 7ec00cc06..8f4e7aae0 100644 --- a/commands/audit/audit.go +++ b/commands/audit/audit.go @@ -176,12 +176,9 @@ func logScanPaths(workingDirs []string, isRecursiveScan bool) { log.Info("Scanning paths:", strings.Join(workingDirs, ", ")) } -func getRelatedWorkingDirs(auditCmd *AuditCommand) (workingDirs []string, isRecursiveScan bool, err error) { - if _, ok := auditCmd.bomGenerator.(*xrayplugin.XrayLibBomGenerator); ok { - if len(auditCmd.workingDirs) > 1 { - return nil, false, errors.New("the 'audit' command with the 'Xray lib' BOM generator supports only one working directory. Please provide a single working directory") - } - // OLD logic: +func getTargetsInfo(auditCmd *AuditCommand) (workingDirs []string, isRecursiveScan, isSingleTarget bool, err error) { + if isNewFlow(auditCmd.bomGenerator) { + isSingleTarget = true } else if utils.IsScanRequested(utils.SourceCode, utils.ScaScan, auditCmd.ScansToPerform()...) || auditCmd.IncludeSbom { // Only in case of SCA scan / SBOM requested and if no workingDirs were provided by the user // We apply a recursive scan on the root repository @@ -195,8 +192,15 @@ func getRelatedWorkingDirs(auditCmd *AuditCommand) (workingDirs []string, isRecu return } +func isNewFlow(bomGenerator bom.SbomGenerator) bool { + if _, ok := bomGenerator.(*xrayplugin.XrayLibBomGenerator); ok { + return true + } + return false +} + func (auditCmd *AuditCommand) Run() (err error) { - workingDirs, isRecursiveScan, err := getRelatedWorkingDirs(auditCmd) + workingDirs, isRecursiveScan, isSingleTarget, err := getTargetsInfo(auditCmd) if err != nil { return } @@ -222,9 +226,10 @@ func (auditCmd *AuditCommand) Run() (err error) { SetRtResultRepository(auditCmd.rtResultRepository). SetUploadCdxResults(auditCmd.uploadCdxResults). SetWorkingDirs(workingDirs). + SetIsSingleTarget(isSingleTarget). SetMinSeverityFilter(auditCmd.minSeverityFilter). SetFixableOnly(auditCmd.fixableOnly). - SetGraphBasicParams(auditCmd.AuditBasicParams). + SetGraphBasicParams(auditCmd.AuditBasicParams.SetIsRecursiveScan(isRecursiveScan).SetExclusions(auditCmd.Exclusions())). SetResultsContext(CreateAuditResultsContext( serverDetails, auditCmd.GetXrayVersion(), @@ -239,8 +244,9 @@ func (auditCmd *AuditCommand) Run() (err error) { SetGitContext(auditCmd.GitContext()). SetThirdPartyApplicabilityScan(auditCmd.thirdPartyApplicabilityScan). SetThreads(auditCmd.Threads). - SetScansResultsOutputDir(auditCmd.scanResultsOutputDir).SetStartTime(startTime).SetMultiScanId(multiScanId) - auditParams.SetIsRecursiveScan(isRecursiveScan).SetExclusions(auditCmd.Exclusions()) + SetScansResultsOutputDir(auditCmd.scanResultsOutputDir). + SetStartTime(startTime). + SetMultiScanId(multiScanId) auditResults := RunAudit(auditParams) @@ -439,6 +445,7 @@ func populateScanTargets(cmdResults *results.SecurityCommandResults, params *Aud logScanTargetsInfo(cmdResults) } +// TODO: change func logScanTargetsInfo(cmdResults *results.SecurityCommandResults) { // Print the scan targets if len(cmdResults.Targets) == 1 { @@ -478,7 +485,28 @@ func getTargetResultsToCompare(cmdResults, resultsToCompare *results.SecurityCom return } +//TODO: change func detectScanTargets(cmdResults *results.SecurityCommandResults, params *AuditParams) { + if params.IsSingleTarget() { + // NEW logic: + scanTarget := results.ScanTarget{Exclude: params.Exclusions()} + dirs := []string{} + for _, dir := range params.workingDirs { + if !fileutils.IsPathExists(dir, false) { + log.Warn("The working directory", dir, "doesn't exist. Skipping SCA scan...") + continue + } + dirs = append(dirs, dir) + } + if len(dirs) == 1 { + scanTarget.Target = dirs[0] + } else { + scanTarget.Include = dirs + } + cmdResults.NewScanResults(scanTarget) + return + } + // OLD logic: for _, requestedDirectory := range params.workingDirs { if !fileutils.IsPathExists(requestedDirectory, false) { log.Warn("The working directory", requestedDirectory, "doesn't exist. Skipping SCA scan...") diff --git a/commands/audit/auditparams.go b/commands/audit/auditparams.go index c75da1790..332362a42 100644 --- a/commands/audit/auditparams.go +++ b/commands/audit/auditparams.go @@ -22,6 +22,7 @@ type AuditParams struct { resultsContext results.ResultContext gitContext *xscServices.XscGitInfoContext workingDirs []string + isSingleTarget bool installFunc func(tech string) error fixableOnly bool minSeverityFilter severityutils.Severity @@ -192,6 +193,15 @@ func (params *AuditParams) SetScansResultsOutputDir(outputDir string) *AuditPara return params } +func (params *AuditParams) SetIsSingleTarget(isSingleTarget bool) *AuditParams { + params.isSingleTarget = isSingleTarget + return params +} + +func (params *AuditParams) IsSingleTarget() bool { + return params.isSingleTarget +} + func (params *AuditParams) createXrayGraphScanParams() *services.XrayGraphScanParams { return &services.XrayGraphScanParams{ RepoPath: params.resultsContext.RepoPath, diff --git a/jas/applicability/applicabilitymanager.go b/jas/applicability/applicabilitymanager.go index 810038fff..870b117f8 100644 --- a/jas/applicability/applicabilitymanager.go +++ b/jas/applicability/applicabilitymanager.go @@ -87,7 +87,7 @@ func newApplicabilityScanManager(directDependenciesCves, indirectDependenciesCve } } -func (asm *ApplicabilityScanManager) Run(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { +func (asm *ApplicabilityScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { if err = asm.createConfigFile(module, asm.scanner.ScannersExclusions.ContextualAnalysisExcludePatterns, asm.scanner.Exclusions...); err != nil { return } diff --git a/jas/common.go b/jas/common.go index 07693d056..10d47139f 100644 --- a/jas/common.go +++ b/jas/common.go @@ -148,9 +148,9 @@ func (js *JasScanner) GetResultsToCompareByRelativePath(relativeTarget string) ( func CreateJFrogAppsConfig(workingDirs []string) (*jfrogappsconfig.JFrogAppsConfig, error) { if jfrogAppsConfig, err := jfrogappsconfig.LoadConfigIfExist(); err != nil { - log.Warn("Please note the 'jfrog-apps-config.yml' is soon to be deprecated. Please consider using flags, environment variables, or centrally via the JFrog platform.") return nil, errorutils.CheckError(err) } else if jfrogAppsConfig != nil { + log.Warn("Please note the 'jfrog-apps-config.yml' is soon to be deprecated. Please consider using flags, environment variables, or centrally via the JFrog platform.") // jfrog-apps-config.yml exist in the workspace for i := range jfrogAppsConfig.Modules { // converting to absolute path before starting the scan flow @@ -175,12 +175,13 @@ func CreateJFrogAppsConfig(workingDirs []string) (*jfrogappsconfig.JFrogAppsConf } type ScannerCmd interface { - Run(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) + DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) + // Run(target results.ScanTarget) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) } func (a *JasScanner) Run(scannerCmd ScannerCmd, module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { func() { - if vulnerabilitiesSarifRuns, violationsSarifRuns, err = scannerCmd.Run(module); err != nil { + if vulnerabilitiesSarifRuns, violationsSarifRuns, err = scannerCmd.DeprecatedRun(module); err != nil { return } }() diff --git a/jas/iac/iacscanner.go b/jas/iac/iacscanner.go index 53eeb921b..3bede78d5 100644 --- a/jas/iac/iacscanner.go +++ b/jas/iac/iacscanner.go @@ -69,7 +69,7 @@ func newIacScanManager(scanner *jas.JasScanner, scannerTempDir string, resultsTo return } -func (iac *IacScanManager) Run(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { +func (iac *IacScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { if err = iac.createConfigFile(module, iac.scanner.ScannersExclusions.IacExcludePatterns, iac.scanner.Exclusions...); err != nil { return } diff --git a/jas/runner/jasrunner.go b/jas/runner/jasrunner.go index c88692450..478c01bab 100644 --- a/jas/runner/jasrunner.go +++ b/jas/runner/jasrunner.go @@ -26,9 +26,11 @@ type JasRunnerParams struct { Runner *utils.SecurityParallelRunner ServerDetails *config.ServerDetails Scanner *jas.JasScanner - // Module flags + // Module / Target flags Module jfrogappsconfig.Module ConfigProfile *services.ConfigProfile + TargetCount int + ScanResults *results.TargetResults // Scan flags AllowPartialResults bool ScansToPerform []utils.SubScanType @@ -45,8 +47,6 @@ type JasRunnerParams struct { SignedDescriptions bool SastRules string // Outputs - TargetCount int - ScanResults *results.TargetResults TargetOutputDir string } diff --git a/jas/sast/sastscanner.go b/jas/sast/sastscanner.go index f6d0a213e..e06657b27 100644 --- a/jas/sast/sastscanner.go +++ b/jas/sast/sastscanner.go @@ -68,7 +68,7 @@ func newSastScanManager(scanner *jas.JasScanner, scannerTempDir string, signedDe return } -func (ssm *SastScanManager) Run(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { +func (ssm *SastScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { if err = ssm.createConfigFile(module, ssm.signedDescriptions, ssm.scanner.ScannersExclusions.SastExcludePatterns, ssm.scanner.Exclusions...); err != nil { return } diff --git a/jas/secrets/secretsscanner.go b/jas/secrets/secretsscanner.go index 1565ebd39..b255176b7 100644 --- a/jas/secrets/secretsscanner.go +++ b/jas/secrets/secretsscanner.go @@ -74,7 +74,7 @@ func newSecretsScanManager(scanner *jas.JasScanner, scanType SecretsScanType, sc return } -func (ssm *SecretScanManager) Run(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { +func (ssm *SecretScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { if err = ssm.createConfigFile(module, ssm.scanner.ScannersExclusions.SecretsExcludePatterns, ssm.scanner.Exclusions...); err != nil { return } From d64198518cecd283ee939ce68ade59fecdb37d41 Mon Sep 17 00:00:00 2001 From: attiasas Date: Fri, 13 Feb 2026 01:53:15 +0200 Subject: [PATCH 05/26] deprecate JAS apps config module, use scan target --- commands/audit/audit.go | 22 +++--- commands/scan/scan.go | 2 +- jas/applicability/applicabilitymanager.go | 56 +++++++++++++-- .../applicabilitymanager_test.go | 30 +++++++- jas/common.go | 54 +++++++++----- jas/common_test.go | 15 ++-- jas/iac/iacscanner.go | 59 ++++++++++++--- jas/iac/iacscanner_test.go | 37 +++++++++- jas/maliciouscode/maliciouscodescanner.go | 2 +- .../maliciouscodescanner_test.go | 4 +- jas/runner/jasrunner.go | 58 ++++++++++----- jas/runner/jasrunner_test.go | 22 +++++- jas/sast/sastscanner.go | 71 ++++++++++++++++--- jas/sast/sastscanner_test.go | 4 +- jas/secrets/secretsscanner.go | 60 +++++++++++++--- jas/secrets/secretsscanner_test.go | 45 ++++++++++-- 16 files changed, 440 insertions(+), 101 deletions(-) diff --git a/commands/audit/audit.go b/commands/audit/audit.go index 8f4e7aae0..f655d1ec5 100644 --- a/commands/audit/audit.go +++ b/commands/audit/audit.go @@ -485,7 +485,7 @@ func getTargetResultsToCompare(cmdResults, resultsToCompare *results.SecurityCom return } -//TODO: change +// TODO: change func detectScanTargets(cmdResults *results.SecurityCommandResults, params *AuditParams) { if params.IsSingleTarget() { // NEW logic: @@ -561,10 +561,7 @@ func runParallelAuditScans(cmdResults *results.SecurityCommandResults, auditPara auditParams.Progress().SetHeadlineMsg("Scanning for issues") } // TODO: remove "isNewFlow" once the old flow is fully deprecated. - isNewFlow := true - if _, ok := auditParams.scaScanStrategy.(*scanGraphStrategy.ScanGraphStrategy); ok { - isNewFlow = false - } + isNewFlow := isNewFlow(auditParams.bomGenerator) // Add the scans to the parallel runner if jasScanner, generalJasScanErr = addJasScansToRunner(auditParallelRunner, auditParams, cmdResults, isNewFlow); generalJasScanErr != nil { cmdResults.AddGeneralError(fmt.Errorf("error has occurred during JAS scan process. JAS scan is skipped for the following directories: %s\n%s", strings.Join(cmdResults.GetTargetsPaths(), ","), generalJasScanErr.Error()), auditParams.AllowPartialResults()) @@ -654,7 +651,7 @@ func addJasScansToRunner(auditParallelRunner *utils.SecurityParallelRunner, audi return } auditParallelRunner.JasWg.Add(1) - if _, jasErr := auditParallelRunner.Runner.AddTaskWithError(createJasScansTask(auditParallelRunner, scanResults, serverDetails, auditParams, jasScanner), func(taskErr error) { + if _, jasErr := auditParallelRunner.Runner.AddTaskWithError(createJasScansTask(auditParallelRunner, scanResults, serverDetails, auditParams, jasScanner, isNewFlow), func(taskErr error) { scanResults.AddGeneralError(fmt.Errorf("failed while adding JAS scan tasks: %s", taskErr.Error()), auditParams.AllowPartialResults()) }); jasErr != nil { generalError = fmt.Errorf("failed to create JAS task: %s", jasErr.Error()) @@ -663,7 +660,7 @@ func addJasScansToRunner(auditParallelRunner *utils.SecurityParallelRunner, audi } func createJasScansTask(auditParallelRunner *utils.SecurityParallelRunner, scanResults *results.SecurityCommandResults, - serverDetails *config.ServerDetails, auditParams *AuditParams, scanner *jas.JasScanner) parallel.TaskFunc { + serverDetails *config.ServerDetails, auditParams *AuditParams, scanner *jas.JasScanner, isNewFlow bool) parallel.TaskFunc { return func(threadId int) (generalError error) { defer func() { auditParallelRunner.JasWg.Done() @@ -684,15 +681,18 @@ func createJasScansTask(auditParallelRunner *utils.SecurityParallelRunner, scanR // Run JAS scanners for each scan target for _, targetResult := range scanResults.Targets { if targetResult.AppsConfigModule == nil { - _ = targetResult.AddTargetError(fmt.Errorf("can't find module for path %s", targetResult.Target), auditParams.AllowPartialResults()) - continue + if !isNewFlow { + log.Debug(fmt.Sprintf("can't find apps config module for path %s", targetResult.Target)) + } else { + _ = targetResult.AddTargetError(fmt.Errorf("can't find module for path %s", targetResult.Target), auditParams.AllowPartialResults()) + continue + } } - appsConfigModule := *targetResult.AppsConfigModule params := runner.JasRunnerParams{ Runner: auditParallelRunner, ServerDetails: serverDetails, Scanner: scanner, - Module: appsConfigModule, + Module: targetResult.AppsConfigModule, ConfigProfile: auditParams.GetConfigProfile(), ScansToPerform: auditParams.ScansToPerform(), SourceResultsToCompare: scanner.GetResultsToCompareByRelativePath(utils.GetRelativePath(targetResult.Target, scanResults.GetCommonParentPath())), diff --git a/commands/scan/scan.go b/commands/scan/scan.go index 7ebfa8747..dc0f2dc6e 100644 --- a/commands/scan/scan.go +++ b/commands/scan/scan.go @@ -591,7 +591,7 @@ func (scanCmd *ScanCommand) RunBinaryJasScans(cmdType utils.CommandType, msi str Runner: jasFileProducerConsumer, ServerDetails: scanCmd.serverDetails, Scanner: scanner, - Module: module, + Module: &module, TargetOutputDir: scanCmd.outputDir, ScansToPerform: scanCmd.scansToPerform, CvesProvider: func() (directCves []string, indirectCves []string) { diff --git a/jas/applicability/applicabilitymanager.go b/jas/applicability/applicabilitymanager.go index 870b117f8..74a233e1a 100644 --- a/jas/applicability/applicabilitymanager.go +++ b/jas/applicability/applicabilitymanager.go @@ -10,6 +10,7 @@ import ( "github.com/jfrog/jfrog-cli-security/utils" "github.com/jfrog/jfrog-cli-security/utils/formats/sarifutils" "github.com/jfrog/jfrog-cli-security/utils/jasutils" + "github.com/jfrog/jfrog-cli-security/utils/results" clientutils "github.com/jfrog/jfrog-client-go/utils" "github.com/jfrog/jfrog-client-go/utils/log" "github.com/owenrumney/go-sarif/v3/pkg/report/v210/sarif" @@ -44,7 +45,8 @@ type ContextualAnalysisScanParams struct { ThirdPartyContextualAnalysis bool ThreadId int TargetCount int - Module jfrogappsconfig.Module + Module *jfrogappsconfig.Module + Target results.ScanTarget } // The getApplicabilityScanResults function runs the applicability scan flow, which includes the following steps: @@ -64,8 +66,7 @@ func RunApplicabilityScan(params ContextualAnalysisScanParams, scanner *jas.JasS } startTime := time.Now() log.Info(jas.GetStartJasScanLog(utils.ContextualAnalysisScan, params.ThreadId, params.Module, params.TargetCount)) - // Applicability scan does not produce violations. - if results, _, err = applicabilityScanManager.scanner.Run(applicabilityScanManager, params.Module); err != nil { + if results, err = runApplicabilityScan(applicabilityScanManager, params); err != nil { return } applicableCveCount := sarifutils.GetRulesPropertyCount("applicability", "applicable", results...) @@ -75,6 +76,17 @@ func RunApplicabilityScan(params ContextualAnalysisScanParams, scanner *jas.JasS return } +func runApplicabilityScan(applicabilityScanManager *ApplicabilityScanManager, params ContextualAnalysisScanParams) (vulnerabilitiesSarifRuns []*sarif.Run, err error) { + if params.Module == nil { + // Applicability scan does not produce violations. + vulnerabilitiesSarifRuns, _, err = applicabilityScanManager.scanner.Run(applicabilityScanManager, params.Target) + return + } + // Applicability scan does not produce violations. + vulnerabilitiesSarifRuns, _, err = applicabilityScanManager.scanner.DeprecatedRun(applicabilityScanManager, *params.Module) + return +} + func newApplicabilityScanManager(directDependenciesCves, indirectDependenciesCves []string, scanner *jas.JasScanner, thirdPartyScan bool, scanType ApplicabilityScanType, scannerTempDir string) (manager *ApplicabilityScanManager) { return &ApplicabilityScanManager{ directDependenciesCves: directDependenciesCves, @@ -88,13 +100,23 @@ func newApplicabilityScanManager(directDependenciesCves, indirectDependenciesCve } func (asm *ApplicabilityScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { - if err = asm.createConfigFile(module, asm.scanner.ScannersExclusions.ContextualAnalysisExcludePatterns, asm.scanner.Exclusions...); err != nil { + if err = asm.deprecatedCreateConfigFile(module, asm.scanner.ScannersExclusions.ContextualAnalysisExcludePatterns, asm.scanner.Exclusions...); err != nil { return } if err = asm.runAnalyzerManager(); err != nil { return } - return jas.ReadJasScanRunsFromFile(asm.resultsFileName, module.SourceRoot, applicabilityDocsUrlSuffix, asm.scanner.MinSeverity) + return jas.ReadJasScanRunsFromFile(asm.resultsFileName, applicabilityDocsUrlSuffix, asm.scanner.MinSeverity, module.SourceRoot) +} + +func (asm *ApplicabilityScanManager) Run(target results.ScanTarget) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { + if err = asm.createConfigFileForTarget(target, asm.scanner.ScannersExclusions.ContextualAnalysisExcludePatterns); err != nil { + return + } + if err = asm.runAnalyzerManager(); err != nil { + return + } + return jas.ReadJasScanRunsFromFile(asm.resultsFileName, applicabilityDocsUrlSuffix, asm.scanner.MinSeverity, target.Include...) } func (asm *ApplicabilityScanManager) cvesExists() bool { @@ -116,7 +138,29 @@ type scanConfiguration struct { ScanType string `yaml:"scantype"` } -func (asm *ApplicabilityScanManager) createConfigFile(module jfrogappsconfig.Module, centralConfigExclusions []string, exclusions ...string) error { +func (asm *ApplicabilityScanManager) createConfigFileForTarget(target results.ScanTarget, centralConfigExclusions []string) error { + excludePatterns := jas.GetExcludePatternsForTarget(target, centralConfigExclusions) + if asm.thirdPartyScan { + log.Info("Including node modules folder in applicability scan") + excludePatterns = removeElementFromSlice(excludePatterns, utils.NodeModulesPattern) + } + configFileContent := applicabilityScanConfig{ + Scans: []scanConfiguration{ + { + Roots: target.Include, + Output: asm.resultsFileName, + Type: asm.commandType, + GrepDisable: false, + CveWhitelist: asm.directDependenciesCves, + IndirectCveWhitelist: asm.indirectDependenciesCves, + SkippedDirs: excludePatterns, + }, + }, + } + return jas.CreateScannersConfigFile(asm.configFileName, configFileContent, jasutils.Applicability) +} + +func (asm *ApplicabilityScanManager) deprecatedCreateConfigFile(module jfrogappsconfig.Module, centralConfigExclusions []string, exclusions ...string) error { roots, err := jas.GetSourceRoots(module, nil) if err != nil { return err diff --git a/jas/applicability/applicabilitymanager_test.go b/jas/applicability/applicabilitymanager_test.go index 5d3286512..fb71ab371 100644 --- a/jas/applicability/applicabilitymanager_test.go +++ b/jas/applicability/applicabilitymanager_test.go @@ -163,7 +163,7 @@ func TestNewApplicabilityScanManager_VulnerabilitiesDontExist(t *testing.T) { } } -func TestCreateConfigFile_VerifyFileWasCreated(t *testing.T) { +func TestApplicabilityScan_CreateDeprecatedConfigFile_VerifyFileWasCreated(t *testing.T) { // Arrange scanner, cleanUp := jas.InitJasTest(t) defer cleanUp() @@ -175,7 +175,7 @@ func TestCreateConfigFile_VerifyFileWasCreated(t *testing.T) { currWd, err := coreutils.GetWorkingDirectory() assert.NoError(t, err) - err = applicabilityManager.createConfigFile(jfrogappsconfig.Module{SourceRoot: currWd}, []string{}) + err = applicabilityManager.deprecatedCreateConfigFile(jfrogappsconfig.Module{SourceRoot: currWd}, []string{}) assert.NoError(t, err) defer func() { @@ -190,6 +190,30 @@ func TestCreateConfigFile_VerifyFileWasCreated(t *testing.T) { assert.True(t, len(fileContent) > 0) } +func TestApplicabilityScan_CreateConfigFile_VerifyFileWasCreated(t *testing.T) { + scanner, cleanUp := jas.InitJasTest(t) + defer cleanUp() + scannerTempDir, err := jas.CreateScannerTempDirectory(scanner, jasutils.Applicability.String(), 0) + require.NoError(t, err) + directCves, indirectCves := results.ExtractCvesFromScanResponse(jas.FakeBasicXrayResults, mockDirectDependencies) + applicabilityManager := newApplicabilityScanManager(directCves, indirectCves, scanner, false, ApplicabilityScannerType, scannerTempDir) + + currWd, err := coreutils.GetWorkingDirectory() + assert.NoError(t, err) + assert.NoError(t, applicabilityManager.createConfigFileForTarget(results.ScanTarget{Target: currWd}, []string{})) + + defer func() { + err = os.Remove(applicabilityManager.configFileName) + assert.NoError(t, err) + }() + + _, fileNotExistError := os.Stat(applicabilityManager.configFileName) + assert.NoError(t, fileNotExistError) + fileContent, err := os.ReadFile(applicabilityManager.configFileName) + assert.NoError(t, err) + assert.True(t, len(fileContent) > 0) +} + func TestParseResults_NewApplicabilityStatuses(t *testing.T) { testCases := []struct { name string @@ -236,7 +260,7 @@ func TestParseResults_NewApplicabilityStatuses(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { applicabilityManager.resultsFileName = filepath.Join(jas.GetTestDataPath(), "applicability-scan", tc.fileName) - vulnerabilitiesResults, _, innerErr := jas.ReadJasScanRunsFromFile(applicabilityManager.resultsFileName, jfrogAppsConfigForTest.Modules[0].SourceRoot, applicabilityDocsUrlSuffix, scanner.MinSeverity) + vulnerabilitiesResults, _, innerErr := jas.ReadJasScanRunsFromFile(applicabilityManager.resultsFileName, applicabilityDocsUrlSuffix, scanner.MinSeverity, jfrogAppsConfigForTest.Modules[0].SourceRoot) if assert.NoError(t, innerErr) && assert.NotNil(t, vulnerabilitiesResults) { assert.Len(t, vulnerabilitiesResults, 1) assert.Len(t, vulnerabilitiesResults[0].Results, tc.expectedResults) diff --git a/jas/common.go b/jas/common.go index 10d47139f..c6a66fd3f 100644 --- a/jas/common.go +++ b/jas/common.go @@ -176,10 +176,10 @@ func CreateJFrogAppsConfig(workingDirs []string) (*jfrogappsconfig.JFrogAppsConf type ScannerCmd interface { DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) - // Run(target results.ScanTarget) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) + Run(target results.ScanTarget) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) } -func (a *JasScanner) Run(scannerCmd ScannerCmd, module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { +func (a *JasScanner) DeprecatedRun(scannerCmd ScannerCmd, module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { func() { if vulnerabilitiesSarifRuns, violationsSarifRuns, err = scannerCmd.DeprecatedRun(module); err != nil { return @@ -188,7 +188,11 @@ func (a *JasScanner) Run(scannerCmd ScannerCmd, module jfrogappsconfig.Module) ( return } -func ReadJasScanRunsFromFile(fileName, wd, informationUrlSuffix string, minSeverity severityutils.Severity) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { +func (a *JasScanner) Run(scannerCmd ScannerCmd, target results.ScanTarget) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { + return scannerCmd.Run(target) +} + +func ReadJasScanRunsFromFile(fileName, informationUrlSuffix string, minSeverity severityutils.Severity, workingDirs ...string) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { violationFileName := fmt.Sprintf("%s_violations.sarif", strings.TrimSuffix(fileName, ".sarif")) vulnFileExist, violationsFileExist, err := checkJasResultsFilesExist(fileName, violationFileName) if err != nil { @@ -199,13 +203,13 @@ func ReadJasScanRunsFromFile(fileName, wd, informationUrlSuffix string, minSever return } if vulnFileExist { - vulnerabilitiesSarifRuns, err = readJasScanRunsFromFile(fileName, wd, informationUrlSuffix, minSeverity) + vulnerabilitiesSarifRuns, err = readJasScanRunsFromFile(fileName, informationUrlSuffix, minSeverity, workingDirs...) if err != nil { return } } if violationsFileExist { - violationsSarifRuns, err = readJasScanRunsFromFile(violationFileName, wd, informationUrlSuffix, minSeverity) + violationsSarifRuns, err = readJasScanRunsFromFile(violationFileName, informationUrlSuffix, minSeverity, workingDirs...) } return } @@ -220,18 +224,18 @@ func checkJasResultsFilesExist(vulnFileName, violationsFileName string) (vulnFil return } -func readJasScanRunsFromFile(fileName, wd, informationUrlSuffix string, minSeverity severityutils.Severity) (sarifRuns []*sarif.Run, err error) { +func readJasScanRunsFromFile(fileName, informationUrlSuffix string, minSeverity severityutils.Severity, workingDirs ...string) (sarifRuns []*sarif.Run, err error) { if sarifRuns, err = sarifutils.ReadScanRunsFromFile(fileName); err != nil { return } - processSarifRuns(sarifRuns, wd, informationUrlSuffix, minSeverity) + processSarifRuns(sarifRuns, informationUrlSuffix, minSeverity, workingDirs...) return } // This function processes the Sarif runs results: update invocations, fill missing information, exclude results and adding scores to rules -func processSarifRuns(sarifRuns []*sarif.Run, wd string, informationUrlSuffix string, minSeverity severityutils.Severity) { +func processSarifRuns(sarifRuns []*sarif.Run, informationUrlSuffix string, minSeverity severityutils.Severity, workingDirs ...string) { for _, sarifRun := range sarifRuns { - fillMissingRequiredInvocationInformation(wd, sarifRun) + fillMissingRequiredInvocationInformation(sarifRun, workingDirs...) fillMissingRequiredDriverInformation(utils.BaseDocumentationURL+informationUrlSuffix, GetAnalyzerManagerVersion(), sarifRun) addScoreToRunRules(sarifRun) // Process results @@ -259,15 +263,15 @@ func isValidVersion(version string) bool { return unicode.IsDigit(firstChar) } -func fillMissingRequiredInvocationInformation(wd string, run *sarif.Run) { - // If no invocations are present, add an empty invocation with an empty working directory - if len(run.Invocations) == 0 { - run.Invocations = append(run.Invocations, sarif.NewInvocation().WithWorkingDirectory(sarif.NewArtifactLocation())) - } +func fillMissingRequiredInvocationInformation(run *sarif.Run, workingDirs ...string) { + isExeSuccess := false for _, invocation := range run.Invocations { + isExeSuccess = isExeSuccess || (invocation.ExecutionSuccessful != nil && *invocation.ExecutionSuccessful) + } + invocations := []*sarif.Invocation{} + for _, wd := range workingDirs { // Set the actual working directory to the invocation, not the analyzerManager directory - // Also used to calculate relative paths if needed with it - invocation.WorkingDirectory.WithURI(utils.ToURI(wd)) + invocation := sarif.NewInvocation().WithExecutionSuccessful(isExeSuccess).WithWorkingDirectory(sarif.NewArtifactLocation().WithURI(utils.ToURI(wd))) // Make sure the invocation not omitted attributes are set (the lib reports them as required but spec says they are optional) if len(invocation.NotificationConfigurationOverrides) == 0 { invocation.NotificationConfigurationOverrides = make([]*sarif.ConfigurationOverride, 0) @@ -281,7 +285,9 @@ func fillMissingRequiredInvocationInformation(wd string, run *sarif.Run) { if len(invocation.ToolExecutionNotifications) == 0 { invocation.ToolExecutionNotifications = make([]*sarif.Notification, 0) } + invocations = append(invocations, invocation) } + run.Invocations = invocations } func excludeSuppressResults(sarifResults []*sarif.Result) []*sarif.Result { @@ -398,7 +404,10 @@ func GetModule(root string, appConfig *jfrogappsconfig.JFrogAppsConfig) *jfrogap return nil } -func ShouldSkipScanner(module jfrogappsconfig.Module, scanType jasutils.JasScanType) bool { +func ShouldSkipScanner(module *jfrogappsconfig.Module, scanType jasutils.JasScanType) bool { + if module == nil { + return false + } lowerScanType := strings.ToLower(string(scanType)) if slices.Contains(module.ExcludeScanners, lowerScanType) { log.Info(fmt.Sprintf("Skipping %s scanning", scanType)) @@ -442,6 +451,13 @@ func GetExcludePatterns(module jfrogappsconfig.Module, scanner *jfrogappsconfig. return uniqueExcludePatterns.ToSlice() } +func GetExcludePatternsForTarget(target results.ScanTarget, centralConfigExclusions []string) []string { + uniqueExcludePatterns := datastructures.MakeSet[string]() + uniqueExcludePatterns.AddElements(centralConfigExclusions...) + uniqueExcludePatterns.AddElements(convertToFilesExcludePatterns(target.Exclude)...) + return uniqueExcludePatterns.ToSlice() +} + // This function convert every exclude pattern to a file exclude pattern form. // Checks are being made since some of the exclude patters we get here might already be in a file exclude pattern func convertToFilesExcludePatterns(excludePatterns []string) (converted []string) { @@ -522,9 +538,9 @@ func UpdateJasScannerWithExcludePatternsFromProfile(scanner *JasScanner, profile scanner.ScannersExclusions.IacExcludePatterns = profile.Modules[0].ScanConfig.IacScannerConfig.ExcludePatterns } -func GetStartJasScanLog(scanType utils.SubScanType, threadId int, module jfrogappsconfig.Module, targetCount int) string { +func GetStartJasScanLog(scanType utils.SubScanType, threadId int, module *jfrogappsconfig.Module, targetCount int) string { outLog := goclientutils.GetLogMsgPrefix(threadId, false) + fmt.Sprintf("Running %s scan", scanType.ToTextString()) - if targetCount != 1 { + if targetCount != 1 && module != nil { outLog += fmt.Sprintf(" on target '%s'...", module.SourceRoot) } else { outLog += "..." diff --git a/jas/common_test.go b/jas/common_test.go index 56f3a61d1..a5042e572 100644 --- a/jas/common_test.go +++ b/jas/common_test.go @@ -69,11 +69,18 @@ func TestCreateJFrogAppsConfigWithConfig(t *testing.T) { func TestShouldSkipScanner(t *testing.T) { module := jfrogAppsConfig.Module{} - assert.False(t, ShouldSkipScanner(module, jasutils.IaC)) + assert.False(t, ShouldSkipScanner(&module, jasutils.IaC)) module = jfrogAppsConfig.Module{ExcludeScanners: []string{"sast"}} - assert.False(t, ShouldSkipScanner(module, jasutils.IaC)) - assert.True(t, ShouldSkipScanner(module, jasutils.Sast)) + assert.False(t, ShouldSkipScanner(&module, jasutils.IaC)) + assert.True(t, ShouldSkipScanner(&module, jasutils.Sast)) + + // no module + assert.False(t, ShouldSkipScanner(nil, jasutils.IaC)) + assert.False(t, ShouldSkipScanner(nil, jasutils.Sast)) + assert.False(t, ShouldSkipScanner(nil, jasutils.Secrets)) + assert.False(t, ShouldSkipScanner(nil, jasutils.MaliciousCode)) + assert.False(t, ShouldSkipScanner(nil, jasutils.Applicability)) } var getSourceRootsCases = []struct { @@ -628,7 +635,7 @@ func TestProcessSarifRuns(t *testing.T) { sarifutils.CreateResultWithOneLocation(fmt.Sprintf("file://%s", filepath.Join(wd, "dir", "file2")), 0, 0, 0, 0, "snippet", "rule1", "error"), )) - processSarifRuns(dummyReport.Runs, wd, "docs URL", severityutils.High) + processSarifRuns(dummyReport.Runs, "docs URL", severityutils.High, wd) run := dummyReport.Runs[0] // Check Invocation added. diff --git a/jas/iac/iacscanner.go b/jas/iac/iacscanner.go index 3bede78d5..101c86d4b 100644 --- a/jas/iac/iacscanner.go +++ b/jas/iac/iacscanner.go @@ -9,6 +9,7 @@ import ( "github.com/jfrog/jfrog-cli-security/utils" "github.com/jfrog/jfrog-cli-security/utils/formats/sarifutils" "github.com/jfrog/jfrog-cli-security/utils/jasutils" + "github.com/jfrog/jfrog-cli-security/utils/results" "github.com/jfrog/jfrog-client-go/utils/log" "github.com/owenrumney/go-sarif/v3/pkg/report/v210/sarif" @@ -28,28 +29,43 @@ type IacScanManager struct { resultsFileName string } +type IacScanParams struct { + ThreadId int + TargetCount int + ResultsToCompare []*sarif.Run + Module *jfrogappsconfig.Module + Target results.ScanTarget +} + // The getIacScanResults function runs the iac scan flow, which includes the following steps: // Creating an IacScanManager object. // Running the analyzer manager executable. // Parsing the analyzer manager results. -func RunIacScan(scanner *jas.JasScanner, module jfrogappsconfig.Module, targetCount, threadId int, resultsToCompare ...*sarif.Run) (vulnerabilitiesResults []*sarif.Run, violationsResults []*sarif.Run, err error) { +func RunIacScan(scanner *jas.JasScanner, params IacScanParams) (vulnerabilitiesResults []*sarif.Run, violationsResults []*sarif.Run, err error) { var scannerTempDir string - if scannerTempDir, err = jas.CreateScannerTempDirectory(scanner, jasutils.IaC.String(), threadId); err != nil { + if scannerTempDir, err = jas.CreateScannerTempDirectory(scanner, jasutils.IaC.String(), params.ThreadId); err != nil { return } - iacScanManager, err := newIacScanManager(scanner, scannerTempDir, resultsToCompare...) + iacScanManager, err := newIacScanManager(scanner, scannerTempDir, params.ResultsToCompare...) if err != nil { return } startTime := time.Now() - log.Info(jas.GetStartJasScanLog(utils.IacScan, threadId, module, targetCount)) - if vulnerabilitiesResults, violationsResults, err = iacScanManager.scanner.Run(iacScanManager, module); err != nil { + log.Info(jas.GetStartJasScanLog(utils.IacScan, params.ThreadId, params.Module, params.TargetCount)) + if vulnerabilitiesResults, violationsResults, err = runIacScan(iacScanManager, params); err != nil { return } - log.Info(utils.GetScanFindingsLog(utils.IacScan, sarifutils.GetResultsLocationCount(vulnerabilitiesResults...), startTime, threadId)) + log.Info(utils.GetScanFindingsLog(utils.IacScan, sarifutils.GetResultsLocationCount(vulnerabilitiesResults...), startTime, params.ThreadId)) return } +func runIacScan(iacScanManager *IacScanManager, params IacScanParams) (vulnerabilitiesResults []*sarif.Run, violationsResults []*sarif.Run, err error) { + if params.Module == nil { + return iacScanManager.scanner.Run(iacScanManager, params.Target) + } + return iacScanManager.scanner.DeprecatedRun(iacScanManager, *params.Module) +} + func newIacScanManager(scanner *jas.JasScanner, scannerTempDir string, resultsToCompare ...*sarif.Run) (manager *IacScanManager, err error) { manager = &IacScanManager{ scanner: scanner, @@ -70,13 +86,23 @@ func newIacScanManager(scanner *jas.JasScanner, scannerTempDir string, resultsTo } func (iac *IacScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { - if err = iac.createConfigFile(module, iac.scanner.ScannersExclusions.IacExcludePatterns, iac.scanner.Exclusions...); err != nil { + if err = iac.deprecatedCreateConfigFile(module, iac.scanner.ScannersExclusions.IacExcludePatterns, iac.scanner.Exclusions...); err != nil { + return + } + if err = iac.runAnalyzerManager(); err != nil { + return + } + return jas.ReadJasScanRunsFromFile(iac.resultsFileName, iacDocsUrlSuffix, iac.scanner.MinSeverity, module.SourceRoot) +} + +func (iac *IacScanManager) Run(target results.ScanTarget) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { + if err = iac.createConfigFileForTarget(target, iac.scanner.ScannersExclusions.IacExcludePatterns); err != nil { return } if err = iac.runAnalyzerManager(); err != nil { return } - return jas.ReadJasScanRunsFromFile(iac.resultsFileName, module.SourceRoot, iacDocsUrlSuffix, iac.scanner.MinSeverity) + return jas.ReadJasScanRunsFromFile(iac.resultsFileName, iacDocsUrlSuffix, iac.scanner.MinSeverity, target.Include...) } type iacScanConfig struct { @@ -91,7 +117,7 @@ type iacScanConfiguration struct { SkippedDirs []string `yaml:"skipped-folders"` } -func (iac *IacScanManager) createConfigFile(module jfrogappsconfig.Module, centralConfigExclusions []string, exclusions ...string) error { +func (iac *IacScanManager) deprecatedCreateConfigFile(module jfrogappsconfig.Module, centralConfigExclusions []string, exclusions ...string) error { roots, err := jas.GetSourceRoots(module, module.Scanners.Iac) if err != nil { return err @@ -110,6 +136,21 @@ func (iac *IacScanManager) createConfigFile(module jfrogappsconfig.Module, centr return jas.CreateScannersConfigFile(iac.configFileName, configFileContent, jasutils.IaC) } +func (iac *IacScanManager) createConfigFileForTarget(target results.ScanTarget, centralConfigExclusions []string) error { + configFileContent := iacScanConfig{ + Scans: []iacScanConfiguration{ + { + Roots: target.Include, + Output: iac.resultsFileName, + PathToResultsToCompare: iac.resultsToCompareFileName, + Type: iacScannerType, + SkippedDirs: jas.GetExcludePatternsForTarget(target, centralConfigExclusions), + }, + }, + } + return jas.CreateScannersConfigFile(iac.configFileName, configFileContent, jasutils.IaC) +} + func (iac *IacScanManager) runAnalyzerManager() error { return iac.scanner.AnalyzerManager.Exec(iac.configFileName, iacScanCommand, filepath.Dir(iac.scanner.AnalyzerManager.AnalyzerManagerFullPath), iac.scanner.ServerDetails, iac.scanner.EnvVars) } diff --git a/jas/iac/iacscanner_test.go b/jas/iac/iacscanner_test.go index d07582d82..294127749 100644 --- a/jas/iac/iacscanner_test.go +++ b/jas/iac/iacscanner_test.go @@ -7,6 +7,7 @@ import ( "github.com/jfrog/jfrog-cli-security/utils/formats/sarifutils" "github.com/jfrog/jfrog-cli-security/utils/jasutils" + "github.com/jfrog/jfrog-cli-security/utils/results" "github.com/jfrog/jfrog-client-go/utils/io/fileutils" "github.com/stretchr/testify/require" @@ -56,18 +57,48 @@ func TestNewIacScanManagerWithFilesToCompare(t *testing.T) { assert.True(t, fileutils.IsPathExists(iacScanManager.resultsToCompareFileName, false)) } +func TestIacScan_CreateDeprecatedConfigFile_VerifyFileWasCreated(t *testing.T) { + scanner, cleanUp := jas.InitJasTest(t) + defer cleanUp() + + scannerTempDir, err := jas.CreateScannerTempDirectory(scanner, jasutils.IaC.String(), 0) + require.NoError(t, err) + iacScanManager, err := newIacScanManager(scanner, scannerTempDir) + require.NoError(t, err) + + currWd, err := coreutils.GetWorkingDirectory() + assert.NoError(t, err) + err = iacScanManager.deprecatedCreateConfigFile(jfrogappsconfig.Module{SourceRoot: currWd}, []string{}) + + defer func() { + err = os.Remove(iacScanManager.configFileName) + assert.NoError(t, err) + }() + + _, fileNotExistError := os.Stat(iacScanManager.configFileName) + assert.NoError(t, fileNotExistError) + fileContent, err := os.ReadFile(iacScanManager.configFileName) + assert.NoError(t, err) + assert.True(t, len(fileContent) > 0) +} + func TestIacScan_CreateConfigFile_VerifyFileWasCreated(t *testing.T) { scanner, cleanUp := jas.InitJasTest(t) defer cleanUp() + tempDir, cleanUpTempDir := coreTests.CreateTempDirWithCallbackAndAssert(t) + defer cleanUpTempDir() + scanner.TempDir = tempDir scannerTempDir, err := jas.CreateScannerTempDirectory(scanner, jasutils.IaC.String(), 0) require.NoError(t, err) + iacScanManager, err := newIacScanManager(scanner, scannerTempDir) require.NoError(t, err) currWd, err := coreutils.GetWorkingDirectory() assert.NoError(t, err) - err = iacScanManager.createConfigFile(jfrogappsconfig.Module{SourceRoot: currWd}, []string{}) + err = iacScanManager.createConfigFileForTarget(results.ScanTarget{Target: currWd}, []string{}) + assert.NoError(t, err) defer func() { err = os.Remove(iacScanManager.configFileName) @@ -93,7 +124,7 @@ func TestIacParseResults_EmptyResults(t *testing.T) { iacScanManager.resultsFileName = filepath.Join(jas.GetTestDataPath(), "iac-scan", "no-violations.sarif") // Act - vulnerabilitiesResults, violationResults, err := jas.ReadJasScanRunsFromFile(iacScanManager.resultsFileName, jfrogAppsConfigForTest.Modules[0].SourceRoot, iacDocsUrlSuffix, scanner.MinSeverity) + vulnerabilitiesResults, violationResults, err := jas.ReadJasScanRunsFromFile(iacScanManager.resultsFileName, iacDocsUrlSuffix, scanner.MinSeverity, jfrogAppsConfigForTest.Modules[0].SourceRoot) if assert.NoError(t, err) && assert.NotNil(t, vulnerabilitiesResults) { assert.Len(t, vulnerabilitiesResults, 1) assert.Empty(t, vulnerabilitiesResults[0].Results) @@ -116,7 +147,7 @@ func TestIacParseResults_ResultsContainIacViolations(t *testing.T) { iacScanManager.resultsFileName = filepath.Join(tempDirPath, "contains-iac-issues.sarif") // Act - vulnerabilitiesResults, violationResults, err := jas.ReadJasScanRunsFromFile(iacScanManager.resultsFileName, jfrogAppsConfigForTest.Modules[0].SourceRoot, iacDocsUrlSuffix, scanner.MinSeverity) + vulnerabilitiesResults, violationResults, err := jas.ReadJasScanRunsFromFile(iacScanManager.resultsFileName, iacDocsUrlSuffix, scanner.MinSeverity, jfrogAppsConfigForTest.Modules[0].SourceRoot) if assert.NoError(t, err) && assert.NotNil(t, vulnerabilitiesResults) { assert.Len(t, vulnerabilitiesResults, 1) assert.Len(t, vulnerabilitiesResults[0].Results, 4) diff --git a/jas/maliciouscode/maliciouscodescanner.go b/jas/maliciouscode/maliciouscodescanner.go index 7f2414d0a..806976c0d 100644 --- a/jas/maliciouscode/maliciouscodescanner.go +++ b/jas/maliciouscode/maliciouscodescanner.go @@ -82,7 +82,7 @@ func (mal *MaliciousScanManager) Run(sourceRoot string) (vulnerabilitiesSarifRun return } // Malicious code scans only return vulnerabilities, not violations - vulnerabilitiesSarifRuns, _, err = jas.ReadJasScanRunsFromFile(mal.resultsFileName, sourceRoot, malDocsUrlSuffix, mal.scanner.MinSeverity) + vulnerabilitiesSarifRuns, _, err = jas.ReadJasScanRunsFromFile(mal.resultsFileName, malDocsUrlSuffix, mal.scanner.MinSeverity, sourceRoot) return } diff --git a/jas/maliciouscode/maliciouscodescanner_test.go b/jas/maliciouscode/maliciouscodescanner_test.go index 82bcc338c..4671cd2b2 100644 --- a/jas/maliciouscode/maliciouscodescanner_test.go +++ b/jas/maliciouscode/maliciouscodescanner_test.go @@ -100,7 +100,7 @@ func TestParseResults_EmptyResults(t *testing.T) { maliciousScanManager.resultsFileName = filepath.Join(jas.GetTestDataPath(), "malicious-scan", "no-malicious.sarif") // Act - vulnerabilitiesResults, _, err := jas.ReadJasScanRunsFromFile(maliciousScanManager.resultsFileName, currWd, malDocsUrlSuffix, scanner.MinSeverity) + vulnerabilitiesResults, _, err := jas.ReadJasScanRunsFromFile(maliciousScanManager.resultsFileName, malDocsUrlSuffix, scanner.MinSeverity, currWd) // Assert if assert.NoError(t, err) && assert.NotNil(t, vulnerabilitiesResults) { @@ -121,7 +121,7 @@ func TestParseResults_ResultsContainMalicious(t *testing.T) { maliciousScanManager.resultsFileName = filepath.Join(jas.GetTestDataPath(), "malicious-scan", "contain-malicious.sarif") // Act - vulnerabilitiesResults, _, err := jas.ReadJasScanRunsFromFile(maliciousScanManager.resultsFileName, currWd, malDocsUrlSuffix, severityutils.Medium) + vulnerabilitiesResults, _, err := jas.ReadJasScanRunsFromFile(maliciousScanManager.resultsFileName, malDocsUrlSuffix, severityutils.Medium, currWd) // Assert if assert.NoError(t, err) && assert.NotNil(t, vulnerabilitiesResults) { diff --git a/jas/runner/jasrunner.go b/jas/runner/jasrunner.go index 478c01bab..46070036d 100644 --- a/jas/runner/jasrunner.go +++ b/jas/runner/jasrunner.go @@ -27,7 +27,7 @@ type JasRunnerParams struct { ServerDetails *config.ServerDetails Scanner *jas.JasScanner // Module / Target flags - Module jfrogappsconfig.Module + Module *jfrogappsconfig.Module ConfigProfile *services.ConfigProfile TargetCount int ScanResults *results.TargetResults @@ -50,15 +50,17 @@ type JasRunnerParams struct { TargetOutputDir string } +func (params JasRunnerParams) runAllScanners() bool { + // For docker scan we support only secrets and contextual scans. + return params.ApplicableScanType == applicability.ApplicabilityScannerType || params.SecretsScanType == secrets.SecretsScannerType +} + // Cves are only available after the SCA scan is performed, so we need a provider to dynamically pass the discovered cves. type CveProvider func() (directCves []string, indirectCves []string) func AddJasScannersTasks(params JasRunnerParams) error { - // For docker scan we support only secrets and contextual scans. - runAllScanners := params.ApplicableScanType == applicability.ApplicabilityScannerType || params.SecretsScanType == secrets.SecretsScannerType - var errorsCollection error - if generalError := addJasScanTaskForModuleIfNeeded(params, utils.ContextualAnalysisScan, runContextualScan(¶ms)); generalError != nil { + if generalError := addJasScanTaskIfNeeded(params, utils.ContextualAnalysisScan, runContextualScan(¶ms)); generalError != nil { // Scan task addition failure should not impact the other scanners tasks addition, therefore we accumulate the errors and return the overall error at the end. errorsCollection = errors.Join(errorsCollection, generalError) } @@ -67,29 +69,29 @@ func AddJasScannersTasks(params JasRunnerParams) error { return errorsCollection } - if generalError := addJasScanTaskForModuleIfNeeded(params, utils.SecretsScan, runSecretsScan(¶ms)); generalError != nil { + if generalError := addJasScanTaskIfNeeded(params, utils.SecretsScan, runSecretsScan(¶ms)); generalError != nil { // Scan task addition failure should not impact the other scanners tasks addition, therefore we accumulate the errors and return the overall error at the end. errorsCollection = errors.Join(errorsCollection, generalError) } - if !runAllScanners { + if !params.runAllScanners() { // Binary scan only supports secrets and contextual scans. return errorsCollection } - if generalError := addJasScanTaskForModuleIfNeeded(params, utils.IacScan, runIacScan(¶ms)); generalError != nil { + if generalError := addJasScanTaskIfNeeded(params, utils.IacScan, runIacScan(¶ms)); generalError != nil { // Scan task addition failure should not impact the other scanners tasks addition, therefore we accumulate the errors and return the overall error at the end. errorsCollection = errors.Join(errorsCollection, generalError) } - if generalError := addJasScanTaskForModuleIfNeeded(params, utils.SastScan, runSastScan(¶ms)); generalError != nil { + if generalError := addJasScanTaskIfNeeded(params, utils.SastScan, runSastScan(¶ms)); generalError != nil { // Scan task addition failure should not impact the other scanners tasks addition, therefore we accumulate the errors and return the overall error at the end. errorsCollection = errors.Join(errorsCollection, generalError) } return errorsCollection } -func addJasScanTaskForModuleIfNeeded(params JasRunnerParams, subScan utils.SubScanType, task parallel.TaskFunc) (generalError error) { +func addJasScanTaskIfNeeded(params JasRunnerParams, subScan utils.SubScanType, task parallel.TaskFunc) (generalError error) { jasType := jasutils.SubScanTypeToJasScanType(subScan) if jasType == "" { return fmt.Errorf("failed to determine Jas scan type for %s", subScan) @@ -113,7 +115,7 @@ func addJasScanTaskForModuleIfNeeded(params JasRunnerParams, subScan utils.SubSc enabled = params.ConfigProfile.Modules[0].ScanConfig.ContextualAnalysisScannerConfig.EnableCaScan && params.ConfigProfile.Modules[0].ScanConfig.ScaScannerConfig.EnableScaScan } if enabled { - generalError = addModuleJasScanTask(jasType, params.Runner, task, params.ScanResults, params.AllowPartialResults) + generalError = addJasScanTask(jasType, params.Runner, task, params.ScanResults, params.AllowPartialResults) } else { log.Debug(fmt.Sprintf("Skipping %s scan as requested by '%s' config profile...", jasType, params.ConfigProfile.ProfileName)) } @@ -123,10 +125,10 @@ func addJasScanTaskForModuleIfNeeded(params JasRunnerParams, subScan utils.SubSc log.Debug(fmt.Sprintf("Skipping %s scan as requested by local module config...", subScan)) return } - return addModuleJasScanTask(jasType, params.Runner, task, params.ScanResults, params.AllowPartialResults) + return addJasScanTask(jasType, params.Runner, task, params.ScanResults, params.AllowPartialResults) } -func addModuleJasScanTask(scanType jasutils.JasScanType, securityParallelRunner *utils.SecurityParallelRunner, task parallel.TaskFunc, scanResults *results.TargetResults, allowSkippingErrors bool) (generalError error) { +func addJasScanTask(scanType jasutils.JasScanType, securityParallelRunner *utils.SecurityParallelRunner, task parallel.TaskFunc, scanResults *results.TargetResults, allowSkippingErrors bool) (generalError error) { securityParallelRunner.JasScannersWg.Add(1) if _, addTaskErr := securityParallelRunner.Runner.AddTaskWithError(task, func(err error) { _ = scanResults.AddTargetError(fmt.Errorf("failed to run %s scan: %s", scanType, err.Error()), allowSkippingErrors) @@ -141,7 +143,15 @@ func runSecretsScan(params *JasRunnerParams) parallel.TaskFunc { defer func() { params.Runner.JasScannersWg.Done() }() - vulnerabilitiesResults, violationsResults, err := secrets.RunSecretsScan(params.Scanner, params.SecretsScanType, params.Module, params.TargetCount, threadId, getSourceRunsToCompare(params, jasutils.Secrets)...) + secretsScanParams := secrets.SecretsScanParams{ + ThreadId: threadId, + TargetCount: params.TargetCount, + ScanType: params.SecretsScanType, + ResultsToCompare: getSourceRunsToCompare(params, jasutils.Secrets), + Module: params.Module, + Target: params.ScanResults.ScanTarget, + } + vulnerabilitiesResults, violationsResults, err := secrets.RunSecretsScan(params.Scanner, secretsScanParams) params.Runner.ResultsMu.Lock() defer params.Runner.ResultsMu.Unlock() // We first add the scan results and only then check for errors, so we can store the exit code in order to report it in the end @@ -158,7 +168,14 @@ func runIacScan(params *JasRunnerParams) parallel.TaskFunc { defer func() { params.Runner.JasScannersWg.Done() }() - vulnerabilitiesResults, violationsResults, err := iac.RunIacScan(params.Scanner, params.Module, params.TargetCount, threadId, getSourceRunsToCompare(params, jasutils.IaC)...) + iacScanParams := iac.IacScanParams{ + ThreadId: threadId, + TargetCount: params.TargetCount, + ResultsToCompare: getSourceRunsToCompare(params, jasutils.IaC), + Module: params.Module, + Target: params.ScanResults.ScanTarget, + } + vulnerabilitiesResults, violationsResults, err := iac.RunIacScan(params.Scanner, iacScanParams) params.Runner.ResultsMu.Lock() defer params.Runner.ResultsMu.Unlock() // We first add the scan results and only then check for errors, so we can store the exit code in order to report it in the end @@ -175,7 +192,16 @@ func runSastScan(params *JasRunnerParams) parallel.TaskFunc { defer func() { params.Runner.JasScannersWg.Done() }() - vulnerabilitiesResults, violationsResults, err := sast.RunSastScan(params.Scanner, params.Module, params.SignedDescriptions, params.SastRules, params.TargetCount, threadId, getSourceRunsToCompare(params, jasutils.Sast)...) + sastScanParams := sast.SastScanParams{ + ThreadId: threadId, + TargetCount: params.TargetCount, + SignedDescriptions: params.SignedDescriptions, + SastRules: params.SastRules, + ResultsToCompare: getSourceRunsToCompare(params, jasutils.Sast), + Module: params.Module, + Target: params.ScanResults.ScanTarget, + } + vulnerabilitiesResults, violationsResults, err := sast.RunSastScan(params.Scanner, sastScanParams) params.Runner.ResultsMu.Lock() defer params.Runner.ResultsMu.Unlock() // We first add the scan results and only then check for errors, so we can store the exit code in order to report it in the end diff --git a/jas/runner/jasrunner_test.go b/jas/runner/jasrunner_test.go index 3d77abf27..23dd61cce 100644 --- a/jas/runner/jasrunner_test.go +++ b/jas/runner/jasrunner_test.go @@ -65,7 +65,7 @@ func TestJasRunner(t *testing.T) { assert.NoError(t, AddJasScannersTasks(testParams)) } -func TestJasRunner_AnalyzerManagerReturnsError(t *testing.T) { +func TestJasRunner_Module_AnalyzerManagerReturnsError(t *testing.T) { assert.NoError(t, testUtils.PrepareAnalyzerManagerResource()) jfrogAppsConfigForTest, _ := jas.CreateJFrogAppsConfig(nil) @@ -76,7 +76,25 @@ func TestJasRunner_AnalyzerManagerReturnsError(t *testing.T) { DirectDependenciesCves: directCves, IndirectDependenciesCves: indirectCves, ScanType: applicability.ApplicabilityScannerType, - Module: jfrogAppsConfigForTest.Modules[0], + Module: &jfrogAppsConfigForTest.Modules[0], + }, + scanner, + ) + // Expect error: + assert.ErrorContains(t, jas.ParseAnalyzerManagerError(jasutils.Applicability, err), "failed to run Applicability scan") +} + +func TestJasRunner_Target_AnalyzerManagerReturnsError(t *testing.T) { + assert.NoError(t, testUtils.PrepareAnalyzerManagerResource()) + + scanner, _ := jas.NewJasScanner(&jas.FakeServerDetails) + directCves, indirectCves := results.ExtractCvesFromScanResponse(jas.FakeBasicXrayResults, []string{"issueId_2_direct_dependency", "issueId_1_direct_dependency"}) + _, err := applicability.RunApplicabilityScan( + applicability.ContextualAnalysisScanParams{ + DirectDependenciesCves: directCves, + IndirectDependenciesCves: indirectCves, + ScanType: applicability.ApplicabilityScannerType, + Target: results.ScanTarget{Target: "target"}, }, scanner, ) diff --git a/jas/sast/sastscanner.go b/jas/sast/sastscanner.go index e06657b27..25dabf1a0 100644 --- a/jas/sast/sastscanner.go +++ b/jas/sast/sastscanner.go @@ -10,6 +10,7 @@ import ( "github.com/jfrog/jfrog-cli-security/utils" "github.com/jfrog/jfrog-cli-security/utils/formats/sarifutils" "github.com/jfrog/jfrog-cli-security/utils/jasutils" + "github.com/jfrog/jfrog-cli-security/utils/results" "github.com/jfrog/jfrog-client-go/utils/log" "github.com/owenrumney/go-sarif/v3/pkg/report/v210/sarif" "golang.org/x/exp/maps" @@ -31,24 +32,41 @@ type SastScanManager struct { resultsFileName string } -func RunSastScan(scanner *jas.JasScanner, module jfrogappsconfig.Module, signedDescriptions bool, sastRules string, targetCount, threadId int, resultsToCompare ...*sarif.Run) (vulnerabilitiesResults []*sarif.Run, violationsResults []*sarif.Run, err error) { +type SastScanParams struct { + ThreadId int + TargetCount int + SignedDescriptions bool + SastRules string + ResultsToCompare []*sarif.Run + Module *jfrogappsconfig.Module + Target results.ScanTarget +} + +func RunSastScan(scanner *jas.JasScanner, params SastScanParams) (vulnerabilitiesResults []*sarif.Run, violationsResults []*sarif.Run, err error) { var scannerTempDir string - if scannerTempDir, err = jas.CreateScannerTempDirectory(scanner, jasutils.Sast.String(), threadId); err != nil { + if scannerTempDir, err = jas.CreateScannerTempDirectory(scanner, jasutils.Sast.String(), params.ThreadId); err != nil { return } - sastScanManager, err := newSastScanManager(scanner, scannerTempDir, signedDescriptions, sastRules, resultsToCompare...) + sastScanManager, err := newSastScanManager(scanner, scannerTempDir, params.SignedDescriptions, params.SastRules, params.ResultsToCompare...) if err != nil { return } startTime := time.Now() - log.Info(jas.GetStartJasScanLog(utils.SastScan, threadId, module, targetCount)) - if vulnerabilitiesResults, violationsResults, err = sastScanManager.scanner.Run(sastScanManager, module); err != nil { + log.Info(jas.GetStartJasScanLog(utils.SastScan, params.ThreadId, params.Module, params.TargetCount)) + if vulnerabilitiesResults, violationsResults, err = runSastScan(sastScanManager, params); err != nil { return } - log.Info(utils.GetScanFindingsLog(utils.SastScan, sarifutils.GetResultsLocationCount(vulnerabilitiesResults...), startTime, threadId)) + log.Info(utils.GetScanFindingsLog(utils.SastScan, sarifutils.GetResultsLocationCount(vulnerabilitiesResults...), startTime, params.ThreadId)) return } +func runSastScan(sastScanManager *SastScanManager, params SastScanParams) (vulnerabilitiesResults []*sarif.Run, violationsResults []*sarif.Run, err error) { + if params.Module == nil { + return sastScanManager.scanner.Run(sastScanManager, params.Target) + } + return sastScanManager.scanner.DeprecatedRun(sastScanManager, *params.Module) +} + func newSastScanManager(scanner *jas.JasScanner, scannerTempDir string, signedDescriptions bool, sastRules string, resultsToCompare ...*sarif.Run) (manager *SastScanManager, err error) { manager = &SastScanManager{ scanner: scanner, @@ -69,13 +87,29 @@ func newSastScanManager(scanner *jas.JasScanner, scannerTempDir string, signedDe } func (ssm *SastScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { - if err = ssm.createConfigFile(module, ssm.signedDescriptions, ssm.scanner.ScannersExclusions.SastExcludePatterns, ssm.scanner.Exclusions...); err != nil { + if err = ssm.deprecatedCreateConfigFile(module, ssm.signedDescriptions, ssm.scanner.ScannersExclusions.SastExcludePatterns, ssm.scanner.Exclusions...); err != nil { return } if err = ssm.runAnalyzerManager(filepath.Dir(ssm.scanner.AnalyzerManager.AnalyzerManagerFullPath)); err != nil { return } - vulnerabilitiesSarifRuns, violationsSarifRuns, err = jas.ReadJasScanRunsFromFile(ssm.resultsFileName, module.SourceRoot, sastDocsUrlSuffix, ssm.scanner.MinSeverity) + vulnerabilitiesSarifRuns, violationsSarifRuns, err = jas.ReadJasScanRunsFromFile(ssm.resultsFileName, sastDocsUrlSuffix, ssm.scanner.MinSeverity, module.SourceRoot) + if err != nil { + return + } + groupResultsByLocation(vulnerabilitiesSarifRuns) + groupResultsByLocation(violationsSarifRuns) + return +} + +func (ssm *SastScanManager) Run(target results.ScanTarget) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { + if err = ssm.createConfigFileForTarget(target, ssm.scanner.ScannersExclusions.SastExcludePatterns); err != nil { + return + } + if err = ssm.runAnalyzerManager(filepath.Dir(ssm.scanner.AnalyzerManager.AnalyzerManagerFullPath)); err != nil { + return + } + vulnerabilitiesSarifRuns, violationsSarifRuns, err = jas.ReadJasScanRunsFromFile(ssm.resultsFileName, sastDocsUrlSuffix, ssm.scanner.MinSeverity, target.Include...) if err != nil { return } @@ -104,7 +138,7 @@ type sastParameters struct { SignedDescriptions bool `yaml:"signed_descriptions,omitempty"` } -func (ssm *SastScanManager) createConfigFile(module jfrogappsconfig.Module, signedDescriptions bool, centralConfigExclusions []string, exclusions ...string) error { +func (ssm *SastScanManager) deprecatedCreateConfigFile(module jfrogappsconfig.Module, signedDescriptions bool, centralConfigExclusions []string, exclusions ...string) error { sastScanner := module.Scanners.Sast if sastScanner == nil { sastScanner = &jfrogappsconfig.SastScanner{} @@ -133,6 +167,25 @@ func (ssm *SastScanManager) createConfigFile(module jfrogappsconfig.Module, sign return jas.CreateScannersConfigFile(ssm.configFileName, configFileContent, jasutils.Sast) } +func (ssm *SastScanManager) createConfigFileForTarget(target results.ScanTarget, centralConfigExclusions []string) error { + configFileContent := sastScanConfig{ + Scans: []scanConfiguration{ + { + Type: sastScannerType, + Roots: target.Include, + Output: ssm.resultsFileName, + PathToResultsToCompare: ssm.resultsToCompareFileName, + SastParameters: sastParameters{ + SignedDescriptions: ssm.signedDescriptions, + }, + ExcludePatterns: jas.GetExcludePatternsForTarget(target, centralConfigExclusions), + UserRules: ssm.sastRules, + }, + }, + } + return jas.CreateScannersConfigFile(ssm.configFileName, configFileContent, jasutils.Sast) +} + func (ssm *SastScanManager) runAnalyzerManager(wd string) error { return ssm.scanner.AnalyzerManager.ExecWithOutputFile(ssm.configFileName, sastScanCommand, wd, ssm.resultsFileName, ssm.scanner.ServerDetails, ssm.scanner.EnvVars) } diff --git a/jas/sast/sastscanner_test.go b/jas/sast/sastscanner_test.go index 7b51e9f02..c5b1edd07 100644 --- a/jas/sast/sastscanner_test.go +++ b/jas/sast/sastscanner_test.go @@ -67,7 +67,7 @@ func TestSastParseResults_EmptyResults(t *testing.T) { sastScanManager.resultsFileName = filepath.Join(jas.GetTestDataPath(), "sast-scan", "no-violations.sarif") // Act - vulnerabilitiesResults, _, err := jas.ReadJasScanRunsFromFile(sastScanManager.resultsFileName, jfrogAppsConfigForTest.Modules[0].SourceRoot, sastDocsUrlSuffix, scanner.MinSeverity) + vulnerabilitiesResults, _, err := jas.ReadJasScanRunsFromFile(sastScanManager.resultsFileName, sastDocsUrlSuffix, scanner.MinSeverity, jfrogAppsConfigForTest.Modules[0].SourceRoot) // Assert if assert.NoError(t, err) && assert.NotNil(t, vulnerabilitiesResults) { @@ -90,7 +90,7 @@ func TestSastParseResults_ResultsContainIacViolations(t *testing.T) { sastScanManager.resultsFileName = filepath.Join(jas.GetTestDataPath(), "sast-scan", "contains-sast-violations.sarif") // Act - vulnerabilitiesResults, _, err := jas.ReadJasScanRunsFromFile(sastScanManager.resultsFileName, jfrogAppsConfigForTest.Modules[0].SourceRoot, sastDocsUrlSuffix, scanner.MinSeverity) + vulnerabilitiesResults, _, err := jas.ReadJasScanRunsFromFile(sastScanManager.resultsFileName, sastDocsUrlSuffix, scanner.MinSeverity, jfrogAppsConfigForTest.Modules[0].SourceRoot) // Assert if assert.NoError(t, err) && assert.NotNil(t, vulnerabilitiesResults) { diff --git a/jas/secrets/secretsscanner.go b/jas/secrets/secretsscanner.go index b255176b7..62ee3cec6 100644 --- a/jas/secrets/secretsscanner.go +++ b/jas/secrets/secretsscanner.go @@ -10,6 +10,7 @@ import ( "github.com/jfrog/jfrog-cli-security/utils" "github.com/jfrog/jfrog-cli-security/utils/formats/sarifutils" "github.com/jfrog/jfrog-cli-security/utils/jasutils" + "github.com/jfrog/jfrog-cli-security/utils/results" "github.com/jfrog/jfrog-client-go/utils/log" "github.com/owenrumney/go-sarif/v3/pkg/report/v210/sarif" ) @@ -34,28 +35,44 @@ type SecretScanManager struct { resultsFileName string } +type SecretsScanParams struct { + ThreadId int + TargetCount int + ScanType SecretsScanType + ResultsToCompare []*sarif.Run + Module *jfrogappsconfig.Module + Target results.ScanTarget +} + // The getSecretsScanResults function runs the secrets scan flow, which includes the following steps: // Creating an SecretScanManager object. // Running the analyzer manager executable. // Parsing the analyzer manager results. -func RunSecretsScan(scanner *jas.JasScanner, scanType SecretsScanType, module jfrogappsconfig.Module, targetCount, threadId int, resultsToCompare ...*sarif.Run) (vulnerabilitiesResults []*sarif.Run, violationsResults []*sarif.Run, err error) { +func RunSecretsScan(scanner *jas.JasScanner, params SecretsScanParams) (vulnerabilitiesResults []*sarif.Run, violationsResults []*sarif.Run, err error) { var scannerTempDir string - if scannerTempDir, err = jas.CreateScannerTempDirectory(scanner, jasutils.Secrets.String(), threadId); err != nil { + if scannerTempDir, err = jas.CreateScannerTempDirectory(scanner, jasutils.Secrets.String(), params.ThreadId); err != nil { return } - secretScanManager, err := newSecretsScanManager(scanner, scanType, scannerTempDir, resultsToCompare...) + secretScanManager, err := newSecretsScanManager(scanner, params.ScanType, scannerTempDir, params.ResultsToCompare...) if err != nil { return } startTime := time.Now() - log.Info(jas.GetStartJasScanLog(utils.SecretsScan, threadId, module, targetCount)) - if vulnerabilitiesResults, violationsResults, err = secretScanManager.scanner.Run(secretScanManager, module); err != nil { + log.Info(jas.GetStartJasScanLog(utils.SecretsScan, params.ThreadId, params.Module, params.TargetCount)) + if vulnerabilitiesResults, violationsResults, err = runSecretsScan(secretScanManager, params); err != nil { return } - log.Info(utils.GetScanFindingsLog(utils.SecretsScan, sarifutils.GetResultsLocationCount(vulnerabilitiesResults...), startTime, threadId)) + log.Info(utils.GetScanFindingsLog(utils.SecretsScan, sarifutils.GetResultsLocationCount(vulnerabilitiesResults...), startTime, params.ThreadId)) return } +func runSecretsScan(secretScanManager *SecretScanManager, params SecretsScanParams) (vulnerabilitiesResults []*sarif.Run, violationsResults []*sarif.Run, err error) { + if params.Module == nil { + return secretScanManager.scanner.Run(secretScanManager, params.Target) + } + return secretScanManager.scanner.DeprecatedRun(secretScanManager, *params.Module) +} + func newSecretsScanManager(scanner *jas.JasScanner, scanType SecretsScanType, scannerTempDir string, resultsToCompare ...*sarif.Run) (manager *SecretScanManager, err error) { manager = &SecretScanManager{ scanner: scanner, @@ -75,13 +92,23 @@ func newSecretsScanManager(scanner *jas.JasScanner, scanType SecretsScanType, sc } func (ssm *SecretScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { - if err = ssm.createConfigFile(module, ssm.scanner.ScannersExclusions.SecretsExcludePatterns, ssm.scanner.Exclusions...); err != nil { + if err = ssm.deprecatedCreateConfigFile(module, ssm.scanner.ScannersExclusions.SecretsExcludePatterns, ssm.scanner.Exclusions...); err != nil { + return + } + if err = ssm.runAnalyzerManager(); err != nil { + return + } + return jas.ReadJasScanRunsFromFile(ssm.resultsFileName, secretsDocsUrlSuffix, ssm.scanner.MinSeverity, module.SourceRoot) +} + +func (ssm *SecretScanManager) Run(target results.ScanTarget) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { + if err = ssm.createConfigFileForTarget(target, ssm.scanner.ScannersExclusions.SecretsExcludePatterns); err != nil { return } if err = ssm.runAnalyzerManager(); err != nil { return } - return jas.ReadJasScanRunsFromFile(ssm.resultsFileName, module.SourceRoot, secretsDocsUrlSuffix, ssm.scanner.MinSeverity) + return jas.ReadJasScanRunsFromFile(ssm.resultsFileName, secretsDocsUrlSuffix, ssm.scanner.MinSeverity, target.Include...) } type secretsScanConfig struct { @@ -96,7 +123,7 @@ type secretsScanConfiguration struct { SkippedDirs []string `yaml:"skipped-folders"` } -func (s *SecretScanManager) createConfigFile(module jfrogappsconfig.Module, centralConfigExclusions []string, exclusions ...string) error { +func (s *SecretScanManager) deprecatedCreateConfigFile(module jfrogappsconfig.Module, centralConfigExclusions []string, exclusions ...string) error { roots, err := jas.GetSourceRoots(module, module.Scanners.Secrets) if err != nil { return err @@ -115,6 +142,21 @@ func (s *SecretScanManager) createConfigFile(module jfrogappsconfig.Module, cent return jas.CreateScannersConfigFile(s.configFileName, configFileContent, jasutils.Secrets) } +func (s *SecretScanManager) createConfigFileForTarget(target results.ScanTarget, centralConfigExclusions []string) error { + configFileContent := secretsScanConfig{ + Scans: []secretsScanConfiguration{ + { + Roots: target.Include, + Output: s.resultsFileName, + PathToResultsToCompare: s.resultsToCompareFileName, + Type: string(s.scanType), + SkippedDirs: jas.GetExcludePatternsForTarget(target, centralConfigExclusions), + }, + }, + } + return jas.CreateScannersConfigFile(s.configFileName, configFileContent, jasutils.Secrets) +} + func (s *SecretScanManager) runAnalyzerManager() error { return s.scanner.AnalyzerManager.Exec(s.configFileName, secretsScanCommand, filepath.Dir(s.scanner.AnalyzerManager.AnalyzerManagerFullPath), s.scanner.ServerDetails, s.scanner.EnvVars) } diff --git a/jas/secrets/secretsscanner_test.go b/jas/secrets/secretsscanner_test.go index 757b282c5..859f88f48 100644 --- a/jas/secrets/secretsscanner_test.go +++ b/jas/secrets/secretsscanner_test.go @@ -7,6 +7,7 @@ import ( "github.com/jfrog/jfrog-cli-security/utils/formats/sarifutils" "github.com/jfrog/jfrog-cli-security/utils/jasutils" + "github.com/jfrog/jfrog-cli-security/utils/results" "github.com/jfrog/jfrog-cli-security/utils/severityutils" "github.com/jfrog/jfrog-client-go/utils/io/fileutils" "github.com/stretchr/testify/require" @@ -51,18 +52,48 @@ func TestNewSecretsScanManagerWithFilesToCompare(t *testing.T) { assert.True(t, fileutils.IsPathExists(secretScanManager.resultsToCompareFileName, false)) } +func TestSecretsScan_CreateDeprecatedConfigFile_VerifyFileWasCreated(t *testing.T) { + scanner, cleanUp := jas.InitJasTest(t) + defer cleanUp() + + scannerTempDir, err := jas.CreateScannerTempDirectory(scanner, jasutils.Secrets.String(), 0) + require.NoError(t, err) + secretScanManager, err := newSecretsScanManager(scanner, SecretsScannerType, scannerTempDir) + require.NoError(t, err) + + currWd, err := coreutils.GetWorkingDirectory() + assert.NoError(t, err) + err = secretScanManager.deprecatedCreateConfigFile(jfrogappsconfig.Module{SourceRoot: currWd}, []string{}) + assert.NoError(t, err) + + defer func() { + err = os.Remove(secretScanManager.configFileName) + assert.NoError(t, err) + }() + + _, fileNotExistError := os.Stat(secretScanManager.configFileName) + assert.NoError(t, fileNotExistError) + fileContent, err := os.ReadFile(secretScanManager.configFileName) + assert.NoError(t, err) + assert.True(t, len(fileContent) > 0) +} + func TestSecretsScan_CreateConfigFile_VerifyFileWasCreated(t *testing.T) { scanner, cleanUp := jas.InitJasTest(t) defer cleanUp() + tempDir, cleanUpTempDir := coreTests.CreateTempDirWithCallbackAndAssert(t) + defer cleanUpTempDir() + scanner.TempDir = tempDir scannerTempDir, err := jas.CreateScannerTempDirectory(scanner, jasutils.Secrets.String(), 0) require.NoError(t, err) + secretScanManager, err := newSecretsScanManager(scanner, SecretsScannerType, scannerTempDir) require.NoError(t, err) currWd, err := coreutils.GetWorkingDirectory() assert.NoError(t, err) - err = secretScanManager.createConfigFile(jfrogappsconfig.Module{SourceRoot: currWd}, []string{}) + err = secretScanManager.createConfigFileForTarget(results.ScanTarget{Target: currWd}, []string{}) assert.NoError(t, err) defer func() { @@ -101,7 +132,7 @@ func TestParseResults_EmptyResults(t *testing.T) { secretScanManager.resultsFileName = filepath.Join(jas.GetTestDataPath(), "secrets-scan", "no-secrets.sarif") // Act - vulnerabilitiesResults, _, err := jas.ReadJasScanRunsFromFile(secretScanManager.resultsFileName, jfrogAppsConfigForTest.Modules[0].SourceRoot, secretsDocsUrlSuffix, scanner.MinSeverity) + vulnerabilitiesResults, _, err := jas.ReadJasScanRunsFromFile(secretScanManager.resultsFileName, secretsDocsUrlSuffix, scanner.MinSeverity, jfrogAppsConfigForTest.Modules[0].SourceRoot) // Assert if assert.NoError(t, err) && assert.NotNil(t, vulnerabilitiesResults) { @@ -126,7 +157,7 @@ func TestParseResults_ResultsContainSecrets(t *testing.T) { secretScanManager.resultsFileName = filepath.Join(jas.GetTestDataPath(), "secrets-scan", "contain-secrets.sarif") // Act - vulnerabilitiesResults, _, err := jas.ReadJasScanRunsFromFile(secretScanManager.resultsFileName, jfrogAppsConfigForTest.Modules[0].SourceRoot, secretsDocsUrlSuffix, severityutils.Medium) + vulnerabilitiesResults, _, err := jas.ReadJasScanRunsFromFile(secretScanManager.resultsFileName, secretsDocsUrlSuffix, severityutils.Medium, jfrogAppsConfigForTest.Modules[0].SourceRoot) // Assert if assert.NoError(t, err) && assert.NotNil(t, vulnerabilitiesResults) { @@ -145,7 +176,13 @@ func TestGetSecretsScanResults_AnalyzerManagerReturnsError(t *testing.T) { defer cleanUp() jfrogAppsConfigForTest, err := jas.CreateJFrogAppsConfig([]string{}) assert.NoError(t, err) - vulnerabilitiesResults, _, err := RunSecretsScan(scanner, SecretsScannerType, jfrogAppsConfigForTest.Modules[0], 1, 0) + secretsScanParams := SecretsScanParams{ + TargetCount: 1, + ScanType: SecretsScannerType, + Module: &jfrogAppsConfigForTest.Modules[0], + Target: results.ScanTarget{Target: jfrogAppsConfigForTest.Modules[0].SourceRoot}, + } + vulnerabilitiesResults, _, err := RunSecretsScan(scanner, secretsScanParams) assert.Error(t, err) assert.ErrorContains(t, jas.ParseAnalyzerManagerError(jasutils.Secrets, err), "failed to run Secrets scan") assert.Nil(t, vulnerabilitiesResults) From 12005ea498c7354695d0fb86ebabd72096819192 Mon Sep 17 00:00:00 2001 From: attiasas Date: Fri, 13 Feb 2026 10:30:35 +0200 Subject: [PATCH 06/26] new scan target detection logic --- commands/audit/audit.go | 49 ++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/commands/audit/audit.go b/commands/audit/audit.go index f655d1ec5..030b5b007 100644 --- a/commands/audit/audit.go +++ b/commands/audit/audit.go @@ -178,6 +178,7 @@ func logScanPaths(workingDirs []string, isRecursiveScan bool) { func getTargetsInfo(auditCmd *AuditCommand) (workingDirs []string, isRecursiveScan, isSingleTarget bool, err error) { if isNewFlow(auditCmd.bomGenerator) { + // In new flow, we always scan a single target. the SBOM lib can support multiple tech and directories. no need to detect them. isSingleTarget = true } else if utils.IsScanRequested(utils.SourceCode, utils.ScaScan, auditCmd.ScansToPerform()...) || auditCmd.IncludeSbom { // Only in case of SCA scan / SBOM requested and if no workingDirs were provided by the user @@ -315,7 +316,8 @@ func RunAudit(auditParams *AuditParams) (cmdResults *results.SecurityCommandResu return } // Process the scan results and run additional steps if needed. - return processScanResults(auditParams, cmdResults) + // return processScanResults(auditParams, cmdResults) + return cmdResults } func prepareToScan(params *AuditParams) (cmdResults *results.SecurityCommandResults) { @@ -485,28 +487,39 @@ func getTargetResultsToCompare(cmdResults, resultsToCompare *results.SecurityCom return } -// TODO: change func detectScanTargets(cmdResults *results.SecurityCommandResults, params *AuditParams) { if params.IsSingleTarget() { - // NEW logic: - scanTarget := results.ScanTarget{Exclude: params.Exclusions()} - dirs := []string{} - for _, dir := range params.workingDirs { - if !fileutils.IsPathExists(dir, false) { - log.Warn("The working directory", dir, "doesn't exist. Skipping SCA scan...") - continue - } - dirs = append(dirs, dir) + createSingleScanTarget(cmdResults, params) + return + } + detectScaTargetsFromTechnologies(cmdResults, params) +} + +func createSingleScanTarget(cmdResults *results.SecurityCommandResults, params *AuditParams) { + scanTarget := results.ScanTarget{Exclude: params.Exclusions()} + dirs := []string{} + for _, dir := range params.workingDirs { + if !fileutils.IsPathExists(dir, false) { + log.Warn("The working directory", dir, "doesn't exist. Skipping...") + continue } - if len(dirs) == 1 { - scanTarget.Target = dirs[0] - } else { - scanTarget.Include = dirs + dirs = append(dirs, dir) + } + if len(dirs) == 1 { + scanTarget.Target = dirs[0] + } else { + cwd, err := coreutils.GetWorkingDirectory() + if err != nil { + log.Warn("Failed to get working directory. Skipping...") + return } - cmdResults.NewScanResults(scanTarget) - return + scanTarget.Target = cwd + scanTarget.Include = dirs } - // OLD logic: + cmdResults.NewScanResults(scanTarget) +} + +func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults, params *AuditParams) { for _, requestedDirectory := range params.workingDirs { if !fileutils.IsPathExists(requestedDirectory, false) { log.Warn("The working directory", requestedDirectory, "doesn't exist. Skipping SCA scan...") From abc25bb7c1ae948941d80e28341ade77edc34da0 Mon Sep 17 00:00:00 2001 From: attiasas Date: Fri, 13 Feb 2026 23:34:28 +0200 Subject: [PATCH 07/26] start impl new flow in Secrets --- commands/audit/audit.go | 13 +------------ jas/secrets/secretsscanner.go | 2 +- utils/results/results.go | 15 ++++++++++----- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/commands/audit/audit.go b/commands/audit/audit.go index 030b5b007..0368c782c 100644 --- a/commands/audit/audit.go +++ b/commands/audit/audit.go @@ -447,21 +447,10 @@ func populateScanTargets(cmdResults *results.SecurityCommandResults, params *Aud logScanTargetsInfo(cmdResults) } -// TODO: change func logScanTargetsInfo(cmdResults *results.SecurityCommandResults) { // Print the scan targets if len(cmdResults.Targets) == 1 { - outLog := "Performing scans on " - if cmdResults.Targets[0].Technology != techutils.NoTech { - outLog += fmt.Sprintf("%s ", cmdResults.Targets[0].Technology.String()) - } - outLog += "project " - if cmdResults.Targets[0].Name != "" { - outLog += fmt.Sprintf("'%s' ", cmdResults.Targets[0].Name) - } else { - outLog += fmt.Sprintf("'%s' ", cmdResults.Targets[0].Target) - } - log.Info(outLog) + log.Info(fmt.Sprintf("Performing scans on project %s", cmdResults.Targets[0].String())) return } scanInfo, err := coreutils.GetJsonIndent(cmdResults.GetTargets()) diff --git a/jas/secrets/secretsscanner.go b/jas/secrets/secretsscanner.go index 62ee3cec6..60a7330c1 100644 --- a/jas/secrets/secretsscanner.go +++ b/jas/secrets/secretsscanner.go @@ -67,7 +67,7 @@ func RunSecretsScan(scanner *jas.JasScanner, params SecretsScanParams) (vulnerab } func runSecretsScan(secretScanManager *SecretScanManager, params SecretsScanParams) (vulnerabilitiesResults []*sarif.Run, violationsResults []*sarif.Run, err error) { - if params.Module == nil { + if params.Module == nil || len(params.Target.Include) > 0 { return secretScanManager.scanner.Run(secretScanManager, params.Target) } return secretScanManager.scanner.DeprecatedRun(secretScanManager, *params.Module) diff --git a/utils/results/results.go b/utils/results/results.go index afd6fc718..e2f73695e 100644 --- a/utils/results/results.go +++ b/utils/results/results.go @@ -3,6 +3,7 @@ package results import ( "errors" "fmt" + "strings" "sync" "time" @@ -222,12 +223,16 @@ type ScanTarget struct { Technology techutils.Technology `json:"technology,omitempty"` } -func (st ScanTarget) Copy(newTarget string) ScanTarget { - return ScanTarget{Target: newTarget, Name: st.Name, Technology: st.Technology} -} - func (st ScanTarget) String() (str string) { - str = st.Target + if len(st.Include) > 0 { + relaivePaths := []string{} + for _, path := range st.Include { + relaivePaths = append(relaivePaths, utils.GetRelativePath(path, st.Target)) + } + str = fmt.Sprintf("%s {%s}", st.Target, strings.Join(relaivePaths, ", ")) + } else { + str = st.Target + } if st.Name != "" { str = st.Name } From 5fb9622f00e441db6dc43e3fa5acd084aca07bf0 Mon Sep 17 00:00:00 2001 From: attiasas Date: Mon, 16 Feb 2026 13:09:53 +0200 Subject: [PATCH 08/26] update xray lib to 0.0.3-47 --- sca/bom/xrayplugin/plugin/plugin.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sca/bom/xrayplugin/plugin/plugin.go b/sca/bom/xrayplugin/plugin/plugin.go index 7f8040939..a38aa4b2e 100644 --- a/sca/bom/xrayplugin/plugin/plugin.go +++ b/sca/bom/xrayplugin/plugin/plugin.go @@ -23,7 +23,7 @@ import ( const ( xrayLibPluginVersionEnvVariable = "JFROG_CLI_XRAY_LIB_PLUGIN_VERSION" - defaultXrayLibPluginVersion = "0.0.3-43" + defaultXrayLibPluginVersion = "0.0.3-47" xrayLibPluginRtRepository = "xray-scan-lib" XrayLibPluginExecutableName = "xray-scan-plugin" From 1bff793ff00bd6c5a4652f18b442a3b0e87a5fb2 Mon Sep 17 00:00:00 2001 From: attiasas Date: Mon, 16 Feb 2026 13:25:59 +0200 Subject: [PATCH 09/26] fix tests --- git_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/git_test.go b/git_test.go index a118d1ff6..9fef87c35 100644 --- a/git_test.go +++ b/git_test.go @@ -262,8 +262,8 @@ func TestGitAuditJasSkipNotApplicableCvesViolations(t *testing.T) { xrayVersion, xscVersion, "", validations.ValidationParams{ Violations: &validations.ViolationCount{ - ValidateScan: &validations.ScanCount{Sca: 9, Sast: 2, Secrets: 2}, - ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotApplicable: 4, NotCovered: 5, Inactive: 2}, + ValidateScan: &validations.ScanCount{Sca: 10, Sast: 2, Secrets: 2}, + ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotApplicable: 4, NotCovered: 6, Inactive: 2}, }, ExactResultsMatch: true, }, @@ -290,8 +290,8 @@ func TestGitAuditJasSkipNotApplicableCvesViolations(t *testing.T) { xrayVersion, xscVersion, "", validations.ValidationParams{ Violations: &validations.ViolationCount{ - ValidateScan: &validations.ScanCount{Sca: 5, Sast: 2, Secrets: 2}, - ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotCovered: 5, Inactive: 2}, + ValidateScan: &validations.ScanCount{Sca: 6, Sast: 2, Secrets: 2}, + ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotCovered: 6, Inactive: 2}, }, ExactResultsMatch: true, }, From 8eac51258aa53a7860e2c28d05a1b04693190a0e Mon Sep 17 00:00:00 2001 From: attiasas Date: Tue, 17 Feb 2026 12:00:59 +0200 Subject: [PATCH 10/26] fix static tests --- commands/audit/audit.go | 3 +-- utils/results/results.go | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/commands/audit/audit.go b/commands/audit/audit.go index 0368c782c..220f9faa0 100644 --- a/commands/audit/audit.go +++ b/commands/audit/audit.go @@ -316,8 +316,7 @@ func RunAudit(auditParams *AuditParams) (cmdResults *results.SecurityCommandResu return } // Process the scan results and run additional steps if needed. - // return processScanResults(auditParams, cmdResults) - return cmdResults + return processScanResults(auditParams, cmdResults) } func prepareToScan(params *AuditParams) (cmdResults *results.SecurityCommandResults) { diff --git a/utils/results/results.go b/utils/results/results.go index e2f73695e..b13ac4292 100644 --- a/utils/results/results.go +++ b/utils/results/results.go @@ -225,11 +225,11 @@ type ScanTarget struct { func (st ScanTarget) String() (str string) { if len(st.Include) > 0 { - relaivePaths := []string{} + relativePaths := []string{} for _, path := range st.Include { - relaivePaths = append(relaivePaths, utils.GetRelativePath(path, st.Target)) + relativePaths = append(relativePaths, utils.GetRelativePath(path, st.Target)) } - str = fmt.Sprintf("%s {%s}", st.Target, strings.Join(relaivePaths, ", ")) + str = fmt.Sprintf("%s {%s}", st.Target, strings.Join(relativePaths, ", ")) } else { str = st.Target } From 4711afb16cccebdfe2229bc27db6c80c2f87654c Mon Sep 17 00:00:00 2001 From: attiasas Date: Thu, 19 Feb 2026 13:22:12 +0200 Subject: [PATCH 11/26] Fix target creation and JAS results parsing --- commands/audit/audit.go | 91 ++++++++++++----------- commands/audit/auditparams.go | 16 +++- jas/applicability/applicabilitymanager.go | 4 +- jas/common.go | 15 ++++ jas/iac/iacscanner.go | 4 +- jas/sast/sastscanner.go | 4 +- jas/secrets/secretsscanner.go | 6 +- utils/paths.go | 12 +++ 8 files changed, 99 insertions(+), 53 deletions(-) diff --git a/commands/audit/audit.go b/commands/audit/audit.go index 220f9faa0..9982b90c3 100644 --- a/commands/audit/audit.go +++ b/commands/audit/audit.go @@ -176,7 +176,11 @@ func logScanPaths(workingDirs []string, isRecursiveScan bool) { log.Info("Scanning paths:", strings.Join(workingDirs, ", ")) } -func getTargetsInfo(auditCmd *AuditCommand) (workingDirs []string, isRecursiveScan, isSingleTarget bool, err error) { +func getTargetsInfo(auditCmd *AuditCommand) (includeDirs []string, isRecursiveScan, isSingleTarget bool, err error) { + includeDirs, err = utils.GetFullPathsWorkingDirs(auditCmd.workingDirs) + if err != nil { + return + } if isNewFlow(auditCmd.bomGenerator) { // In new flow, we always scan a single target. the SBOM lib can support multiple tech and directories. no need to detect them. isSingleTarget = true @@ -185,11 +189,7 @@ func getTargetsInfo(auditCmd *AuditCommand) (workingDirs []string, isRecursiveSc // We apply a recursive scan on the root repository isRecursiveScan = len(auditCmd.workingDirs) == 0 } - workingDirs, err = coreutils.GetFullPathsWorkingDirs(auditCmd.workingDirs) - if err != nil { - return - } - logScanPaths(workingDirs, isRecursiveScan) + logScanPaths(includeDirs, isRecursiveScan) return } @@ -201,7 +201,7 @@ func isNewFlow(bomGenerator bom.SbomGenerator) bool { } func (auditCmd *AuditCommand) Run() (err error) { - workingDirs, isRecursiveScan, isSingleTarget, err := getTargetsInfo(auditCmd) + includeDirs, isRecursiveScan, isSingleTarget, err := getTargetsInfo(auditCmd) if err != nil { return } @@ -226,7 +226,7 @@ func (auditCmd *AuditCommand) Run() (err error) { SetViolationGenerator(auditCmd.violationGenerator). SetRtResultRepository(auditCmd.rtResultRepository). SetUploadCdxResults(auditCmd.uploadCdxResults). - SetWorkingDirs(workingDirs). + SetWorkingDirs(includeDirs). SetIsSingleTarget(isSingleTarget). SetMinSeverityFilter(auditCmd.minSeverityFilter). SetFixableOnly(auditCmd.fixableOnly). @@ -416,16 +416,8 @@ func isEntitledForJas(xrayManager *xray.XrayServicesManager, auditParams *AuditP func populateScanTargets(cmdResults *results.SecurityCommandResults, params *AuditParams) { // Populate the scan targets based on the provided parameters. detectScanTargets(cmdResults, params) - // Load apps config information - jfrogAppsConfig, err := jas.CreateJFrogAppsConfig(cmdResults.GetTargetsPaths()) - if err != nil { - cmdResults.AddGeneralError(fmt.Errorf("failed to create JFrogAppsConfig: %s", err.Error()), false) - return - } // Populate target information for the scans for _, targetResult := range cmdResults.Targets { - // Get the apps config module and assign it to the target result for JAS scans. - targetResult.AppsConfigModule = jas.GetModule(targetResult.Target, jfrogAppsConfig) // Generate SBOM for the target if requested or for SCA scans. if !params.resultsContext.IncludeSbom && len(params.ScansToPerform()) > 0 && !slices.Contains(params.ScansToPerform(), utils.ScaScan) { // No need to generate the SBOM if we are not going to use it. @@ -476,15 +468,39 @@ func getTargetResultsToCompare(cmdResults, resultsToCompare *results.SecurityCom } func detectScanTargets(cmdResults *results.SecurityCommandResults, params *AuditParams) { - if params.IsSingleTarget() { - createSingleScanTarget(cmdResults, params) + deprecatedAppsConfig := params.DeprecatedAppsConfig() + if deprecatedAppsConfig == nil && !isNewFlow(params.bomGenerator) { + // Load deprecated apps config information + jfrogAppsConfig, err := jas.CreateJFrogAppsConfig(params.workingDirs) + if err != nil { + cmdResults.AddGeneralError(fmt.Errorf("failed to create JFrogAppsConfig: %s", err.Error()), false) + return + } + params.SetDeprecatedAppsConfig(jfrogAppsConfig) + } + cwd, err := coreutils.GetWorkingDirectory() + if err != nil { + cmdResults.AddGeneralError(fmt.Errorf("failed to get working directory: %s", err.Error()), false) return } - detectScaTargetsFromTechnologies(cmdResults, params) + // Create scan targets + if params.IsSingleTarget() { + createSingleScanTarget(cmdResults, params, cwd) + } else { + detectScaTargetsFromTechnologies(cmdResults, params, params.workingDirs) + } + // If no scan targets were detected, we should still proceed with the scans. + if len(params.workingDirs) == 1 && len(cmdResults.Targets) == 0 { + cmdResults.NewScanResults(results.ScanTarget{Target: cwd, Exclude: params.Exclusions()}) + } + for _, targetResult := range cmdResults.Targets { + // Get the apps config module and assign it to the target result for JAS scans. + targetResult.AppsConfigModule = jas.GetModule(targetResult.Target, deprecatedAppsConfig) + } } -func createSingleScanTarget(cmdResults *results.SecurityCommandResults, params *AuditParams) { - scanTarget := results.ScanTarget{Exclude: params.Exclusions()} +func createSingleScanTarget(cmdResults *results.SecurityCommandResults, params *AuditParams, cwd string) { + scanTarget := results.ScanTarget{Target: cwd, Exclude: params.Exclusions()} dirs := []string{} for _, dir := range params.workingDirs { if !fileutils.IsPathExists(dir, false) { @@ -493,22 +509,21 @@ func createSingleScanTarget(cmdResults *results.SecurityCommandResults, params * } dirs = append(dirs, dir) } - if len(dirs) == 1 { - scanTarget.Target = dirs[0] + scanTarget.Include = dirs + if techToWorkingDirs, err := techutils.DetectTechnologiesDescriptors(cwd, true, params.Technologies(), getRequestedDescriptors(params), technologies.GetExcludePattern(params.GetConfigProfile(), true, scanTarget.Exclude...)); err != nil { + log.Warn("Couldn't detect technologies in", cwd, "directory.", err.Error()) } else { - cwd, err := coreutils.GetWorkingDirectory() - if err != nil { - log.Warn("Failed to get working directory. Skipping...") - return + for tech, _ := range techToWorkingDirs { + scanTarget.Technology = tech + // We only support one technology per target for now. should be extended in the future. + break } - scanTarget.Target = cwd - scanTarget.Include = dirs } cmdResults.NewScanResults(scanTarget) } -func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults, params *AuditParams) { - for _, requestedDirectory := range params.workingDirs { +func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults, params *AuditParams, potentialScanTargets []string) { + for _, requestedDirectory := range potentialScanTargets { if !fileutils.IsPathExists(requestedDirectory, false) { log.Warn("The working directory", requestedDirectory, "doesn't exist. Skipping SCA scan...") continue @@ -540,10 +555,6 @@ func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults } } } - // If no scan targets were detected, we should still proceed with the scans. - if len(params.workingDirs) == 1 && len(cmdResults.Targets) == 0 { - cmdResults.NewScanResults(results.ScanTarget{Target: params.workingDirs[0]}) - } } func getRequestedDescriptors(params *AuditParams) map[techutils.Technology][]string { @@ -681,13 +692,9 @@ func createJasScansTask(auditParallelRunner *utils.SecurityParallelRunner, scanR log.Debug(clientutils.GetLogMsgPrefix(threadId, false) + fmt.Sprintf("Using analyzer manager executable at: %s", scanner.AnalyzerManager.AnalyzerManagerFullPath)) // Run JAS scanners for each scan target for _, targetResult := range scanResults.Targets { - if targetResult.AppsConfigModule == nil { - if !isNewFlow { - log.Debug(fmt.Sprintf("can't find apps config module for path %s", targetResult.Target)) - } else { - _ = targetResult.AddTargetError(fmt.Errorf("can't find module for path %s", targetResult.Target), auditParams.AllowPartialResults()) - continue - } + if !isNewFlow && targetResult.AppsConfigModule == nil { + _ = targetResult.AddTargetError(fmt.Errorf("can't find module for path %s", targetResult.Target), auditParams.AllowPartialResults()) + continue } params := runner.JasRunnerParams{ Runner: auditParallelRunner, diff --git a/commands/audit/auditparams.go b/commands/audit/auditparams.go index 332362a42..76a2224f2 100644 --- a/commands/audit/auditparams.go +++ b/commands/audit/auditparams.go @@ -3,6 +3,7 @@ package audit import ( "time" + jfrogappsconfig "github.com/jfrog/jfrog-apps-config/go" "github.com/jfrog/jfrog-client-go/xray/services" xscServices "github.com/jfrog/jfrog-client-go/xsc/services" @@ -18,11 +19,13 @@ import ( ) type AuditParams struct { + // Where to scan + appsConfig *jfrogappsconfig.JFrogAppsConfig + workingDirs []string + isSingleTarget bool // Common params to all scan routines resultsContext results.ResultContext gitContext *xscServices.XscGitInfoContext - workingDirs []string - isSingleTarget bool installFunc func(tech string) error fixableOnly bool minSeverityFilter severityutils.Severity @@ -273,6 +276,15 @@ func (params *AuditParams) SetFilesToScan(filesToScan []string) *AuditParams { return params } +func (params *AuditParams) SetDeprecatedAppsConfig(appsConfig *jfrogappsconfig.JFrogAppsConfig) *AuditParams { + params.appsConfig = appsConfig + return params +} + +func (params *AuditParams) DeprecatedAppsConfig() *jfrogappsconfig.JFrogAppsConfig { + return params.appsConfig +} + func (params *AuditParams) FilesToScan() []string { return params.filesToScan } diff --git a/jas/applicability/applicabilitymanager.go b/jas/applicability/applicabilitymanager.go index 74a233e1a..6bab5dba5 100644 --- a/jas/applicability/applicabilitymanager.go +++ b/jas/applicability/applicabilitymanager.go @@ -116,7 +116,7 @@ func (asm *ApplicabilityScanManager) Run(target results.ScanTarget) (vulnerabili if err = asm.runAnalyzerManager(); err != nil { return } - return jas.ReadJasScanRunsFromFile(asm.resultsFileName, applicabilityDocsUrlSuffix, asm.scanner.MinSeverity, target.Include...) + return jas.ReadJasScanRunsFromFile(asm.resultsFileName, applicabilityDocsUrlSuffix, asm.scanner.MinSeverity, jas.GetWorkingDirsFromTarget(target)...) } func (asm *ApplicabilityScanManager) cvesExists() bool { @@ -147,7 +147,7 @@ func (asm *ApplicabilityScanManager) createConfigFileForTarget(target results.Sc configFileContent := applicabilityScanConfig{ Scans: []scanConfiguration{ { - Roots: target.Include, + Roots: jas.GetRootsFromTarget(target), Output: asm.resultsFileName, Type: asm.commandType, GrepDisable: false, diff --git a/jas/common.go b/jas/common.go index 13ebba144..8947f6bbe 100644 --- a/jas/common.go +++ b/jas/common.go @@ -192,6 +192,18 @@ func (a *JasScanner) Run(scannerCmd ScannerCmd, target results.ScanTarget) (vuln return scannerCmd.Run(target) } +func GetRootsFromTarget(target results.ScanTarget) []string { + if len(target.Include) > 0 { + return target.Include + } + return []string{target.Target} +} + +func GetWorkingDirsFromTarget(target results.ScanTarget) []string { + wd := []string{target.Target} + return append(wd, target.Include...) +} + func ReadJasScanRunsFromFile(fileName, informationUrlSuffix string, minSeverity severityutils.Severity, workingDirs ...string) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { violationFileName := fmt.Sprintf("%s_violations.sarif", strings.TrimSuffix(fileName, ".sarif")) vulnFileExist, violationsFileExist, err := checkJasResultsFilesExist(fileName, violationFileName) @@ -396,6 +408,9 @@ func GetTestDataPath() string { } func GetModule(root string, appConfig *jfrogappsconfig.JFrogAppsConfig) *jfrogappsconfig.Module { + if appConfig == nil || len(appConfig.Modules) == 0 { + return nil + } for _, module := range appConfig.Modules { if module.SourceRoot == root { return &module diff --git a/jas/iac/iacscanner.go b/jas/iac/iacscanner.go index 101c86d4b..b4bfdb04a 100644 --- a/jas/iac/iacscanner.go +++ b/jas/iac/iacscanner.go @@ -102,7 +102,7 @@ func (iac *IacScanManager) Run(target results.ScanTarget) (vulnerabilitiesSarifR if err = iac.runAnalyzerManager(); err != nil { return } - return jas.ReadJasScanRunsFromFile(iac.resultsFileName, iacDocsUrlSuffix, iac.scanner.MinSeverity, target.Include...) + return jas.ReadJasScanRunsFromFile(iac.resultsFileName, iacDocsUrlSuffix, iac.scanner.MinSeverity, jas.GetWorkingDirsFromTarget(target)...) } type iacScanConfig struct { @@ -140,7 +140,7 @@ func (iac *IacScanManager) createConfigFileForTarget(target results.ScanTarget, configFileContent := iacScanConfig{ Scans: []iacScanConfiguration{ { - Roots: target.Include, + Roots: jas.GetRootsFromTarget(target), Output: iac.resultsFileName, PathToResultsToCompare: iac.resultsToCompareFileName, Type: iacScannerType, diff --git a/jas/sast/sastscanner.go b/jas/sast/sastscanner.go index 25dabf1a0..3e6f29981 100644 --- a/jas/sast/sastscanner.go +++ b/jas/sast/sastscanner.go @@ -109,7 +109,7 @@ func (ssm *SastScanManager) Run(target results.ScanTarget) (vulnerabilitiesSarif if err = ssm.runAnalyzerManager(filepath.Dir(ssm.scanner.AnalyzerManager.AnalyzerManagerFullPath)); err != nil { return } - vulnerabilitiesSarifRuns, violationsSarifRuns, err = jas.ReadJasScanRunsFromFile(ssm.resultsFileName, sastDocsUrlSuffix, ssm.scanner.MinSeverity, target.Include...) + vulnerabilitiesSarifRuns, violationsSarifRuns, err = jas.ReadJasScanRunsFromFile(ssm.resultsFileName, sastDocsUrlSuffix, ssm.scanner.MinSeverity, jas.GetWorkingDirsFromTarget(target)...) if err != nil { return } @@ -172,7 +172,7 @@ func (ssm *SastScanManager) createConfigFileForTarget(target results.ScanTarget, Scans: []scanConfiguration{ { Type: sastScannerType, - Roots: target.Include, + Roots: jas.GetRootsFromTarget(target), Output: ssm.resultsFileName, PathToResultsToCompare: ssm.resultsToCompareFileName, SastParameters: sastParameters{ diff --git a/jas/secrets/secretsscanner.go b/jas/secrets/secretsscanner.go index 60a7330c1..3897faaa9 100644 --- a/jas/secrets/secretsscanner.go +++ b/jas/secrets/secretsscanner.go @@ -67,7 +67,7 @@ func RunSecretsScan(scanner *jas.JasScanner, params SecretsScanParams) (vulnerab } func runSecretsScan(secretScanManager *SecretScanManager, params SecretsScanParams) (vulnerabilitiesResults []*sarif.Run, violationsResults []*sarif.Run, err error) { - if params.Module == nil || len(params.Target.Include) > 0 { + if params.Module == nil { return secretScanManager.scanner.Run(secretScanManager, params.Target) } return secretScanManager.scanner.DeprecatedRun(secretScanManager, *params.Module) @@ -108,7 +108,7 @@ func (ssm *SecretScanManager) Run(target results.ScanTarget) (vulnerabilitiesSar if err = ssm.runAnalyzerManager(); err != nil { return } - return jas.ReadJasScanRunsFromFile(ssm.resultsFileName, secretsDocsUrlSuffix, ssm.scanner.MinSeverity, target.Include...) + return jas.ReadJasScanRunsFromFile(ssm.resultsFileName, secretsDocsUrlSuffix, ssm.scanner.MinSeverity, jas.GetWorkingDirsFromTarget(target)...) } type secretsScanConfig struct { @@ -146,7 +146,7 @@ func (s *SecretScanManager) createConfigFileForTarget(target results.ScanTarget, configFileContent := secretsScanConfig{ Scans: []secretsScanConfiguration{ { - Roots: target.Include, + Roots: jas.GetRootsFromTarget(target), Output: s.resultsFileName, PathToResultsToCompare: s.resultsToCompareFileName, Type: string(s.scanType), diff --git a/utils/paths.go b/utils/paths.go index 8dcb3011f..6c27137fc 100644 --- a/utils/paths.go +++ b/utils/paths.go @@ -83,6 +83,18 @@ func GetCurationNugetCacheFolder() (string, error) { return filepath.Join(curationFolder, "nuget"), nil } +func GetFullPathsWorkingDirs(workingDirs []string) ([]string, error) { + var fullPathsWorkingDirs []string + for _, wd := range workingDirs { + fullPathWd, err := filepath.Abs(wd) + if err != nil { + return nil, err + } + fullPathsWorkingDirs = append(fullPathsWorkingDirs, fullPathWd) + } + return fullPathsWorkingDirs, nil +} + func GetRelativePath(fullPathWd, baseWd string) string { // Remove OS-specific file prefix if strings.HasPrefix(fullPathWd, "file:///private") { From d0f5aed6da6a67b8e8302b9fc0ab36403f86032b Mon Sep 17 00:00:00 2001 From: attiasas Date: Thu, 19 Feb 2026 15:17:48 +0200 Subject: [PATCH 12/26] pass target to applicable, fix invocations --- jas/applicability/applicabilitymanager.go | 2 +- jas/common.go | 20 ++++++++++++-------- jas/iac/iacscanner.go | 2 +- jas/runner/jasrunner.go | 1 + jas/sast/sastscanner.go | 2 +- jas/secrets/secretsscanner.go | 2 +- 6 files changed, 17 insertions(+), 12 deletions(-) diff --git a/jas/applicability/applicabilitymanager.go b/jas/applicability/applicabilitymanager.go index 6bab5dba5..07b3ac565 100644 --- a/jas/applicability/applicabilitymanager.go +++ b/jas/applicability/applicabilitymanager.go @@ -116,7 +116,7 @@ func (asm *ApplicabilityScanManager) Run(target results.ScanTarget) (vulnerabili if err = asm.runAnalyzerManager(); err != nil { return } - return jas.ReadJasScanRunsFromFile(asm.resultsFileName, applicabilityDocsUrlSuffix, asm.scanner.MinSeverity, jas.GetWorkingDirsFromTarget(target)...) + return jas.ReadJasScanRunsFromFile(asm.resultsFileName, applicabilityDocsUrlSuffix, asm.scanner.MinSeverity, target.Target, target.Include...) } func (asm *ApplicabilityScanManager) cvesExists() bool { diff --git a/jas/common.go b/jas/common.go index 8947f6bbe..0eb65400c 100644 --- a/jas/common.go +++ b/jas/common.go @@ -204,7 +204,7 @@ func GetWorkingDirsFromTarget(target results.ScanTarget) []string { return append(wd, target.Include...) } -func ReadJasScanRunsFromFile(fileName, informationUrlSuffix string, minSeverity severityutils.Severity, workingDirs ...string) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { +func ReadJasScanRunsFromFile(fileName, informationUrlSuffix string, minSeverity severityutils.Severity, target string, includeDirs ...string) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { violationFileName := fmt.Sprintf("%s_violations.sarif", strings.TrimSuffix(fileName, ".sarif")) vulnFileExist, violationsFileExist, err := checkJasResultsFilesExist(fileName, violationFileName) if err != nil { @@ -215,13 +215,13 @@ func ReadJasScanRunsFromFile(fileName, informationUrlSuffix string, minSeverity return } if vulnFileExist { - vulnerabilitiesSarifRuns, err = readJasScanRunsFromFile(fileName, informationUrlSuffix, minSeverity, workingDirs...) + vulnerabilitiesSarifRuns, err = readJasScanRunsFromFile(fileName, informationUrlSuffix, minSeverity, target, includeDirs...) if err != nil { return } } if violationsFileExist { - violationsSarifRuns, err = readJasScanRunsFromFile(violationFileName, informationUrlSuffix, minSeverity, workingDirs...) + violationsSarifRuns, err = readJasScanRunsFromFile(violationFileName, informationUrlSuffix, minSeverity, target, includeDirs...) } return } @@ -236,18 +236,18 @@ func checkJasResultsFilesExist(vulnFileName, violationsFileName string) (vulnFil return } -func readJasScanRunsFromFile(fileName, informationUrlSuffix string, minSeverity severityutils.Severity, workingDirs ...string) (sarifRuns []*sarif.Run, err error) { +func readJasScanRunsFromFile(fileName, informationUrlSuffix string, minSeverity severityutils.Severity, target string, includeDirs ...string) (sarifRuns []*sarif.Run, err error) { if sarifRuns, err = sarifutils.ReadScanRunsFromFile(fileName); err != nil { return } - processSarifRuns(sarifRuns, informationUrlSuffix, minSeverity, workingDirs...) + processSarifRuns(sarifRuns, informationUrlSuffix, minSeverity, target, includeDirs...) return } // This function processes the Sarif runs results: update invocations, fill missing information, exclude results and adding scores to rules -func processSarifRuns(sarifRuns []*sarif.Run, informationUrlSuffix string, minSeverity severityutils.Severity, workingDirs ...string) { +func processSarifRuns(sarifRuns []*sarif.Run, informationUrlSuffix string, minSeverity severityutils.Severity, target string, includeDirs ...string) { for _, sarifRun := range sarifRuns { - fillMissingRequiredInvocationInformation(sarifRun, workingDirs...) + fillMissingRequiredInvocationInformation(sarifRun, target, includeDirs...) fillMissingRequiredDriverInformation(utils.BaseDocumentationURL+informationUrlSuffix, GetAnalyzerManagerVersion(), sarifRun) addScoreToRunRules(sarifRun) // Process results @@ -275,12 +275,16 @@ func isValidVersion(version string) bool { return unicode.IsDigit(firstChar) } -func fillMissingRequiredInvocationInformation(run *sarif.Run, workingDirs ...string) { +func fillMissingRequiredInvocationInformation(run *sarif.Run, target string, includeDirs ...string) { isExeSuccess := false for _, invocation := range run.Invocations { isExeSuccess = isExeSuccess || (invocation.ExecutionSuccessful != nil && *invocation.ExecutionSuccessful) } invocations := []*sarif.Invocation{} + workingDirs := []string{target} + if len(includeDirs) > 0 { + workingDirs = includeDirs + } for _, wd := range workingDirs { // Set the actual working directory to the invocation, not the analyzerManager directory invocation := sarif.NewInvocation().WithExecutionSuccessful(isExeSuccess).WithWorkingDirectory(sarif.NewArtifactLocation().WithURI(utils.ToURI(wd))) diff --git a/jas/iac/iacscanner.go b/jas/iac/iacscanner.go index b4bfdb04a..9a9d4bfca 100644 --- a/jas/iac/iacscanner.go +++ b/jas/iac/iacscanner.go @@ -102,7 +102,7 @@ func (iac *IacScanManager) Run(target results.ScanTarget) (vulnerabilitiesSarifR if err = iac.runAnalyzerManager(); err != nil { return } - return jas.ReadJasScanRunsFromFile(iac.resultsFileName, iacDocsUrlSuffix, iac.scanner.MinSeverity, jas.GetWorkingDirsFromTarget(target)...) + return jas.ReadJasScanRunsFromFile(iac.resultsFileName, iacDocsUrlSuffix, iac.scanner.MinSeverity, target.Target, target.Include...) } type iacScanConfig struct { diff --git a/jas/runner/jasrunner.go b/jas/runner/jasrunner.go index 46070036d..8026f00bd 100644 --- a/jas/runner/jasrunner.go +++ b/jas/runner/jasrunner.go @@ -232,6 +232,7 @@ func runContextualScan(params *JasRunnerParams) parallel.TaskFunc { ThreadId: threadId, TargetCount: params.TargetCount, Module: params.Module, + Target: params.ScanResults.ScanTarget, }, params.Scanner, ) diff --git a/jas/sast/sastscanner.go b/jas/sast/sastscanner.go index 3e6f29981..90264d205 100644 --- a/jas/sast/sastscanner.go +++ b/jas/sast/sastscanner.go @@ -109,7 +109,7 @@ func (ssm *SastScanManager) Run(target results.ScanTarget) (vulnerabilitiesSarif if err = ssm.runAnalyzerManager(filepath.Dir(ssm.scanner.AnalyzerManager.AnalyzerManagerFullPath)); err != nil { return } - vulnerabilitiesSarifRuns, violationsSarifRuns, err = jas.ReadJasScanRunsFromFile(ssm.resultsFileName, sastDocsUrlSuffix, ssm.scanner.MinSeverity, jas.GetWorkingDirsFromTarget(target)...) + vulnerabilitiesSarifRuns, violationsSarifRuns, err = jas.ReadJasScanRunsFromFile(ssm.resultsFileName, sastDocsUrlSuffix, ssm.scanner.MinSeverity, target.Target, target.Include...) if err != nil { return } diff --git a/jas/secrets/secretsscanner.go b/jas/secrets/secretsscanner.go index 3897faaa9..903b345ae 100644 --- a/jas/secrets/secretsscanner.go +++ b/jas/secrets/secretsscanner.go @@ -108,7 +108,7 @@ func (ssm *SecretScanManager) Run(target results.ScanTarget) (vulnerabilitiesSar if err = ssm.runAnalyzerManager(); err != nil { return } - return jas.ReadJasScanRunsFromFile(ssm.resultsFileName, secretsDocsUrlSuffix, ssm.scanner.MinSeverity, jas.GetWorkingDirsFromTarget(target)...) + return jas.ReadJasScanRunsFromFile(ssm.resultsFileName, secretsDocsUrlSuffix, ssm.scanner.MinSeverity, target.Target, target.Include...) } type secretsScanConfig struct { From 803b1154a18b6c4ebebe008d02b4ad236f8c0cba Mon Sep 17 00:00:00 2001 From: attiasas Date: Thu, 19 Feb 2026 16:03:29 +0200 Subject: [PATCH 13/26] fix get cwd as path in old flow and tech aggregator for target --- commands/audit/audit.go | 50 ++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/commands/audit/audit.go b/commands/audit/audit.go index 9982b90c3..197735bbd 100644 --- a/commands/audit/audit.go +++ b/commands/audit/audit.go @@ -7,6 +7,7 @@ import ( "strconv" "strings" + "github.com/jfrog/gofrog/datastructures" "github.com/jfrog/gofrog/parallel" "github.com/jfrog/jfrog-cli-core/v2/common/format" "github.com/jfrog/jfrog-cli-core/v2/utils/config" @@ -487,11 +488,7 @@ func detectScanTargets(cmdResults *results.SecurityCommandResults, params *Audit if params.IsSingleTarget() { createSingleScanTarget(cmdResults, params, cwd) } else { - detectScaTargetsFromTechnologies(cmdResults, params, params.workingDirs) - } - // If no scan targets were detected, we should still proceed with the scans. - if len(params.workingDirs) == 1 && len(cmdResults.Targets) == 0 { - cmdResults.NewScanResults(results.ScanTarget{Target: cwd, Exclude: params.Exclusions()}) + detectScaTargetsFromTechnologies(cmdResults, params, cwd) } for _, targetResult := range cmdResults.Targets { // Get the apps config module and assign it to the target result for JAS scans. @@ -501,28 +498,45 @@ func detectScanTargets(cmdResults *results.SecurityCommandResults, params *Audit func createSingleScanTarget(cmdResults *results.SecurityCommandResults, params *AuditParams, cwd string) { scanTarget := results.ScanTarget{Target: cwd, Exclude: params.Exclusions()} - dirs := []string{} + // Resolve working dirs to include + dirs := datastructures.MakeSet[string]() for _, dir := range params.workingDirs { if !fileutils.IsPathExists(dir, false) { log.Warn("The working directory", dir, "doesn't exist. Skipping...") continue } - dirs = append(dirs, dir) + // check path is not cwd + if dir == cwd { + continue + } + dirs.Add(dir) } - scanTarget.Include = dirs - if techToWorkingDirs, err := techutils.DetectTechnologiesDescriptors(cwd, true, params.Technologies(), getRequestedDescriptors(params), technologies.GetExcludePattern(params.GetConfigProfile(), true, scanTarget.Exclude...)); err != nil { - log.Warn("Couldn't detect technologies in", cwd, "directory.", err.Error()) - } else { - for tech, _ := range techToWorkingDirs { - scanTarget.Technology = tech - // We only support one technology per target for now. should be extended in the future. - break + scanTarget.Include = dirs.ToSlice() + // Detect technologies + detectedTechnologies := datastructures.MakeSet[techutils.Technology]() + for _, included := range jas.GetRootsFromTarget(scanTarget) { + techToWorkingDirs, err := techutils.DetectTechnologiesDescriptors(included, included == cwd, params.Technologies(), getRequestedDescriptors(params), technologies.GetExcludePattern(params.GetConfigProfile(), included == cwd, scanTarget.Exclude...)) + if err != nil { + log.Warn("Couldn't detect technologies in", included, "directory.", err.Error()) + continue + } + for tech := range techToWorkingDirs { + detectedTechnologies.Add(tech) } } + for _, tech := range detectedTechnologies.ToSlice() { + // TODO: We only support one technology per target for now. should be extended in the future. + scanTarget.Technology = tech + break + } cmdResults.NewScanResults(scanTarget) } -func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults, params *AuditParams, potentialScanTargets []string) { +func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults, params *AuditParams, cwd string) { + potentialScanTargets := []string{cwd} + if len(params.workingDirs) > 1 { + potentialScanTargets = params.workingDirs + } for _, requestedDirectory := range potentialScanTargets { if !fileutils.IsPathExists(requestedDirectory, false) { log.Warn("The working directory", requestedDirectory, "doesn't exist. Skipping SCA scan...") @@ -555,6 +569,10 @@ func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults } } } + // If no scan targets were detected, we should still proceed with the scans. + if len(potentialScanTargets) == 1 && len(cmdResults.Targets) == 0 { + cmdResults.NewScanResults(results.ScanTarget{Target: cwd, Exclude: params.Exclusions()}) + } } func getRequestedDescriptors(params *AuditParams) map[techutils.Technology][]string { From 1c8f55d622a8bf37720626e87308ba027f3f6e8a Mon Sep 17 00:00:00 2001 From: attiasas Date: Thu, 19 Feb 2026 16:42:05 +0200 Subject: [PATCH 14/26] fix wd in sarif --- jas/common.go | 30 +++++++------------------- utils/formats/sarifutils/sarifutils.go | 9 ++++++++ 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/jas/common.go b/jas/common.go index 0eb65400c..fab994b8c 100644 --- a/jas/common.go +++ b/jas/common.go @@ -280,30 +280,16 @@ func fillMissingRequiredInvocationInformation(run *sarif.Run, target string, inc for _, invocation := range run.Invocations { isExeSuccess = isExeSuccess || (invocation.ExecutionSuccessful != nil && *invocation.ExecutionSuccessful) } - invocations := []*sarif.Invocation{} - workingDirs := []string{target} + // Set the actual working directory to the invocation, not the analyzerManager directory + wd := sarif.NewArtifactLocation().WithURI(utils.ToURI(target)) if len(includeDirs) > 0 { - workingDirs = includeDirs - } - for _, wd := range workingDirs { - // Set the actual working directory to the invocation, not the analyzerManager directory - invocation := sarif.NewInvocation().WithExecutionSuccessful(isExeSuccess).WithWorkingDirectory(sarif.NewArtifactLocation().WithURI(utils.ToURI(wd))) - // Make sure the invocation not omitted attributes are set (the lib reports them as required but spec says they are optional) - if len(invocation.NotificationConfigurationOverrides) == 0 { - invocation.NotificationConfigurationOverrides = make([]*sarif.ConfigurationOverride, 0) - } - if len(invocation.RuleConfigurationOverrides) == 0 { - invocation.RuleConfigurationOverrides = make([]*sarif.ConfigurationOverride, 0) - } - if len(invocation.ToolConfigurationNotifications) == 0 { - invocation.ToolConfigurationNotifications = make([]*sarif.Notification, 0) - } - if len(invocation.ToolExecutionNotifications) == 0 { - invocation.ToolExecutionNotifications = make([]*sarif.Notification, 0) - } - invocations = append(invocations, invocation) + // Add properties to the working directory + properties := sarif.NewPropertyBag() + properties.Add("include", strings.Join(includeDirs, ",")) + wd.Properties = properties } - run.Invocations = invocations + invocation := sarifutils.CreateNewInvocation().WithExecutionSuccessful(isExeSuccess).WithWorkingDirectory(wd) + run.Invocations = []*sarif.Invocation{invocation} } func excludeSuppressResults(sarifResults []*sarif.Result) []*sarif.Result { diff --git a/utils/formats/sarifutils/sarifutils.go b/utils/formats/sarifutils/sarifutils.go index d0d145e7c..cce03dcd7 100644 --- a/utils/formats/sarifutils/sarifutils.go +++ b/utils/formats/sarifutils/sarifutils.go @@ -886,6 +886,15 @@ func GetInvocationWorkingDirectory(invocation *sarif.Invocation) string { return "" } +func CreateNewInvocation() *sarif.Invocation { + invocation := sarif.NewInvocation() + invocation.NotificationConfigurationOverrides = make([]*sarif.ConfigurationOverride, 0) + invocation.RuleConfigurationOverrides = make([]*sarif.ConfigurationOverride, 0) + invocation.ToolConfigurationNotifications = make([]*sarif.Notification, 0) + invocation.ToolExecutionNotifications = make([]*sarif.Notification, 0) + return invocation +} + func GetRulesPropertyCount(property, value string, runs ...*sarif.Run) (count int) { for _, run := range runs { for _, rule := range run.Tool.Driver.Rules { From c1d2f086d1005f8252f34e1c287bd05dc9481b60 Mon Sep 17 00:00:00 2001 From: attiasas Date: Thu, 19 Feb 2026 16:42:22 +0200 Subject: [PATCH 15/26] fix get module for old flow --- commands/audit/audit.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/commands/audit/audit.go b/commands/audit/audit.go index 197735bbd..85ed75cf1 100644 --- a/commands/audit/audit.go +++ b/commands/audit/audit.go @@ -469,8 +469,7 @@ func getTargetResultsToCompare(cmdResults, resultsToCompare *results.SecurityCom } func detectScanTargets(cmdResults *results.SecurityCommandResults, params *AuditParams) { - deprecatedAppsConfig := params.DeprecatedAppsConfig() - if deprecatedAppsConfig == nil && !isNewFlow(params.bomGenerator) { + if params.DeprecatedAppsConfig() == nil && !isNewFlow(params.bomGenerator) { // Load deprecated apps config information jfrogAppsConfig, err := jas.CreateJFrogAppsConfig(params.workingDirs) if err != nil { @@ -492,7 +491,7 @@ func detectScanTargets(cmdResults *results.SecurityCommandResults, params *Audit } for _, targetResult := range cmdResults.Targets { // Get the apps config module and assign it to the target result for JAS scans. - targetResult.AppsConfigModule = jas.GetModule(targetResult.Target, deprecatedAppsConfig) + targetResult.AppsConfigModule = jas.GetModule(targetResult.Target, params.DeprecatedAppsConfig()) } } From f6fb8917a0aab34f2204f9aae35939684de7b7ef Mon Sep 17 00:00:00 2001 From: attiasas Date: Thu, 19 Feb 2026 17:06:24 +0200 Subject: [PATCH 16/26] make sure sarif sca invocation also include the included wd --- jas/common.go | 10 +--------- utils/formats/sarifutils/sarifutils.go | 15 +++++++++------ .../results/conversion/sarifparser/sarifparser.go | 5 +---- 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/jas/common.go b/jas/common.go index fab994b8c..e0efc8e1e 100644 --- a/jas/common.go +++ b/jas/common.go @@ -281,15 +281,7 @@ func fillMissingRequiredInvocationInformation(run *sarif.Run, target string, inc isExeSuccess = isExeSuccess || (invocation.ExecutionSuccessful != nil && *invocation.ExecutionSuccessful) } // Set the actual working directory to the invocation, not the analyzerManager directory - wd := sarif.NewArtifactLocation().WithURI(utils.ToURI(target)) - if len(includeDirs) > 0 { - // Add properties to the working directory - properties := sarif.NewPropertyBag() - properties.Add("include", strings.Join(includeDirs, ",")) - wd.Properties = properties - } - invocation := sarifutils.CreateNewInvocation().WithExecutionSuccessful(isExeSuccess).WithWorkingDirectory(wd) - run.Invocations = []*sarif.Invocation{invocation} + run.Invocations = []*sarif.Invocation{sarifutils.CreateNewInvocation(isExeSuccess, target, includeDirs...)} } func excludeSuppressResults(sarifResults []*sarif.Result) []*sarif.Result { diff --git a/utils/formats/sarifutils/sarifutils.go b/utils/formats/sarifutils/sarifutils.go index cce03dcd7..0fa3189a0 100644 --- a/utils/formats/sarifutils/sarifutils.go +++ b/utils/formats/sarifutils/sarifutils.go @@ -886,12 +886,15 @@ func GetInvocationWorkingDirectory(invocation *sarif.Invocation) string { return "" } -func CreateNewInvocation() *sarif.Invocation { - invocation := sarif.NewInvocation() - invocation.NotificationConfigurationOverrides = make([]*sarif.ConfigurationOverride, 0) - invocation.RuleConfigurationOverrides = make([]*sarif.ConfigurationOverride, 0) - invocation.ToolConfigurationNotifications = make([]*sarif.Notification, 0) - invocation.ToolExecutionNotifications = make([]*sarif.Notification, 0) +func CreateNewInvocation(success bool, target string, includeDirs ...string) *sarif.Invocation { + wd := sarif.NewArtifactLocation().WithURI(utils.ToURI(target)) + if len(includeDirs) > 0 { + // Add properties to the working directory + properties := sarif.NewPropertyBag() + properties.Add("include", strings.Join(includeDirs, ",")) + wd.Properties = properties + } + invocation := sarif.NewInvocation().WithExecutionSuccessful(success).WithWorkingDirectory(wd) return invocation } diff --git a/utils/results/conversion/sarifparser/sarifparser.go b/utils/results/conversion/sarifparser/sarifparser.go index e93b9e2f7..c762c7c59 100644 --- a/utils/results/conversion/sarifparser/sarifparser.go +++ b/utils/results/conversion/sarifparser/sarifparser.go @@ -178,10 +178,7 @@ func (sc *CmdResultsSarifConverter) createScaRun(target results.ScanTarget, erro // For binary, the target is a file and not a directory wd = filepath.Dir(wd) } - run.Invocations = append(run.Invocations, sarif.NewInvocation(). - WithWorkingDirectory(sarif.NewSimpleArtifactLocation(utils.ToURI(wd))). - WithExecutionSuccessful(errorCount == 0), - ) + run.Invocations = append(run.Invocations, sarifutils.CreateNewInvocation(errorCount == 0, wd, target.Include...)) return run } From 4f2aa4b241a659f8ec59069335c623000f3f58a1 Mon Sep 17 00:00:00 2001 From: attiasas Date: Sat, 21 Feb 2026 12:19:29 +0200 Subject: [PATCH 17/26] move configs to ScanTarget. refactor and fix exclude for target and scans --- commands/audit/audit.go | 55 +++++++++---- commands/audit/auditparams.go | 2 +- commands/curation/curationaudit.go | 2 +- commands/scan/scan.go | 8 +- jas/applicability/applicabilitymanager.go | 19 +++-- .../applicabilitymanager_test.go | 2 +- jas/common.go | 76 ++++++++++-------- jas/common_test.go | 20 ++--- jas/iac/iacscanner.go | 19 +++-- jas/iac/iacscanner_test.go | 2 +- jas/maliciouscode/maliciouscodescanner.go | 2 +- jas/runner/jasrunner.go | 31 ++------ jas/runner/jasrunner_test.go | 2 +- jas/sast/sastscanner.go | 19 +++-- jas/secrets/secretsscanner.go | 19 +++-- jas/secrets/secretsscanner_test.go | 5 +- sca/bom/buildinfo/technologies/common.go | 2 +- sca/bom/buildinfo/technologies/common_test.go | 4 +- sca/scan/scascan.go | 12 +-- utils/paths.go | 12 +++ utils/results/results.go | 78 ++++++++++++++++++- utils/utils.go | 17 ++++ 22 files changed, 261 insertions(+), 147 deletions(-) diff --git a/commands/audit/audit.go b/commands/audit/audit.go index 85ed75cf1..1808e2cfe 100644 --- a/commands/audit/audit.go +++ b/commands/audit/audit.go @@ -40,7 +40,7 @@ import ( "github.com/jfrog/jfrog-client-go/utils/log" "github.com/jfrog/jfrog-client-go/xray" "github.com/jfrog/jfrog-client-go/xray/services" - xscservices "github.com/jfrog/jfrog-client-go/xsc/services" + xscServices "github.com/jfrog/jfrog-client-go/xsc/services" xscutils "github.com/jfrog/jfrog-client-go/xsc/services/utils" ) @@ -215,7 +215,7 @@ func (auditCmd *AuditCommand) Run() (err error) { auditCmd.GetXrayVersion(), auditCmd.GetXscVersion(), serverDetails, - xsc.CreateAnalyticsEvent(xscservices.CliProduct, xscservices.CliEventType, serverDetails), + xsc.CreateAnalyticsEvent(xscServices.CliProduct, xscServices.CliEventType, serverDetails), auditCmd.projectKey, ) @@ -489,10 +489,8 @@ func detectScanTargets(cmdResults *results.SecurityCommandResults, params *Audit } else { detectScaTargetsFromTechnologies(cmdResults, params, cwd) } - for _, targetResult := range cmdResults.Targets { - // Get the apps config module and assign it to the target result for JAS scans. - targetResult.AppsConfigModule = jas.GetModule(targetResult.Target, params.DeprecatedAppsConfig()) - } + // Match central config modules to the scan targets + matchCentralConfigModules(cmdResults, params.GetConfigProfile()) } func createSingleScanTarget(cmdResults *results.SecurityCommandResults, params *AuditParams, cwd string) { @@ -514,7 +512,7 @@ func createSingleScanTarget(cmdResults *results.SecurityCommandResults, params * // Detect technologies detectedTechnologies := datastructures.MakeSet[techutils.Technology]() for _, included := range jas.GetRootsFromTarget(scanTarget) { - techToWorkingDirs, err := techutils.DetectTechnologiesDescriptors(included, included == cwd, params.Technologies(), getRequestedDescriptors(params), technologies.GetExcludePattern(params.GetConfigProfile(), included == cwd, scanTarget.Exclude...)) + techToWorkingDirs, err := techutils.DetectTechnologiesDescriptors(included, included == cwd, params.Technologies(), getRequestedDescriptors(params), technologies.GetScaExcludePattern(params.GetConfigProfile(), included == cwd, scanTarget.Exclude...)) if err != nil { log.Warn("Couldn't detect technologies in", included, "directory.", err.Error()) continue @@ -531,6 +529,23 @@ func createSingleScanTarget(cmdResults *results.SecurityCommandResults, params * cmdResults.NewScanResults(scanTarget) } +func matchCentralConfigModules(cmdResults *results.SecurityCommandResults, centralProfile *xscServices.ConfigProfile) { + if centralProfile == nil { + return + } + if len(centralProfile.Modules) < 1 { + // Verify Modules are not nil and contain at least one modules + cmdResults.AddGeneralError(fmt.Errorf("config profile %s has no modules. A config profile must contain at least one modules", centralProfile.ProfileName), false) + return + } + for _, targetResult := range cmdResults.Targets { + // TODO: support matching multiple config modules to the scan targets + // currently only supported one config module for all targets to configure in the UI + // PathFromRoot is always '.' + targetResult.CentralConfigModules = centralProfile.Modules + } +} + func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults, params *AuditParams, cwd string) { potentialScanTargets := []string{cwd} if len(params.workingDirs) > 1 { @@ -542,7 +557,7 @@ func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults continue } // Detect descriptors and technologies in the requested directory. - techToWorkingDirs, err := techutils.DetectTechnologiesDescriptors(requestedDirectory, params.IsRecursiveScan(), params.Technologies(), getRequestedDescriptors(params), technologies.GetExcludePattern(params.GetConfigProfile(), params.IsRecursiveScan(), params.Exclusions()...)) + techToWorkingDirs, err := techutils.DetectTechnologiesDescriptors(requestedDirectory, params.IsRecursiveScan(), params.Technologies(), getRequestedDescriptors(params), technologies.GetScaExcludePattern(params.GetConfigProfile(), params.IsRecursiveScan(), params.Exclusions()...)) if err != nil { log.Warn("Couldn't detect technologies in", requestedDirectory, "directory.", err.Error()) continue @@ -557,11 +572,21 @@ func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults // No technology was detected, add scan without descriptors. (so no sca scan will be performed and set at target level) if len(workingDirs) == 0 { // Requested technology (from params) descriptors/indicators were not found or recursive scan with NoTech value, add scan without descriptors. - cmdResults.NewScanResults(results.ScanTarget{Target: requestedDirectory, Technology: tech, Exclude: params.Exclusions()}) + cmdResults.NewScanResults(results.ScanTarget{ + Target: requestedDirectory, + Technology: tech, + Exclude: params.Exclusions(), + DeprecatedAppsConfigModule: jas.GetModule(requestedDirectory, params.DeprecatedAppsConfig()), + }) } for workingDir, descriptors := range workingDirs { // Add scan for each detected working directory. - targetResults := cmdResults.NewScanResults(results.ScanTarget{Target: workingDir, Technology: tech, Exclude: params.Exclusions()}) + targetResults := cmdResults.NewScanResults(results.ScanTarget{ + Target: workingDir, + Technology: tech, + Exclude: params.Exclusions(), + DeprecatedAppsConfigModule: jas.GetModule(workingDir, params.DeprecatedAppsConfig()), + }) if tech != techutils.NoTech { targetResults.SetDescriptors(descriptors...) } @@ -570,7 +595,11 @@ func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults } // If no scan targets were detected, we should still proceed with the scans. if len(potentialScanTargets) == 1 && len(cmdResults.Targets) == 0 { - cmdResults.NewScanResults(results.ScanTarget{Target: cwd, Exclude: params.Exclusions()}) + cmdResults.NewScanResults(results.ScanTarget{ + Target: cwd, + Exclude: params.Exclusions(), + DeprecatedAppsConfigModule: jas.GetModule(cwd, params.DeprecatedAppsConfig()), + }) } } @@ -669,7 +698,6 @@ func addJasScansToRunner(auditParallelRunner *utils.SecurityParallelRunner, audi jas.WithResultsToCompare(auditParams.resultsToCompare), } jasScanner, err = jas.NewJasScanner(serverDetails, scannerOptions...) - jas.UpdateJasScannerWithExcludePatternsFromProfile(jasScanner, auditParams.GetConfigProfile()) auditParallelRunner.ResultsMu.Unlock() if err != nil { @@ -709,7 +737,7 @@ func createJasScansTask(auditParallelRunner *utils.SecurityParallelRunner, scanR log.Debug(clientutils.GetLogMsgPrefix(threadId, false) + fmt.Sprintf("Using analyzer manager executable at: %s", scanner.AnalyzerManager.AnalyzerManagerFullPath)) // Run JAS scanners for each scan target for _, targetResult := range scanResults.Targets { - if !isNewFlow && targetResult.AppsConfigModule == nil { + if !isNewFlow && targetResult.DeprecatedAppsConfigModule == nil { _ = targetResult.AddTargetError(fmt.Errorf("can't find module for path %s", targetResult.Target), auditParams.AllowPartialResults()) continue } @@ -717,7 +745,6 @@ func createJasScansTask(auditParallelRunner *utils.SecurityParallelRunner, scanR Runner: auditParallelRunner, ServerDetails: serverDetails, Scanner: scanner, - Module: targetResult.AppsConfigModule, ConfigProfile: auditParams.GetConfigProfile(), ScansToPerform: auditParams.ScansToPerform(), SourceResultsToCompare: scanner.GetResultsToCompareByRelativePath(utils.GetRelativePath(targetResult.Target, scanResults.GetCommonParentPath())), diff --git a/commands/audit/auditparams.go b/commands/audit/auditparams.go index 76a2224f2..739a7a21b 100644 --- a/commands/audit/auditparams.go +++ b/commands/audit/auditparams.go @@ -225,7 +225,7 @@ func (params *AuditParams) ToBuildInfoBomGenParams() (bomParams technologies.Bui bomParams = technologies.BuildInfoBomGeneratorParams{ XrayVersion: params.GetXrayVersion(), Progress: params.Progress(), - ExclusionPattern: technologies.GetExcludePattern(params.GetConfigProfile(), params.IsRecursiveScan(), params.Exclusions()...), + ExclusionPattern: technologies.GetScaExcludePattern(params.GetConfigProfile(), params.IsRecursiveScan(), params.Exclusions()...), AllowPartialResults: params.AllowPartialResults(), // Artifactory repository info ServerDetails: serverDetails, diff --git a/commands/curation/curationaudit.go b/commands/curation/curationaudit.go index ab066d8e9..d6c53b6d5 100644 --- a/commands/curation/curationaudit.go +++ b/commands/curation/curationaudit.go @@ -430,7 +430,7 @@ func (ca *CurationAuditCommand) getBuildInfoParamsByTech() (technologies.BuildIn serverDetails, err := ca.ServerDetails() return technologies.BuildInfoBomGeneratorParams{ XrayVersion: ca.GetXrayVersion(), - ExclusionPattern: technologies.GetExcludePattern(ca.GetConfigProfile(), ca.IsRecursiveScan(), ca.Exclusions()...), + ExclusionPattern: technologies.GetScaExcludePattern(ca.GetConfigProfile(), ca.IsRecursiveScan(), ca.Exclusions()...), Progress: ca.Progress(), // Artifactory Repository params ServerDetails: serverDetails, diff --git a/commands/scan/scan.go b/commands/scan/scan.go index 8da5d61d5..b9e106997 100644 --- a/commands/scan/scan.go +++ b/commands/scan/scan.go @@ -554,10 +554,11 @@ func (scanCmd *ScanCommand) getXrayScanGraphParams(msi string) *scangraph.ScanGr func (scanCmd *ScanCommand) RunBinaryJasScans(cmdType utils.CommandType, msi string, secretValidation bool, targetResults *results.TargetResults, targetCompId string, graphScanResults *services.ScanResponse, jasFileProducerConsumer *utils.SecurityParallelRunner, scanThreadId int) (err error) { scanLogPrefix := clientutils.GetLogMsgPrefix(scanThreadId, false) - module, err := getJasModule(targetResults) + deprecatedAppsConfigModule, err := getJasDeprecatedAppsConfigModule(targetResults.Target) if err != nil { return targetResults.AddTargetError(fmt.Errorf(scanLogPrefix+"jas scanning failed with error: %s", err.Error()), false) } + targetResults.DeprecatedAppsConfigModule = &deprecatedAppsConfigModule // Prepare Jas scans scannerOptions := []jas.JasScannerOption{ jas.WithEnvVars( @@ -591,7 +592,6 @@ func (scanCmd *ScanCommand) RunBinaryJasScans(cmdType utils.CommandType, msi str Runner: jasFileProducerConsumer, ServerDetails: scanCmd.serverDetails, Scanner: scanner, - Module: &module, TargetOutputDir: scanCmd.outputDir, ScansToPerform: scanCmd.scansToPerform, CvesProvider: func() (directCves []string, indirectCves []string) { @@ -633,8 +633,8 @@ func isDockerBinary(cmdType utils.CommandType, targetResults *results.TargetResu return cmdType == utils.DockerImage || targetResults.Technology == techutils.Docker || targetResults.Technology == techutils.Oci } -func getJasModule(targetResults *results.TargetResults) (jfrogappsconfig.Module, error) { - jfrogAppsConfig, err := jas.CreateJFrogAppsConfig([]string{targetResults.Target}) +func getJasDeprecatedAppsConfigModule(target string) (jfrogappsconfig.Module, error) { + jfrogAppsConfig, err := jas.CreateJFrogAppsConfig([]string{target}) if err != nil { return jfrogappsconfig.Module{}, err } diff --git a/jas/applicability/applicabilitymanager.go b/jas/applicability/applicabilitymanager.go index 07b3ac565..939b639e2 100644 --- a/jas/applicability/applicabilitymanager.go +++ b/jas/applicability/applicabilitymanager.go @@ -45,7 +45,6 @@ type ContextualAnalysisScanParams struct { ThirdPartyContextualAnalysis bool ThreadId int TargetCount int - Module *jfrogappsconfig.Module Target results.ScanTarget } @@ -65,7 +64,7 @@ func RunApplicabilityScan(params ContextualAnalysisScanParams, scanner *jas.JasS return } startTime := time.Now() - log.Info(jas.GetStartJasScanLog(utils.ContextualAnalysisScan, params.ThreadId, params.Module, params.TargetCount)) + log.Info(jas.GetStartJasScanLog(utils.ContextualAnalysisScan, params.ThreadId, params.Target.DeprecatedAppsConfigModule, params.TargetCount)) if results, err = runApplicabilityScan(applicabilityScanManager, params); err != nil { return } @@ -77,13 +76,13 @@ func RunApplicabilityScan(params ContextualAnalysisScanParams, scanner *jas.JasS } func runApplicabilityScan(applicabilityScanManager *ApplicabilityScanManager, params ContextualAnalysisScanParams) (vulnerabilitiesSarifRuns []*sarif.Run, err error) { - if params.Module == nil { + if params.Target.DeprecatedAppsConfigModule == nil { // Applicability scan does not produce violations. vulnerabilitiesSarifRuns, _, err = applicabilityScanManager.scanner.Run(applicabilityScanManager, params.Target) return } // Applicability scan does not produce violations. - vulnerabilitiesSarifRuns, _, err = applicabilityScanManager.scanner.DeprecatedRun(applicabilityScanManager, *params.Module) + vulnerabilitiesSarifRuns, _, err = applicabilityScanManager.scanner.DeprecatedRun(applicabilityScanManager, *params.Target.DeprecatedAppsConfigModule, params.Target.GetCentralConfigExclusions(utils.ContextualAnalysisScan)) return } @@ -99,8 +98,8 @@ func newApplicabilityScanManager(directDependenciesCves, indirectDependenciesCve } } -func (asm *ApplicabilityScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { - if err = asm.deprecatedCreateConfigFile(module, asm.scanner.ScannersExclusions.ContextualAnalysisExcludePatterns, asm.scanner.Exclusions...); err != nil { +func (asm *ApplicabilityScanManager) DeprecatedRun(module jfrogappsconfig.Module, centralConfigExclusions []string) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { + if err = asm.deprecatedCreateConfigFile(module, centralConfigExclusions, asm.scanner.Exclusions...); err != nil { return } if err = asm.runAnalyzerManager(); err != nil { @@ -110,7 +109,7 @@ func (asm *ApplicabilityScanManager) DeprecatedRun(module jfrogappsconfig.Module } func (asm *ApplicabilityScanManager) Run(target results.ScanTarget) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { - if err = asm.createConfigFileForTarget(target, asm.scanner.ScannersExclusions.ContextualAnalysisExcludePatterns); err != nil { + if err = asm.createConfigFileForTarget(target); err != nil { return } if err = asm.runAnalyzerManager(); err != nil { @@ -138,8 +137,8 @@ type scanConfiguration struct { ScanType string `yaml:"scantype"` } -func (asm *ApplicabilityScanManager) createConfigFileForTarget(target results.ScanTarget, centralConfigExclusions []string) error { - excludePatterns := jas.GetExcludePatternsForTarget(target, centralConfigExclusions) +func (asm *ApplicabilityScanManager) createConfigFileForTarget(target results.ScanTarget) error { + excludePatterns := jas.GetJasExcludePatternsForTarget(target, target.GetCentralConfigExclusions(utils.ContextualAnalysisScan)) if asm.thirdPartyScan { log.Info("Including node modules folder in applicability scan") excludePatterns = removeElementFromSlice(excludePatterns, utils.NodeModulesPattern) @@ -165,7 +164,7 @@ func (asm *ApplicabilityScanManager) deprecatedCreateConfigFile(module jfrogapps if err != nil { return err } - excludePatterns := jas.GetExcludePatterns(module, nil, centralConfigExclusions, exclusions...) + excludePatterns := jas.GetJasExcludePatterns(module, nil, centralConfigExclusions, exclusions...) if asm.thirdPartyScan { log.Info("Including node modules folder in applicability scan") excludePatterns = removeElementFromSlice(excludePatterns, utils.NodeModulesPattern) diff --git a/jas/applicability/applicabilitymanager_test.go b/jas/applicability/applicabilitymanager_test.go index fb71ab371..f62c59bd7 100644 --- a/jas/applicability/applicabilitymanager_test.go +++ b/jas/applicability/applicabilitymanager_test.go @@ -200,7 +200,7 @@ func TestApplicabilityScan_CreateConfigFile_VerifyFileWasCreated(t *testing.T) { currWd, err := coreutils.GetWorkingDirectory() assert.NoError(t, err) - assert.NoError(t, applicabilityManager.createConfigFileForTarget(results.ScanTarget{Target: currWd}, []string{})) + assert.NoError(t, applicabilityManager.createConfigFileForTarget(results.ScanTarget{Target: currWd})) defer func() { err = os.Remove(applicabilityManager.configFileName) diff --git a/jas/common.go b/jas/common.go index e0efc8e1e..17015ce95 100644 --- a/jas/common.go +++ b/jas/common.go @@ -12,7 +12,6 @@ import ( "unicode" "github.com/jfrog/gofrog/datastructures" - clientservices "github.com/jfrog/jfrog-client-go/xsc/services" jfrogappsconfig "github.com/jfrog/jfrog-apps-config/go" "github.com/jfrog/jfrog-cli-core/v2/utils/config" @@ -30,6 +29,7 @@ import ( "github.com/jfrog/jfrog-client-go/utils/log" "github.com/jfrog/jfrog-client-go/xray" "github.com/jfrog/jfrog-client-go/xray/services" + xscServices "github.com/jfrog/jfrog-client-go/xsc/services" "github.com/owenrumney/go-sarif/v3/pkg/report/v210/sarif" "github.com/stretchr/testify/assert" "golang.org/x/exp/slices" @@ -50,17 +50,7 @@ type JasScanner struct { DiffMode bool ResultsToCompare *results.SecurityCommandResults Exclusions []string - // This field contains scanner specific exclude patterns from Config Profile - ScannersExclusions SpecificScannersExcludePatterns - MinSeverity severityutils.Severity -} - -type SpecificScannersExcludePatterns struct { - ContextualAnalysisExcludePatterns []string - SastExcludePatterns []string - SecretsExcludePatterns []string - IacExcludePatterns []string - MaliciousCodeExcludePatterns []string + MinSeverity severityutils.Severity } type JasScannerOption func(f *JasScanner) error @@ -175,13 +165,13 @@ func CreateJFrogAppsConfig(workingDirs []string) (*jfrogappsconfig.JFrogAppsConf } type ScannerCmd interface { - DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) + DeprecatedRun(module jfrogappsconfig.Module, centralConfigExclusions []string) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) Run(target results.ScanTarget) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) } -func (a *JasScanner) DeprecatedRun(scannerCmd ScannerCmd, module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { +func (a *JasScanner) DeprecatedRun(scannerCmd ScannerCmd, module jfrogappsconfig.Module, centralConfigExclusions []string) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { func() { - if vulnerabilitiesSarifRuns, violationsSarifRuns, err = scannerCmd.DeprecatedRun(module); err != nil { + if vulnerabilitiesSarifRuns, violationsSarifRuns, err = scannerCmd.DeprecatedRun(module, centralConfigExclusions); err != nil { return } }() @@ -401,13 +391,38 @@ func GetModule(root string, appConfig *jfrogappsconfig.JFrogAppsConfig) *jfrogap return nil } -func ShouldSkipScanner(module *jfrogappsconfig.Module, scanType jasutils.JasScanType) bool { - if module == nil { +func ShouldSkipScannerByConfigProfile(target results.ScanTarget, configProfile *xscServices.ConfigProfile, scanType utils.SubScanType, jasType jasutils.JasScanType) bool { + if configProfile == nil { + return false + } + log.Debug(fmt.Sprintf("Using config profile '%s' to determine whether to run %s scan...", configProfile.ProfileName, jasType)) + if !target.IsScanRequestedByCentralConfig(scanType) { + log.Debug(fmt.Sprintf("Skipping %s scan as requested by '%s' config profile...", jasType, configProfile.ProfileName)) + return true + } + // validate target is excluded by config profile exclude patterns + excludePatterns := configProfile.GeneralConfig.GeneralExcludePatterns + if len(excludePatterns) > 0 { + if utils.IsPathExcluded(target.Target, excludePatterns) { + log.Debug(fmt.Sprintf("Skipping %s scan as target is excluded by config profile exclude patterns...", jasType)) + return true + } + } + return false +} + +func ShouldSkipScannerByModule(target results.ScanTarget, scanType jasutils.JasScanType) bool { + if target.DeprecatedAppsConfigModule == nil { return false } lowerScanType := strings.ToLower(string(scanType)) - if slices.Contains(module.ExcludeScanners, lowerScanType) { - log.Info(fmt.Sprintf("Skipping %s scanning", scanType)) + if slices.Contains(target.DeprecatedAppsConfigModule.ExcludeScanners, lowerScanType) { + log.Debug(fmt.Sprintf("Skipping %s scan as requested by local module config...", scanType)) + return true + } + exclusions := target.GeDeprecatedAppsConfigModuleExclusions(scanType) + if len(exclusions) > 0 && utils.IsPathExcluded(target.Target, exclusions) { + log.Debug(fmt.Sprintf("Skipping %s scan as target is excluded by local module config...", scanType)) return true } return false @@ -428,7 +443,7 @@ func GetSourceRoots(module jfrogappsconfig.Module, scanner *jfrogappsconfig.Scan return roots, nil } -func GetExcludePatterns(module jfrogappsconfig.Module, scanner *jfrogappsconfig.Scanner, centralConfigExclusions []string, cliExclusions ...string) []string { +func GetJasExcludePatterns(module jfrogappsconfig.Module, scanner *jfrogappsconfig.Scanner, centralConfigExclusions []string, cliExclusions ...string) []string { uniqueExcludePatterns := datastructures.MakeSet[string]() if len(cliExclusions) > 0 || len(centralConfigExclusions) > 0 { // Adding exclusions from CLI requires to convert them to file exclude patterns @@ -448,9 +463,16 @@ func GetExcludePatterns(module jfrogappsconfig.Module, scanner *jfrogappsconfig. return uniqueExcludePatterns.ToSlice() } -func GetExcludePatternsForTarget(target results.ScanTarget, centralConfigExclusions []string) []string { +func GetJasExcludePatternsForTarget(target results.ScanTarget, centralConfigExclusions []string) []string { + if len(centralConfigExclusions) > 0 { + return centralConfigExclusions + } + if utils.ElementsEqual(target.Exclude, utils.DefaultScaExcludePatterns) { + // Default SCA exclude patterns, so we use the default JAS exclude patterns + return utils.DefaultJasExcludePatterns + } uniqueExcludePatterns := datastructures.MakeSet[string]() - uniqueExcludePatterns.AddElements(centralConfigExclusions...) + // Adding exclude patterns from the CLI requires to convert them to file exclude patterns uniqueExcludePatterns.AddElements(convertToFilesExcludePatterns(target.Exclude)...) return uniqueExcludePatterns.ToSlice() } @@ -525,16 +547,6 @@ func CreateScannerTempDirectory(scanner *JasScanner, scanType string, threadId i return scannerTempDir, nil } -func UpdateJasScannerWithExcludePatternsFromProfile(scanner *JasScanner, profile *clientservices.ConfigProfile) { - if profile == nil { - return - } - scanner.ScannersExclusions.ContextualAnalysisExcludePatterns = profile.Modules[0].ScanConfig.ContextualAnalysisScannerConfig.ExcludePatterns - scanner.ScannersExclusions.SastExcludePatterns = profile.Modules[0].ScanConfig.SastScannerConfig.ExcludePatterns - scanner.ScannersExclusions.SecretsExcludePatterns = profile.Modules[0].ScanConfig.SecretsScannerConfig.ExcludePatterns - scanner.ScannersExclusions.IacExcludePatterns = profile.Modules[0].ScanConfig.IacScannerConfig.ExcludePatterns -} - func GetStartJasScanLog(scanType utils.SubScanType, threadId int, module *jfrogappsconfig.Module, targetCount int) string { outLog := goclientutils.GetLogMsgPrefix(threadId, false) + fmt.Sprintf("Running %s scan", scanType.ToTextString()) if targetCount != 1 && module != nil { diff --git a/jas/common_test.go b/jas/common_test.go index a5042e572..2db844ce9 100644 --- a/jas/common_test.go +++ b/jas/common_test.go @@ -69,18 +69,18 @@ func TestCreateJFrogAppsConfigWithConfig(t *testing.T) { func TestShouldSkipScanner(t *testing.T) { module := jfrogAppsConfig.Module{} - assert.False(t, ShouldSkipScanner(&module, jasutils.IaC)) + assert.False(t, ShouldSkipScannerByModule(results.ScanTarget{DeprecatedAppsConfigModule: &module}, jasutils.IaC)) module = jfrogAppsConfig.Module{ExcludeScanners: []string{"sast"}} - assert.False(t, ShouldSkipScanner(&module, jasutils.IaC)) - assert.True(t, ShouldSkipScanner(&module, jasutils.Sast)) + assert.False(t, ShouldSkipScannerByModule(results.ScanTarget{DeprecatedAppsConfigModule: &module}, jasutils.IaC)) + assert.True(t, ShouldSkipScannerByModule(results.ScanTarget{DeprecatedAppsConfigModule: &module}, jasutils.Sast)) // no module - assert.False(t, ShouldSkipScanner(nil, jasutils.IaC)) - assert.False(t, ShouldSkipScanner(nil, jasutils.Sast)) - assert.False(t, ShouldSkipScanner(nil, jasutils.Secrets)) - assert.False(t, ShouldSkipScanner(nil, jasutils.MaliciousCode)) - assert.False(t, ShouldSkipScanner(nil, jasutils.Applicability)) + assert.False(t, ShouldSkipScannerByModule(results.ScanTarget{}, jasutils.IaC)) + assert.False(t, ShouldSkipScannerByModule(results.ScanTarget{}, jasutils.Sast)) + assert.False(t, ShouldSkipScannerByModule(results.ScanTarget{}, jasutils.Secrets)) + assert.False(t, ShouldSkipScannerByModule(results.ScanTarget{}, jasutils.MaliciousCode)) + assert.False(t, ShouldSkipScannerByModule(results.ScanTarget{}, jasutils.Applicability)) } var getSourceRootsCases = []struct { @@ -129,12 +129,12 @@ var getExcludePatternsCases = []struct { {&jfrogAppsConfig.Scanner{WorkingDirs: []string{"exclude-dir-1", "exclude-dir-2"}}}, } -func TestGetExcludePatterns(t *testing.T) { +func TestGetJasExcludePatterns(t *testing.T) { module := jfrogAppsConfig.Module{ExcludePatterns: []string{"exclude-root"}} for _, testCase := range getExcludePatternsCases { t.Run("", func(t *testing.T) { scanner := testCase.scanner - actualExcludePatterns := GetExcludePatterns(module, scanner, []string{}) + actualExcludePatterns := GetJasExcludePatterns(module, scanner, []string{}) if scanner == nil { assert.ElementsMatch(t, module.ExcludePatterns, actualExcludePatterns) return diff --git a/jas/iac/iacscanner.go b/jas/iac/iacscanner.go index 9a9d4bfca..4e37fc9db 100644 --- a/jas/iac/iacscanner.go +++ b/jas/iac/iacscanner.go @@ -33,7 +33,6 @@ type IacScanParams struct { ThreadId int TargetCount int ResultsToCompare []*sarif.Run - Module *jfrogappsconfig.Module Target results.ScanTarget } @@ -51,7 +50,7 @@ func RunIacScan(scanner *jas.JasScanner, params IacScanParams) (vulnerabilitiesR return } startTime := time.Now() - log.Info(jas.GetStartJasScanLog(utils.IacScan, params.ThreadId, params.Module, params.TargetCount)) + log.Info(jas.GetStartJasScanLog(utils.IacScan, params.ThreadId, params.Target.DeprecatedAppsConfigModule, params.TargetCount)) if vulnerabilitiesResults, violationsResults, err = runIacScan(iacScanManager, params); err != nil { return } @@ -60,10 +59,10 @@ func RunIacScan(scanner *jas.JasScanner, params IacScanParams) (vulnerabilitiesR } func runIacScan(iacScanManager *IacScanManager, params IacScanParams) (vulnerabilitiesResults []*sarif.Run, violationsResults []*sarif.Run, err error) { - if params.Module == nil { + if params.Target.DeprecatedAppsConfigModule == nil { return iacScanManager.scanner.Run(iacScanManager, params.Target) } - return iacScanManager.scanner.DeprecatedRun(iacScanManager, *params.Module) + return iacScanManager.scanner.DeprecatedRun(iacScanManager, *params.Target.DeprecatedAppsConfigModule, params.Target.GetCentralConfigExclusions(utils.IacScan)) } func newIacScanManager(scanner *jas.JasScanner, scannerTempDir string, resultsToCompare ...*sarif.Run) (manager *IacScanManager, err error) { @@ -85,8 +84,8 @@ func newIacScanManager(scanner *jas.JasScanner, scannerTempDir string, resultsTo return } -func (iac *IacScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { - if err = iac.deprecatedCreateConfigFile(module, iac.scanner.ScannersExclusions.IacExcludePatterns, iac.scanner.Exclusions...); err != nil { +func (iac *IacScanManager) DeprecatedRun(module jfrogappsconfig.Module, centralConfigExclusions []string) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { + if err = iac.deprecatedCreateConfigFile(module, centralConfigExclusions, iac.scanner.Exclusions...); err != nil { return } if err = iac.runAnalyzerManager(); err != nil { @@ -96,7 +95,7 @@ func (iac *IacScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vulnera } func (iac *IacScanManager) Run(target results.ScanTarget) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { - if err = iac.createConfigFileForTarget(target, iac.scanner.ScannersExclusions.IacExcludePatterns); err != nil { + if err = iac.createConfigFileForTarget(target); err != nil { return } if err = iac.runAnalyzerManager(); err != nil { @@ -129,14 +128,14 @@ func (iac *IacScanManager) deprecatedCreateConfigFile(module jfrogappsconfig.Mod Output: iac.resultsFileName, PathToResultsToCompare: iac.resultsToCompareFileName, Type: iacScannerType, - SkippedDirs: jas.GetExcludePatterns(module, module.Scanners.Iac, centralConfigExclusions, exclusions...), + SkippedDirs: jas.GetJasExcludePatterns(module, module.Scanners.Iac, centralConfigExclusions, exclusions...), }, }, } return jas.CreateScannersConfigFile(iac.configFileName, configFileContent, jasutils.IaC) } -func (iac *IacScanManager) createConfigFileForTarget(target results.ScanTarget, centralConfigExclusions []string) error { +func (iac *IacScanManager) createConfigFileForTarget(target results.ScanTarget) error { configFileContent := iacScanConfig{ Scans: []iacScanConfiguration{ { @@ -144,7 +143,7 @@ func (iac *IacScanManager) createConfigFileForTarget(target results.ScanTarget, Output: iac.resultsFileName, PathToResultsToCompare: iac.resultsToCompareFileName, Type: iacScannerType, - SkippedDirs: jas.GetExcludePatternsForTarget(target, centralConfigExclusions), + SkippedDirs: jas.GetJasExcludePatternsForTarget(target, target.GetCentralConfigExclusions(utils.IacScan)), }, }, } diff --git a/jas/iac/iacscanner_test.go b/jas/iac/iacscanner_test.go index 294127749..b23acd8e2 100644 --- a/jas/iac/iacscanner_test.go +++ b/jas/iac/iacscanner_test.go @@ -97,7 +97,7 @@ func TestIacScan_CreateConfigFile_VerifyFileWasCreated(t *testing.T) { currWd, err := coreutils.GetWorkingDirectory() assert.NoError(t, err) - err = iacScanManager.createConfigFileForTarget(results.ScanTarget{Target: currWd}, []string{}) + err = iacScanManager.createConfigFileForTarget(results.ScanTarget{Target: currWd}) assert.NoError(t, err) defer func() { diff --git a/jas/maliciouscode/maliciouscodescanner.go b/jas/maliciouscode/maliciouscodescanner.go index 806976c0d..ba5a07652 100644 --- a/jas/maliciouscode/maliciouscodescanner.go +++ b/jas/maliciouscode/maliciouscodescanner.go @@ -75,7 +75,7 @@ func newMaliciousScanManager(scanner *jas.JasScanner, scanType MaliciousScanType } func (mal *MaliciousScanManager) Run(sourceRoot string) (vulnerabilitiesSarifRuns []*sarif.Run, err error) { - if err = mal.createConfigFile(sourceRoot, append(mal.scanner.Exclusions, mal.scanner.ScannersExclusions.MaliciousCodeExcludePatterns...)...); err != nil { + if err = mal.createConfigFile(sourceRoot, mal.scanner.Exclusions...); err != nil { return } if err = mal.runAnalyzerManager(); err != nil { diff --git a/jas/runner/jasrunner.go b/jas/runner/jasrunner.go index 8026f00bd..652cfd4bf 100644 --- a/jas/runner/jasrunner.go +++ b/jas/runner/jasrunner.go @@ -5,7 +5,6 @@ import ( "fmt" "github.com/jfrog/gofrog/parallel" - jfrogappsconfig "github.com/jfrog/jfrog-apps-config/go" "github.com/jfrog/jfrog-cli-core/v2/utils/config" "github.com/jfrog/jfrog-cli-security/jas" "github.com/jfrog/jfrog-cli-security/jas/applicability" @@ -27,7 +26,6 @@ type JasRunnerParams struct { ServerDetails *config.ServerDetails Scanner *jas.JasScanner // Module / Target flags - Module *jfrogappsconfig.Module ConfigProfile *services.ConfigProfile TargetCount int ScanResults *results.TargetResults @@ -101,28 +99,13 @@ func addJasScanTaskIfNeeded(params JasRunnerParams, subScan utils.SubScanType, t return } if params.ConfigProfile != nil { - log.Debug(fmt.Sprintf("Using config profile '%s' to determine whether to run %s scan...", params.ConfigProfile.ProfileName, jasType)) - enabled := false - switch jasType { - case jasutils.Secrets: - enabled = params.ConfigProfile.Modules[0].ScanConfig.SecretsScannerConfig.EnableSecretsScan - case jasutils.Sast: - enabled = params.ConfigProfile.Modules[0].ScanConfig.SastScannerConfig.EnableSastScan - case jasutils.IaC: - enabled = params.ConfigProfile.Modules[0].ScanConfig.IacScannerConfig.EnableIacScan - case jasutils.Applicability: - // In Applicability scanner we must check that Sca is also enabled, since we cannot run CA without Sca results - enabled = params.ConfigProfile.Modules[0].ScanConfig.ContextualAnalysisScannerConfig.EnableCaScan && params.ConfigProfile.Modules[0].ScanConfig.ScaScannerConfig.EnableScaScan + if jas.ShouldSkipScannerByConfigProfile(params.ScanResults.ScanTarget, params.ConfigProfile, subScan, jasType) { + return } - if enabled { - generalError = addJasScanTask(jasType, params.Runner, task, params.ScanResults, params.AllowPartialResults) - } else { - log.Debug(fmt.Sprintf("Skipping %s scan as requested by '%s' config profile...", jasType, params.ConfigProfile.ProfileName)) - } - return + // If Config profile exists, we don't need to check for deprecated apps config module + return addJasScanTask(jasType, params.Runner, task, params.ScanResults, params.AllowPartialResults) } - if jas.ShouldSkipScanner(params.Module, jasType) { - log.Debug(fmt.Sprintf("Skipping %s scan as requested by local module config...", subScan)) + if jas.ShouldSkipScannerByModule(params.ScanResults.ScanTarget, jasType) { return } return addJasScanTask(jasType, params.Runner, task, params.ScanResults, params.AllowPartialResults) @@ -148,7 +131,6 @@ func runSecretsScan(params *JasRunnerParams) parallel.TaskFunc { TargetCount: params.TargetCount, ScanType: params.SecretsScanType, ResultsToCompare: getSourceRunsToCompare(params, jasutils.Secrets), - Module: params.Module, Target: params.ScanResults.ScanTarget, } vulnerabilitiesResults, violationsResults, err := secrets.RunSecretsScan(params.Scanner, secretsScanParams) @@ -172,7 +154,6 @@ func runIacScan(params *JasRunnerParams) parallel.TaskFunc { ThreadId: threadId, TargetCount: params.TargetCount, ResultsToCompare: getSourceRunsToCompare(params, jasutils.IaC), - Module: params.Module, Target: params.ScanResults.ScanTarget, } vulnerabilitiesResults, violationsResults, err := iac.RunIacScan(params.Scanner, iacScanParams) @@ -198,7 +179,6 @@ func runSastScan(params *JasRunnerParams) parallel.TaskFunc { SignedDescriptions: params.SignedDescriptions, SastRules: params.SastRules, ResultsToCompare: getSourceRunsToCompare(params, jasutils.Sast), - Module: params.Module, Target: params.ScanResults.ScanTarget, } vulnerabilitiesResults, violationsResults, err := sast.RunSastScan(params.Scanner, sastScanParams) @@ -231,7 +211,6 @@ func runContextualScan(params *JasRunnerParams) parallel.TaskFunc { ThirdPartyContextualAnalysis: params.ThirdPartyApplicabilityScan, ThreadId: threadId, TargetCount: params.TargetCount, - Module: params.Module, Target: params.ScanResults.ScanTarget, }, params.Scanner, diff --git a/jas/runner/jasrunner_test.go b/jas/runner/jasrunner_test.go index 23dd61cce..9bac6e1c9 100644 --- a/jas/runner/jasrunner_test.go +++ b/jas/runner/jasrunner_test.go @@ -76,7 +76,7 @@ func TestJasRunner_Module_AnalyzerManagerReturnsError(t *testing.T) { DirectDependenciesCves: directCves, IndirectDependenciesCves: indirectCves, ScanType: applicability.ApplicabilityScannerType, - Module: &jfrogAppsConfigForTest.Modules[0], + Target: results.ScanTarget{Target: "target", DeprecatedAppsConfigModule: &jfrogAppsConfigForTest.Modules[0]}, }, scanner, ) diff --git a/jas/sast/sastscanner.go b/jas/sast/sastscanner.go index 90264d205..43c6b2a98 100644 --- a/jas/sast/sastscanner.go +++ b/jas/sast/sastscanner.go @@ -38,7 +38,6 @@ type SastScanParams struct { SignedDescriptions bool SastRules string ResultsToCompare []*sarif.Run - Module *jfrogappsconfig.Module Target results.ScanTarget } @@ -52,7 +51,7 @@ func RunSastScan(scanner *jas.JasScanner, params SastScanParams) (vulnerabilitie return } startTime := time.Now() - log.Info(jas.GetStartJasScanLog(utils.SastScan, params.ThreadId, params.Module, params.TargetCount)) + log.Info(jas.GetStartJasScanLog(utils.SastScan, params.ThreadId, params.Target.DeprecatedAppsConfigModule, params.TargetCount)) if vulnerabilitiesResults, violationsResults, err = runSastScan(sastScanManager, params); err != nil { return } @@ -61,10 +60,10 @@ func RunSastScan(scanner *jas.JasScanner, params SastScanParams) (vulnerabilitie } func runSastScan(sastScanManager *SastScanManager, params SastScanParams) (vulnerabilitiesResults []*sarif.Run, violationsResults []*sarif.Run, err error) { - if params.Module == nil { + if params.Target.DeprecatedAppsConfigModule == nil { return sastScanManager.scanner.Run(sastScanManager, params.Target) } - return sastScanManager.scanner.DeprecatedRun(sastScanManager, *params.Module) + return sastScanManager.scanner.DeprecatedRun(sastScanManager, *params.Target.DeprecatedAppsConfigModule, params.Target.GetCentralConfigExclusions(utils.SastScan)) } func newSastScanManager(scanner *jas.JasScanner, scannerTempDir string, signedDescriptions bool, sastRules string, resultsToCompare ...*sarif.Run) (manager *SastScanManager, err error) { @@ -86,8 +85,8 @@ func newSastScanManager(scanner *jas.JasScanner, scannerTempDir string, signedDe return } -func (ssm *SastScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { - if err = ssm.deprecatedCreateConfigFile(module, ssm.signedDescriptions, ssm.scanner.ScannersExclusions.SastExcludePatterns, ssm.scanner.Exclusions...); err != nil { +func (ssm *SastScanManager) DeprecatedRun(module jfrogappsconfig.Module, centralConfigExclusions []string) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { + if err = ssm.deprecatedCreateConfigFile(module, ssm.signedDescriptions, centralConfigExclusions, ssm.scanner.Exclusions...); err != nil { return } if err = ssm.runAnalyzerManager(filepath.Dir(ssm.scanner.AnalyzerManager.AnalyzerManagerFullPath)); err != nil { @@ -103,7 +102,7 @@ func (ssm *SastScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vulner } func (ssm *SastScanManager) Run(target results.ScanTarget) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { - if err = ssm.createConfigFileForTarget(target, ssm.scanner.ScannersExclusions.SastExcludePatterns); err != nil { + if err = ssm.createConfigFileForTarget(target); err != nil { return } if err = ssm.runAnalyzerManager(filepath.Dir(ssm.scanner.AnalyzerManager.AnalyzerManagerFullPath)); err != nil { @@ -159,7 +158,7 @@ func (ssm *SastScanManager) deprecatedCreateConfigFile(module jfrogappsconfig.Mo SastParameters: sastParameters{ SignedDescriptions: signedDescriptions, }, - ExcludePatterns: jas.GetExcludePatterns(module, &sastScanner.Scanner, centralConfigExclusions, exclusions...), + ExcludePatterns: jas.GetJasExcludePatterns(module, &sastScanner.Scanner, centralConfigExclusions, exclusions...), UserRules: ssm.sastRules, }, }, @@ -167,7 +166,7 @@ func (ssm *SastScanManager) deprecatedCreateConfigFile(module jfrogappsconfig.Mo return jas.CreateScannersConfigFile(ssm.configFileName, configFileContent, jasutils.Sast) } -func (ssm *SastScanManager) createConfigFileForTarget(target results.ScanTarget, centralConfigExclusions []string) error { +func (ssm *SastScanManager) createConfigFileForTarget(target results.ScanTarget) error { configFileContent := sastScanConfig{ Scans: []scanConfiguration{ { @@ -178,7 +177,7 @@ func (ssm *SastScanManager) createConfigFileForTarget(target results.ScanTarget, SastParameters: sastParameters{ SignedDescriptions: ssm.signedDescriptions, }, - ExcludePatterns: jas.GetExcludePatternsForTarget(target, centralConfigExclusions), + ExcludePatterns: jas.GetJasExcludePatternsForTarget(target, target.GetCentralConfigExclusions(utils.SastScan)), UserRules: ssm.sastRules, }, }, diff --git a/jas/secrets/secretsscanner.go b/jas/secrets/secretsscanner.go index 903b345ae..946c63e23 100644 --- a/jas/secrets/secretsscanner.go +++ b/jas/secrets/secretsscanner.go @@ -40,7 +40,6 @@ type SecretsScanParams struct { TargetCount int ScanType SecretsScanType ResultsToCompare []*sarif.Run - Module *jfrogappsconfig.Module Target results.ScanTarget } @@ -58,7 +57,7 @@ func RunSecretsScan(scanner *jas.JasScanner, params SecretsScanParams) (vulnerab return } startTime := time.Now() - log.Info(jas.GetStartJasScanLog(utils.SecretsScan, params.ThreadId, params.Module, params.TargetCount)) + log.Info(jas.GetStartJasScanLog(utils.SecretsScan, params.ThreadId, params.Target.DeprecatedAppsConfigModule, params.TargetCount)) if vulnerabilitiesResults, violationsResults, err = runSecretsScan(secretScanManager, params); err != nil { return } @@ -67,10 +66,10 @@ func RunSecretsScan(scanner *jas.JasScanner, params SecretsScanParams) (vulnerab } func runSecretsScan(secretScanManager *SecretScanManager, params SecretsScanParams) (vulnerabilitiesResults []*sarif.Run, violationsResults []*sarif.Run, err error) { - if params.Module == nil { + if params.Target.DeprecatedAppsConfigModule == nil { return secretScanManager.scanner.Run(secretScanManager, params.Target) } - return secretScanManager.scanner.DeprecatedRun(secretScanManager, *params.Module) + return secretScanManager.scanner.DeprecatedRun(secretScanManager, *params.Target.DeprecatedAppsConfigModule, params.Target.GetCentralConfigExclusions(utils.SecretsScan)) } func newSecretsScanManager(scanner *jas.JasScanner, scanType SecretsScanType, scannerTempDir string, resultsToCompare ...*sarif.Run) (manager *SecretScanManager, err error) { @@ -91,8 +90,8 @@ func newSecretsScanManager(scanner *jas.JasScanner, scanType SecretsScanType, sc return } -func (ssm *SecretScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { - if err = ssm.deprecatedCreateConfigFile(module, ssm.scanner.ScannersExclusions.SecretsExcludePatterns, ssm.scanner.Exclusions...); err != nil { +func (ssm *SecretScanManager) DeprecatedRun(module jfrogappsconfig.Module, centralConfigExclusions []string) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { + if err = ssm.deprecatedCreateConfigFile(module, centralConfigExclusions, ssm.scanner.Exclusions...); err != nil { return } if err = ssm.runAnalyzerManager(); err != nil { @@ -102,7 +101,7 @@ func (ssm *SecretScanManager) DeprecatedRun(module jfrogappsconfig.Module) (vuln } func (ssm *SecretScanManager) Run(target results.ScanTarget) (vulnerabilitiesSarifRuns []*sarif.Run, violationsSarifRuns []*sarif.Run, err error) { - if err = ssm.createConfigFileForTarget(target, ssm.scanner.ScannersExclusions.SecretsExcludePatterns); err != nil { + if err = ssm.createConfigFileForTarget(target); err != nil { return } if err = ssm.runAnalyzerManager(); err != nil { @@ -135,14 +134,14 @@ func (s *SecretScanManager) deprecatedCreateConfigFile(module jfrogappsconfig.Mo Output: s.resultsFileName, PathToResultsToCompare: s.resultsToCompareFileName, Type: string(s.scanType), - SkippedDirs: jas.GetExcludePatterns(module, module.Scanners.Secrets, centralConfigExclusions, exclusions...), + SkippedDirs: jas.GetJasExcludePatterns(module, module.Scanners.Secrets, centralConfigExclusions, exclusions...), }, }, } return jas.CreateScannersConfigFile(s.configFileName, configFileContent, jasutils.Secrets) } -func (s *SecretScanManager) createConfigFileForTarget(target results.ScanTarget, centralConfigExclusions []string) error { +func (s *SecretScanManager) createConfigFileForTarget(target results.ScanTarget) error { configFileContent := secretsScanConfig{ Scans: []secretsScanConfiguration{ { @@ -150,7 +149,7 @@ func (s *SecretScanManager) createConfigFileForTarget(target results.ScanTarget, Output: s.resultsFileName, PathToResultsToCompare: s.resultsToCompareFileName, Type: string(s.scanType), - SkippedDirs: jas.GetExcludePatternsForTarget(target, centralConfigExclusions), + SkippedDirs: jas.GetJasExcludePatternsForTarget(target, target.GetCentralConfigExclusions(utils.SecretsScan)), }, }, } diff --git a/jas/secrets/secretsscanner_test.go b/jas/secrets/secretsscanner_test.go index 859f88f48..112704a99 100644 --- a/jas/secrets/secretsscanner_test.go +++ b/jas/secrets/secretsscanner_test.go @@ -93,7 +93,7 @@ func TestSecretsScan_CreateConfigFile_VerifyFileWasCreated(t *testing.T) { currWd, err := coreutils.GetWorkingDirectory() assert.NoError(t, err) - err = secretScanManager.createConfigFileForTarget(results.ScanTarget{Target: currWd}, []string{}) + err = secretScanManager.createConfigFileForTarget(results.ScanTarget{Target: currWd}) assert.NoError(t, err) defer func() { @@ -179,8 +179,7 @@ func TestGetSecretsScanResults_AnalyzerManagerReturnsError(t *testing.T) { secretsScanParams := SecretsScanParams{ TargetCount: 1, ScanType: SecretsScannerType, - Module: &jfrogAppsConfigForTest.Modules[0], - Target: results.ScanTarget{Target: jfrogAppsConfigForTest.Modules[0].SourceRoot}, + Target: results.ScanTarget{Target: jfrogAppsConfigForTest.Modules[0].SourceRoot, DeprecatedAppsConfigModule: &jfrogAppsConfigForTest.Modules[0]}, } vulnerabilitiesResults, _, err := RunSecretsScan(scanner, secretsScanParams) assert.Error(t, err) diff --git a/sca/bom/buildinfo/technologies/common.go b/sca/bom/buildinfo/technologies/common.go index 28180c75c..5f27e2c8b 100644 --- a/sca/bom/buildinfo/technologies/common.go +++ b/sca/bom/buildinfo/technologies/common.go @@ -81,7 +81,7 @@ func (bbp *BuildInfoBomGeneratorParams) SetConanProfile(file string) *BuildInfoB return bbp } -func GetExcludePattern(configProfile *xscservices.ConfigProfile, isRecursive bool, exclusions ...string) string { +func GetScaExcludePattern(configProfile *xscservices.ConfigProfile, isRecursive bool, exclusions ...string) string { if configProfile != nil { exclusions = append(exclusions, configProfile.Modules[0].ScanConfig.ScaScannerConfig.ExcludePatterns...) } diff --git a/sca/bom/buildinfo/technologies/common_test.go b/sca/bom/buildinfo/technologies/common_test.go index 268afa683..b9241384e 100644 --- a/sca/bom/buildinfo/technologies/common_test.go +++ b/sca/bom/buildinfo/technologies/common_test.go @@ -17,7 +17,7 @@ import ( "github.com/stretchr/testify/assert" ) -func TestGetExcludePattern(t *testing.T) { +func TestGetScaExcludePattern(t *testing.T) { tests := []struct { name string exclusions []string @@ -69,7 +69,7 @@ func TestGetExcludePattern(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { - result := GetExcludePattern(test.configProfile, test.isRecursiveScan, test.exclusions...) + result := GetScaExcludePattern(test.configProfile, test.isRecursiveScan, test.exclusions...) assert.Equal(t, test.expected, result) }) } diff --git a/sca/scan/scascan.go b/sca/scan/scascan.go index 4bf917961..b7f9740be 100644 --- a/sca/scan/scascan.go +++ b/sca/scan/scascan.go @@ -106,20 +106,16 @@ func shouldRunScan(params ScaScanParams) (bool, error) { log.Debug(fmt.Sprintf("%sSkipping SCA for %s as requested by input...", logPrefix, params.ScanResults.Target)) return false, nil } + if params.ScanResults == nil { + return false, errors.New("scan results are nil in SCA scan parameters") + } // If the scan is turned off in the config profile, skip it. if params.ConfigProfile != nil { - if len(params.ConfigProfile.Modules) < 1 { - // Verify Modules are not nil and contain at least one modules - return false, fmt.Errorf("config profile %s has no modules. A config profile must contain at least one modules", params.ConfigProfile.ProfileName) - } - if !params.ConfigProfile.Modules[0].ScanConfig.ScaScannerConfig.EnableScaScan { + if !params.ScanResults.ScanTarget.IsScanRequestedByCentralConfig(utils.ScaScan) { log.Debug(fmt.Sprintf("%sSkipping SCA as requested by '%s' config profile...", logPrefix, params.ConfigProfile.ProfileName)) return false, nil } } - if params.ScanResults == nil { - return false, errors.New("scan results are nil for target") - } return hasDependenciesToScan(params.ScanResults, logPrefix), nil } diff --git a/utils/paths.go b/utils/paths.go index 6c27137fc..18d8e0ff4 100644 --- a/utils/paths.go +++ b/utils/paths.go @@ -6,11 +6,14 @@ import ( "os" "path" "path/filepath" + "regexp" "strings" "github.com/jfrog/jfrog-cli-core/v2/utils/config" "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" "github.com/jfrog/jfrog-cli-core/v2/utils/dependencies" + "github.com/jfrog/jfrog-client-go/artifactory/services/fspatterns" + clientUtils "github.com/jfrog/jfrog-client-go/utils" "github.com/jfrog/jfrog-client-go/utils/log" "github.com/jfrog/jfrog-cli-security/utils/techutils" @@ -95,6 +98,15 @@ func GetFullPathsWorkingDirs(workingDirs []string) ([]string, error) { return fullPathsWorkingDirs, nil } +func IsPathExcluded(path string, exclusions []string) bool { + match, err := regexp.MatchString(fspatterns.PrepareExcludePathPattern(exclusions, clientUtils.WildCardPattern, true), path) + if err != nil { + log.Warn("Failed to check if path is excluded:", err.Error()) + return false + } + return match +} + func GetRelativePath(fullPathWd, baseWd string) string { // Remove OS-specific file prefix if strings.HasPrefix(fullPathWd, "file:///private") { diff --git a/utils/results/results.go b/utils/results/results.go index b13ac4292..6525d6af9 100644 --- a/utils/results/results.go +++ b/utils/results/results.go @@ -177,7 +177,6 @@ func shouldUpdateStatus(currentStatus, newStatus *int) bool { type TargetResults struct { ScanTarget - AppsConfigModule *jfrogappsconfig.Module `json:"apps_config_module,omitempty"` // All scan results for the target ScaResults *ScaScanResults `json:"sca_scans,omitempty"` JasResults *JasScansResults `json:"jas_scans,omitempty"` @@ -220,7 +219,12 @@ type ScanTarget struct { // Logical name of the target (build name / module name / docker image name...) Name string `json:"name,omitempty"` // Optional field (not used only in build scan) to provide the technology of the target + // TODO: convert to list of technologies Technology techutils.Technology `json:"technology,omitempty"` + // Optional field to provide the deprecated apps config module for the target + DeprecatedAppsConfigModule *jfrogappsconfig.Module `json:"deprecated_apps_config_module,omitempty"` + // Optional field to provide the central config modules for the target + CentralConfigModules []xscServices.Module `json:"central_config_modules,omitempty"` } func (st ScanTarget) String() (str string) { @@ -244,6 +248,78 @@ func (st ScanTarget) String() (str string) { return } +func (st ScanTarget) IsScanRequestedByCentralConfig(scanType utils.SubScanType) bool { + for _, module := range st.CentralConfigModules { + switch scanType { + case utils.ScaScan: + if module.ScanConfig.ScaScannerConfig.EnableScaScan { + return true + } + case utils.ContextualAnalysisScan: + if module.ScanConfig.ContextualAnalysisScannerConfig.EnableCaScan && module.ScanConfig.ScaScannerConfig.EnableScaScan { + return true + } + case utils.IacScan: + if module.ScanConfig.IacScannerConfig.EnableIacScan { + return true + } + case utils.SecretsScan: + if module.ScanConfig.SecretsScannerConfig.EnableSecretsScan { + return true + } + case utils.SastScan: + if module.ScanConfig.SastScannerConfig.EnableSastScan { + return true + } + default: + return false + } + } + return false +} + +func (st ScanTarget) GetCentralConfigExclusions(scanType utils.SubScanType) []string { + exclusions := datastructures.MakeSet[string]() + for _, module := range st.CentralConfigModules { + switch scanType { + case utils.ScaScan: + exclusions.AddElements(module.ScanConfig.ScaScannerConfig.ExcludePatterns...) + case utils.ContextualAnalysisScan: + exclusions.AddElements(module.ScanConfig.ContextualAnalysisScannerConfig.ExcludePatterns...) + case utils.IacScan: + exclusions.AddElements(module.ScanConfig.IacScannerConfig.ExcludePatterns...) + case utils.SecretsScan: + exclusions.AddElements(module.ScanConfig.SecretsScannerConfig.ExcludePatterns...) + case utils.SastScan: + exclusions.AddElements(module.ScanConfig.SastScannerConfig.ExcludePatterns...) + } + } + return exclusions.ToSlice() +} + +func (st ScanTarget) GeDeprecatedAppsConfigModuleExclusions(scanType jasutils.JasScanType) []string { + if st.DeprecatedAppsConfigModule == nil { + return nil + } + exclusions := datastructures.MakeSet[string]() + exclusions.AddElements(st.DeprecatedAppsConfigModule.ExcludePatterns...) + switch scanType { + case jasutils.Secrets: + if st.DeprecatedAppsConfigModule.Scanners.Secrets != nil { + exclusions.AddElements(st.DeprecatedAppsConfigModule.Scanners.Secrets.ExcludePatterns...) + } + case jasutils.Sast: + if st.DeprecatedAppsConfigModule.Scanners.Sast != nil { + exclusions.AddElements(st.DeprecatedAppsConfigModule.Scanners.Sast.ExcludePatterns...) + } + case jasutils.IaC: + if st.DeprecatedAppsConfigModule.Scanners.Iac != nil { + exclusions.AddElements(st.DeprecatedAppsConfigModule.Scanners.Iac.ExcludePatterns...) + } + } + return exclusions.ToSlice() +} + func NewCommandResults(cmdType utils.CommandType) *SecurityCommandResults { return &SecurityCommandResults{ResultsMetaData: ResultsMetaData{CmdType: cmdType}, targetsMutex: sync.Mutex{}, errorsMutex: sync.Mutex{}} } diff --git a/utils/utils.go b/utils/utils.go index 5fbb757f9..d6f986837 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -444,3 +444,20 @@ func isArtifactChecksumsMatch(remoteFileDetails *fileutils.FileDetails, localFil } return remoteFileDetails.Checksum.Sha256 == sha256, nil } + +func ElementsEqual[T comparable](slice1 []T, slice2 []T) bool { + if len(slice1) != len(slice2) { + return false + } + for i := range slice1 { + if !slices.Contains(slice2, slice1[i]) { + return false + } + } + for i := range slice2 { + if !slices.Contains(slice1, slice2[i]) { + return false + } + } + return true +} From 8b4f7286a0bacbe3cc2b709bd4d1c9fc73fb8045 Mon Sep 17 00:00:00 2001 From: attiasas Date: Sun, 22 Feb 2026 10:57:06 +0200 Subject: [PATCH 18/26] fix some tests --- commands/audit/audit.go | 6 +- commands/audit/audit_test.go | 218 +++++++++++++++++++++++++++++++++++ 2 files changed, 221 insertions(+), 3 deletions(-) diff --git a/commands/audit/audit.go b/commands/audit/audit.go index 1808e2cfe..038ce59ba 100644 --- a/commands/audit/audit.go +++ b/commands/audit/audit.go @@ -548,7 +548,7 @@ func matchCentralConfigModules(cmdResults *results.SecurityCommandResults, centr func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults, params *AuditParams, cwd string) { potentialScanTargets := []string{cwd} - if len(params.workingDirs) > 1 { + if len(params.workingDirs) > 0 { potentialScanTargets = params.workingDirs } for _, requestedDirectory := range potentialScanTargets { @@ -596,9 +596,9 @@ func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults // If no scan targets were detected, we should still proceed with the scans. if len(potentialScanTargets) == 1 && len(cmdResults.Targets) == 0 { cmdResults.NewScanResults(results.ScanTarget{ - Target: cwd, + Target: potentialScanTargets[0], Exclude: params.Exclusions(), - DeprecatedAppsConfigModule: jas.GetModule(cwd, params.DeprecatedAppsConfig()), + DeprecatedAppsConfigModule: jas.GetModule(potentialScanTargets[0], params.DeprecatedAppsConfig()), }) } } diff --git a/commands/audit/audit_test.go b/commands/audit/audit_test.go index 525871ff7..df76a4028 100644 --- a/commands/audit/audit_test.go +++ b/commands/audit/audit_test.go @@ -190,10 +190,221 @@ func TestDetectScansToPerform(t *testing.T) { }, }, }, + { + name: "Non-recursive scan on directory with descriptor at top level", + wd: dir, + params: func() *AuditParams { + param := NewAuditParams().SetWorkingDirs([]string{filepath.Join(dir, "dir", "npm")}) + param.SetIsRecursiveScan(false) + return param + }, + expected: []*results.TargetResults{ + { + ScanTarget: results.ScanTarget{ + Technology: techutils.Npm, + Target: filepath.Join(dir, "dir", "npm"), + }, + JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, + ScaResults: &results.ScaScanResults{ + Descriptors: []string{filepath.Join(dir, "dir", "npm", "package.json")}, + }, + }, + }, + }, + { + name: "Single technology (npm only)", + wd: dir, + params: func() *AuditParams { + param := NewAuditParams().SetWorkingDirs([]string{dir}) + param.SetTechnologies([]string{"npm"}).SetIsRecursiveScan(true) + return param + }, + expected: []*results.TargetResults{ + { + ScanTarget: results.ScanTarget{ + Technology: techutils.Npm, + Target: filepath.Join(dir, "dir", "npm"), + }, + JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, + ScaResults: &results.ScaScanResults{ + Descriptors: []string{filepath.Join(dir, "dir", "npm", "package.json")}, + }, + }, + { + // Requested tech npm had no other descriptors at root; add JAS-only target for requested directory + ScanTarget: results.ScanTarget{ + Target: dir, + }, + JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, + }, + }, + }, + { + name: "Multiple working dirs (subset - dir and yarn only, no Nuget)", + wd: dir, + params: func() *AuditParams { + param := NewAuditParams().SetWorkingDirs([]string{filepath.Join(dir, "dir"), filepath.Join(dir, "yarn")}) + param.SetIsRecursiveScan(true) + return param + }, + expected: []*results.TargetResults{ + { + ScanTarget: results.ScanTarget{ + Technology: techutils.Go, + Target: filepath.Join(dir, "dir", "go"), + }, + JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, + ScaResults: &results.ScaScanResults{ + Descriptors: []string{filepath.Join(dir, "dir", "go", "go.mod")}, + }, + }, + { + ScanTarget: results.ScanTarget{ + Technology: techutils.Maven, + Target: filepath.Join(dir, "dir", "maven"), + }, + JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, + ScaResults: &results.ScaScanResults{ + Descriptors: []string{ + filepath.Join(dir, "dir", "maven", "maven-sub", "pom.xml"), + filepath.Join(dir, "dir", "maven", "maven-sub2", "pom.xml"), + filepath.Join(dir, "dir", "maven", "pom.xml"), + }, + }, + }, + { + ScanTarget: results.ScanTarget{ + Technology: techutils.Npm, + Target: filepath.Join(dir, "dir", "npm"), + }, + JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, + ScaResults: &results.ScaScanResults{ + Descriptors: []string{filepath.Join(dir, "dir", "npm", "package.json")}, + }, + }, + { + ScanTarget: results.ScanTarget{ + Technology: techutils.Pip, + Target: filepath.Join(dir, "yarn", "Pip"), + }, + JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, + ScaResults: &results.ScaScanResults{ + Descriptors: []string{filepath.Join(dir, "yarn", "Pip", "requirements.txt")}, + }, + }, + { + ScanTarget: results.ScanTarget{ + Technology: techutils.Pipenv, + Target: filepath.Join(dir, "yarn", "Pipenv"), + }, + JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, + ScaResults: &results.ScaScanResults{ + Descriptors: []string{filepath.Join(dir, "yarn", "Pipenv", "Pipfile")}, + }, + }, + { + ScanTarget: results.ScanTarget{ + Technology: techutils.Yarn, + Target: filepath.Join(dir, "yarn"), + }, + JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, + ScaResults: &results.ScaScanResults{ + Descriptors: []string{filepath.Join(dir, "yarn", "package.json")}, + }, + }, + }, + }, + { + name: "Single technology (maven only)", + wd: dir, + params: func() *AuditParams { + param := NewAuditParams().SetWorkingDirs([]string{filepath.Join(dir, "dir", "maven")}) + param.SetIsRecursiveScan(true) + return param + }, + expected: []*results.TargetResults{ + { + ScanTarget: results.ScanTarget{ + Technology: techutils.Maven, + Target: filepath.Join(dir, "dir", "maven"), + }, + JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, + ScaResults: &results.ScaScanResults{ + Descriptors: []string{ + filepath.Join(dir, "dir", "maven", "maven-sub", "pom.xml"), + filepath.Join(dir, "dir", "maven", "maven-sub2", "pom.xml"), + filepath.Join(dir, "dir", "maven", "pom.xml"), + }, + }, + }, + }, + }, + { + name: "Non-recursive on go directory", + wd: dir, + params: func() *AuditParams { + param := NewAuditParams().SetWorkingDirs([]string{filepath.Join(dir, "dir", "go")}) + param.SetIsRecursiveScan(false) + return param + }, + expected: []*results.TargetResults{ + { + ScanTarget: results.ScanTarget{ + Technology: techutils.Go, + Target: filepath.Join(dir, "dir", "go"), + }, + JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, + ScaResults: &results.ScaScanResults{ + Descriptors: []string{filepath.Join(dir, "dir", "go", "go.mod")}, + }, + }, + }, + }, + { + name: "Single target with one working dir (npm)", + wd: dir, + params: func() *AuditParams { + param := NewAuditParams().SetWorkingDirs([]string{filepath.Join(dir, "dir", "npm")}) + param.SetIsSingleTarget(true).SetIsRecursiveScan(false) + return param + }, + expected: []*results.TargetResults{ + { + ScanTarget: results.ScanTarget{ + Target: dir, + Include: []string{filepath.Join(dir, "dir", "npm")}, + Technology: techutils.Npm, + }, + JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, + }, + }, + }, + { + name: "Single target with one working dir (maven)", + wd: dir, + params: func() *AuditParams { + param := NewAuditParams().SetWorkingDirs([]string{filepath.Join(dir, "dir", "maven")}) + param.SetIsSingleTarget(true).SetIsRecursiveScan(false) + return param + }, + expected: []*results.TargetResults{ + { + ScanTarget: results.ScanTarget{ + Target: dir, + Include: []string{filepath.Join(dir, "dir", "maven")}, + Technology: techutils.Maven, + }, + JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, + }, + }, + }, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { + if test.wd != "" { + defer securityTestUtils.ChangeWDWithCallback(t, test.wd)() + } results := results.NewCommandResults(utils.SourceCode).SetEntitledForJas(true).SetSecretValidation(true) detectScanTargets(results, test.params()) if assert.Len(t, results.Targets, len(test.expected)) { @@ -210,6 +421,13 @@ func TestDetectScansToPerform(t *testing.T) { if test.expected[i].ScaResults != nil { sort.Strings(test.expected[i].ScaResults.Descriptors) } + // Normalize for comparison: DeprecatedAppsConfigModule varies by working dir and is not under test + results.Targets[i].DeprecatedAppsConfigModule = nil + // Normalize single-target expected to actual cwd (path can differ e.g. /var vs /private/var on macOS) + if len(results.Targets) == 1 && len(results.Targets[i].Include) > 0 { + test.expected[i].Target = results.Targets[i].Target + test.expected[i].Include = results.Targets[i].Include + } } } assert.ElementsMatch(t, test.expected, results.Targets) From 7385416b0512e173121f3688336ce8ba40e0a9c6 Mon Sep 17 00:00:00 2001 From: attiasas Date: Mon, 23 Feb 2026 10:59:58 +0200 Subject: [PATCH 19/26] fix static --- sca/scan/scascan.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sca/scan/scascan.go b/sca/scan/scascan.go index b7f9740be..0a8993ab6 100644 --- a/sca/scan/scascan.go +++ b/sca/scan/scascan.go @@ -111,7 +111,7 @@ func shouldRunScan(params ScaScanParams) (bool, error) { } // If the scan is turned off in the config profile, skip it. if params.ConfigProfile != nil { - if !params.ScanResults.ScanTarget.IsScanRequestedByCentralConfig(utils.ScaScan) { + if !params.ScanResults.IsScanRequestedByCentralConfig(utils.ScaScan) { log.Debug(fmt.Sprintf("%sSkipping SCA as requested by '%s' config profile...", logPrefix, params.ConfigProfile.ProfileName)) return false, nil } From 7cc338ba48364088d504259abe1cd4c41068b424 Mon Sep 17 00:00:00 2001 From: attiasas Date: Wed, 25 Feb 2026 11:04:08 +0200 Subject: [PATCH 20/26] Fix apps config --- commands/audit/audit.go | 40 ++++++++++++++++++++-------------------- jfrogclisecurity_test.go | 2 +- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/commands/audit/audit.go b/commands/audit/audit.go index 038ce59ba..2f2876177 100644 --- a/commands/audit/audit.go +++ b/commands/audit/audit.go @@ -469,15 +469,6 @@ func getTargetResultsToCompare(cmdResults, resultsToCompare *results.SecurityCom } func detectScanTargets(cmdResults *results.SecurityCommandResults, params *AuditParams) { - if params.DeprecatedAppsConfig() == nil && !isNewFlow(params.bomGenerator) { - // Load deprecated apps config information - jfrogAppsConfig, err := jas.CreateJFrogAppsConfig(params.workingDirs) - if err != nil { - cmdResults.AddGeneralError(fmt.Errorf("failed to create JFrogAppsConfig: %s", err.Error()), false) - return - } - params.SetDeprecatedAppsConfig(jfrogAppsConfig) - } cwd, err := coreutils.GetWorkingDirectory() if err != nil { cmdResults.AddGeneralError(fmt.Errorf("failed to get working directory: %s", err.Error()), false) @@ -573,19 +564,17 @@ func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults if len(workingDirs) == 0 { // Requested technology (from params) descriptors/indicators were not found or recursive scan with NoTech value, add scan without descriptors. cmdResults.NewScanResults(results.ScanTarget{ - Target: requestedDirectory, - Technology: tech, - Exclude: params.Exclusions(), - DeprecatedAppsConfigModule: jas.GetModule(requestedDirectory, params.DeprecatedAppsConfig()), + Target: requestedDirectory, + Technology: tech, + Exclude: params.Exclusions(), }) } for workingDir, descriptors := range workingDirs { // Add scan for each detected working directory. targetResults := cmdResults.NewScanResults(results.ScanTarget{ - Target: workingDir, - Technology: tech, - Exclude: params.Exclusions(), - DeprecatedAppsConfigModule: jas.GetModule(workingDir, params.DeprecatedAppsConfig()), + Target: workingDir, + Technology: tech, + Exclude: params.Exclusions(), }) if tech != techutils.NoTech { targetResults.SetDescriptors(descriptors...) @@ -596,11 +585,22 @@ func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults // If no scan targets were detected, we should still proceed with the scans. if len(potentialScanTargets) == 1 && len(cmdResults.Targets) == 0 { cmdResults.NewScanResults(results.ScanTarget{ - Target: potentialScanTargets[0], - Exclude: params.Exclusions(), - DeprecatedAppsConfigModule: jas.GetModule(potentialScanTargets[0], params.DeprecatedAppsConfig()), + Target: potentialScanTargets[0], + Exclude: params.Exclusions(), }) } + // Load deprecated apps config information for all targets + if params.DeprecatedAppsConfig() == nil && !isNewFlow(params.bomGenerator) { + jfrogAppsConfig, err := jas.CreateJFrogAppsConfig(cmdResults.GetTargetsPaths()) + if err != nil { + cmdResults.AddGeneralError(fmt.Errorf("failed to create JFrogAppsConfig: %s", err.Error()), false) + return + } + params.SetDeprecatedAppsConfig(jfrogAppsConfig) + } + for _, targetResult := range cmdResults.Targets { + targetResult.DeprecatedAppsConfigModule = jas.GetModule(targetResult.Target, params.DeprecatedAppsConfig()) + } } func getRequestedDescriptors(params *AuditParams) map[techutils.Technology][]string { diff --git a/jfrogclisecurity_test.go b/jfrogclisecurity_test.go index 71c2402d3..8f3cb0490 100644 --- a/jfrogclisecurity_test.go +++ b/jfrogclisecurity_test.go @@ -41,7 +41,7 @@ func setupIntegrationTests() (cleanUp func()) { integrationUtils.InitTestCliDetails(cli.GetJfrogCliSecurityApp()) integrationUtils.AuthenticateArtifactory() integrationUtils.AuthenticateXsc() - integrationUtils.CreateRequiredRepositories() + // integrationUtils.CreateRequiredRepositories() homeResourcesCleanUp := integrationUtils.InitTestHomeResources() return func() { if homeResourcesCleanUp != nil { From 3540e4090e7fef8af72be28d36d2e9222682827d Mon Sep 17 00:00:00 2001 From: attiasas Date: Wed, 25 Feb 2026 11:25:11 +0200 Subject: [PATCH 21/26] remove uneeded comment --- jfrogclisecurity_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jfrogclisecurity_test.go b/jfrogclisecurity_test.go index 8f3cb0490..71c2402d3 100644 --- a/jfrogclisecurity_test.go +++ b/jfrogclisecurity_test.go @@ -41,7 +41,7 @@ func setupIntegrationTests() (cleanUp func()) { integrationUtils.InitTestCliDetails(cli.GetJfrogCliSecurityApp()) integrationUtils.AuthenticateArtifactory() integrationUtils.AuthenticateXsc() - // integrationUtils.CreateRequiredRepositories() + integrationUtils.CreateRequiredRepositories() homeResourcesCleanUp := integrationUtils.InitTestHomeResources() return func() { if homeResourcesCleanUp != nil { From fe9d1f38dfcad29601c05be60af9488314ac1114 Mon Sep 17 00:00:00 2001 From: attiasas Date: Mon, 30 Mar 2026 11:15:55 +0300 Subject: [PATCH 22/26] add tests and warning logs --- audit_test.go | 25 +++- commands/audit/audit.go | 7 +- jas/common.go | 6 +- jas/common_test.go | 116 +++++++++++++++ utils/paths_test.go | 85 +++++++++++ utils/results/results.go | 2 +- utils/results/results_test.go | 273 ++++++++++++++++++++++++++++++++++ utils/utils.go | 12 +- utils/utils_test.go | 57 +++++++ 9 files changed, 572 insertions(+), 11 deletions(-) create mode 100644 utils/paths_test.go create mode 100644 utils/results/results_test.go diff --git a/audit_test.go b/audit_test.go index 580a196a3..6f0b0472f 100644 --- a/audit_test.go +++ b/audit_test.go @@ -967,7 +967,9 @@ func testXrayAuditGem(t *testing.T, format string) string { func testAuditCommandNewSca(t *testing.T, project string, params auditCommandTestParams) (string, error) { // Must have one target, in new SCA mode the flow should not 'dirty' the local environment // No need to copy or change directories just point to the project directory - params.WorkingDirsToScan = []string{filepath.Join(filepath.FromSlash(securityTests.GetTestResourcesPath()), "projects", project)} + if len(params.WorkingDirsToScan) == 0 { + params.WorkingDirsToScan = []string{filepath.Join(filepath.FromSlash(securityTests.GetTestResourcesPath()), "projects", project)} + } params.WithStaticSca = true // No **/tests/** exclusion, we are scanning projects in the test resources path params.CustomExclusion = []string{"*.git*", "*node_modules*", "*target*", "*venv*", "dist"} @@ -999,6 +1001,27 @@ func TestAuditNewScaCycloneDxNpm(t *testing.T) { }) } +func TestAuditNewScaSimpleJsonMultipleWorkingDirs(t *testing.T) { + securityIntegrationTestUtils.InitAuditNewScaTests(t, utils.StaticScanMinVersion) + testResourcesPath := filepath.Join(filepath.FromSlash(securityTests.GetTestResourcesPath()), "projects") + output, err := testAuditCommandNewSca(t, "", auditCommandTestParams{ + WorkingDirsToScan: []string{ + filepath.Join(testResourcesPath, "jas", "jas-npm"), + filepath.Join(testResourcesPath, "package-managers", "go", "simple-project"), + }, + WithSbom: true, + Format: format.SimpleJson, + }) + assert.NoError(t, err) + validations.VerifySimpleJsonResults(t, output, validations.ValidationParams{ + ExactResultsMatch: true, + Total: &validations.TotalCount{Vulnerabilities: 10}, + Vulnerabilities: &validations.VulnerabilityCount{ + ValidateScan: &validations.ScanCount{Sca: 7, Sast: 2, Secrets: 1}, + }, + }) +} + func TestAuditNewScaSimpleJsonViolations(t *testing.T) { securityIntegrationTestUtils.InitAuditNewScaTests(t, utils.StaticScanMinVersion) diff --git a/commands/audit/audit.go b/commands/audit/audit.go index 4eb9cc7c3..887e46ff9 100644 --- a/commands/audit/audit.go +++ b/commands/audit/audit.go @@ -544,7 +544,11 @@ func createSingleScanTarget(cmdResults *results.SecurityCommandResults, params * detectedTechnologies.Add(tech) } } - for _, tech := range detectedTechnologies.ToSlice() { + techs := detectedTechnologies.ToSlice() + if len(techs) > 1 { + log.Warn(fmt.Sprintf("Detected multiple technologies %v but only one is supported per target. Using '%s'; others will be ignored.", techs, techs[0])) + } + for _, tech := range techs { // TODO: We only support one technology per target for now. should be extended in the future. scanTarget.Technology = tech break @@ -561,6 +565,7 @@ func matchCentralConfigModules(cmdResults *results.SecurityCommandResults, centr cmdResults.AddGeneralError(fmt.Errorf("config profile %s has no modules. A config profile must contain at least one modules", centralProfile.ProfileName), false) return } + log.Debug(fmt.Sprintf("Assigning all %d config profile module(s) from '%s' to each of the %d scan target(s)", len(centralProfile.Modules), centralProfile.ProfileName, len(cmdResults.Targets))) for _, targetResult := range cmdResults.Targets { // TODO: support matching multiple config modules to the scan targets // currently only supported one config module for all targets to configure in the UI diff --git a/jas/common.go b/jas/common.go index 17015ce95..f704e9498 100644 --- a/jas/common.go +++ b/jas/common.go @@ -266,11 +266,13 @@ func isValidVersion(version string) bool { } func fillMissingRequiredInvocationInformation(run *sarif.Run, target string, includeDirs ...string) { + // Aggregate execution success across all existing invocations, then replace them with a single + // canonical invocation carrying the scan target as working directory (not the analyzerManager directory set by the scanner). Downstream consumers only + // use the working directory URI and the success flag, so no other invocation metadata is needed. isExeSuccess := false for _, invocation := range run.Invocations { isExeSuccess = isExeSuccess || (invocation.ExecutionSuccessful != nil && *invocation.ExecutionSuccessful) } - // Set the actual working directory to the invocation, not the analyzerManager directory run.Invocations = []*sarif.Invocation{sarifutils.CreateNewInvocation(isExeSuccess, target, includeDirs...)} } @@ -420,7 +422,7 @@ func ShouldSkipScannerByModule(target results.ScanTarget, scanType jasutils.JasS log.Debug(fmt.Sprintf("Skipping %s scan as requested by local module config...", scanType)) return true } - exclusions := target.GeDeprecatedAppsConfigModuleExclusions(scanType) + exclusions := target.GetDeprecatedAppsConfigModuleExclusions(scanType) if len(exclusions) > 0 && utils.IsPathExcluded(target.Target, exclusions) { log.Debug(fmt.Sprintf("Skipping %s scan as target is excluded by local module config...", scanType)) return true diff --git a/jas/common_test.go b/jas/common_test.go index 2db844ce9..f04d170ee 100644 --- a/jas/common_test.go +++ b/jas/common_test.go @@ -15,6 +15,7 @@ import ( "github.com/jfrog/jfrog-cli-core/v2/utils/config" coreTests "github.com/jfrog/jfrog-cli-core/v2/utils/tests" clientTestUtils "github.com/jfrog/jfrog-client-go/utils/tests" + xscServices "github.com/jfrog/jfrog-client-go/xsc/services" "github.com/jfrog/jfrog-cli-security/utils" "github.com/jfrog/jfrog-cli-security/utils/formats/sarifutils" @@ -664,3 +665,118 @@ func TestProcessSarifRuns(t *testing.T) { result := run.Results[0] require.Equal(t, "dir/file2", sarifutils.GetLocationFileName(result.Locations[0])) } + +func TestShouldSkipScannerByConfigProfile(t *testing.T) { + enabledProfile := &xscServices.ConfigProfile{ + ProfileName: "test-profile", + Modules: []xscServices.Module{{ + ScanConfig: xscServices.ScanConfig{ + ScaScannerConfig: xscServices.ScaScannerConfig{EnableScaScan: true}, + ContextualAnalysisScannerConfig: xscServices.CaScannerConfig{EnableCaScan: true}, + IacScannerConfig: xscServices.IacScannerConfig{EnableIacScan: true}, + SecretsScannerConfig: xscServices.SecretsScannerConfig{EnableSecretsScan: true}, + SastScannerConfig: xscServices.SastScannerConfig{EnableSastScan: true}, + }, + }}, + } + + tests := []struct { + name string + target results.ScanTarget + profile *xscServices.ConfigProfile + scanType utils.SubScanType + jasType jasutils.JasScanType + expected bool + }{ + { + name: "Nil config profile - should not skip", + target: results.ScanTarget{Target: "/project"}, + profile: nil, + scanType: utils.SecretsScan, + jasType: jasutils.Secrets, + expected: false, + }, + { + name: "Scan enabled - should not skip", + target: results.ScanTarget{Target: "/project", CentralConfigModules: enabledProfile.Modules}, + profile: enabledProfile, + scanType: utils.SecretsScan, + jasType: jasutils.Secrets, + expected: false, + }, + { + name: "Scan disabled - should skip", + target: results.ScanTarget{Target: "/project", CentralConfigModules: []xscServices.Module{{ + ScanConfig: xscServices.ScanConfig{ + SecretsScannerConfig: xscServices.SecretsScannerConfig{EnableSecretsScan: false}, + }, + }}}, + profile: &xscServices.ConfigProfile{ + ProfileName: "disabled-profile", + Modules: []xscServices.Module{{ + ScanConfig: xscServices.ScanConfig{ + SecretsScannerConfig: xscServices.SecretsScannerConfig{EnableSecretsScan: false}, + }, + }}, + }, + scanType: utils.SecretsScan, + jasType: jasutils.Secrets, + expected: true, + }, + { + name: "Target excluded by GeneralExcludePatterns - should skip", + target: results.ScanTarget{Target: "/project/test-dir", CentralConfigModules: enabledProfile.Modules}, + profile: &xscServices.ConfigProfile{ + ProfileName: "exclude-profile", + GeneralConfig: xscServices.GeneralConfig{GeneralExcludePatterns: []string{"*test*"}}, + Modules: enabledProfile.Modules, + }, + scanType: utils.SecretsScan, + jasType: jasutils.Secrets, + expected: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.expected, ShouldSkipScannerByConfigProfile(tt.target, tt.profile, tt.scanType, tt.jasType)) + }) + } +} + +func TestGetJasExcludePatternsForTarget(t *testing.T) { + tests := []struct { + name string + target results.ScanTarget + centralConfigExclusions []string + expected []string + }{ + { + name: "Central config exclusions take precedence", + target: results.ScanTarget{Target: "/project"}, + centralConfigExclusions: []string{"**/vendor/**", "**/generated/**"}, + expected: []string{"**/vendor/**", "**/generated/**"}, + }, + { + name: "Default SCA exclusions map to default JAS exclusions", + target: results.ScanTarget{Target: "/project", Exclude: utils.DefaultScaExcludePatterns}, + centralConfigExclusions: nil, + expected: utils.DefaultJasExcludePatterns, + }, + { + name: "Custom exclusions are converted to file exclude patterns", + target: results.ScanTarget{Target: "/project", Exclude: []string{"custom-dir"}}, + centralConfigExclusions: nil, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := GetJasExcludePatternsForTarget(tt.target, tt.centralConfigExclusions) + if tt.expected != nil { + assert.ElementsMatch(t, tt.expected, result) + } else { + // For custom exclusions, just verify we got a non-empty result (converted patterns) + assert.NotEmpty(t, result) + } + }) + } +} diff --git a/utils/paths_test.go b/utils/paths_test.go new file mode 100644 index 000000000..1fab1da88 --- /dev/null +++ b/utils/paths_test.go @@ -0,0 +1,85 @@ +package utils + +import ( + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestIsPathExcluded(t *testing.T) { + tests := []struct { + name string + path string + exclusions []string + expected bool + }{ + { + name: "Matching exclusion pattern", + path: "/project/node_modules/pkg", + exclusions: []string{"*node_modules*"}, + expected: true, + }, + { + name: "Non-matching exclusion pattern", + path: "/project/src/main.go", + exclusions: []string{"*node_modules*"}, + expected: false, + }, + { + name: "Empty exclusions - matches all (PrepareExcludePathPattern behavior)", + path: "/project/src/main.go", + exclusions: []string{}, + expected: true, + }, + { + name: "Multiple patterns - one matches", + path: "/project/test/unit_test.go", + exclusions: []string{"*node_modules*", "*test*"}, + expected: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.expected, IsPathExcluded(tt.path, tt.exclusions)) + }) + } +} + +func TestGetFullPathsWorkingDirs(t *testing.T) { + tests := []struct { + name string + workingDirs []string + expectErr bool + }{ + { + name: "Empty input", + workingDirs: []string{}, + expectErr: false, + }, + { + name: "Already absolute paths", + workingDirs: []string{"/absolute/path/one", "/absolute/path/two"}, + expectErr: false, + }, + { + name: "Relative paths get resolved", + workingDirs: []string{"relative/path"}, + expectErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result, err := GetFullPathsWorkingDirs(tt.workingDirs) + if tt.expectErr { + assert.Error(t, err) + return + } + assert.NoError(t, err) + assert.Len(t, result, len(tt.workingDirs)) + for _, p := range result { + assert.True(t, filepath.IsAbs(p), "expected absolute path, got: %s", p) + } + }) + } +} diff --git a/utils/results/results.go b/utils/results/results.go index a3ebbe19f..5f7b27482 100644 --- a/utils/results/results.go +++ b/utils/results/results.go @@ -299,7 +299,7 @@ func (st ScanTarget) GetCentralConfigExclusions(scanType utils.SubScanType) []st return exclusions.ToSlice() } -func (st ScanTarget) GeDeprecatedAppsConfigModuleExclusions(scanType jasutils.JasScanType) []string { +func (st ScanTarget) GetDeprecatedAppsConfigModuleExclusions(scanType jasutils.JasScanType) []string { if st.DeprecatedAppsConfigModule == nil { return nil } diff --git a/utils/results/results_test.go b/utils/results/results_test.go new file mode 100644 index 000000000..d11be4516 --- /dev/null +++ b/utils/results/results_test.go @@ -0,0 +1,273 @@ +package results + +import ( + "testing" + + jfrogappsconfig "github.com/jfrog/jfrog-apps-config/go" + "github.com/jfrog/jfrog-cli-security/utils" + "github.com/jfrog/jfrog-cli-security/utils/jasutils" + "github.com/jfrog/jfrog-cli-security/utils/techutils" + xscServices "github.com/jfrog/jfrog-client-go/xsc/services" + "github.com/stretchr/testify/assert" +) + +func TestScanTarget_String(t *testing.T) { + tests := []struct { + name string + target ScanTarget + expected string + }{ + { + name: "Target only, no tech", + target: ScanTarget{Target: "/path/to/project"}, + expected: "/path/to/project [unknown]", + }, + { + name: "Target with technology", + target: ScanTarget{Target: "/path/to/project", Technology: techutils.Npm}, + expected: "/path/to/project [npm]", + }, + { + name: "Target with name overrides path", + target: ScanTarget{Target: "/path/to/project", Name: "my-project", Technology: techutils.Go}, + expected: "my-project [go]", + }, + { + name: "Target with include dirs", + target: ScanTarget{ + Target: "/root", + Include: []string{"/root/sub1", "/root/sub2"}, + Technology: techutils.Maven, + }, + expected: "/root {sub1, sub2} [maven]", + }, + { + name: "Target with include dirs and name - name wins", + target: ScanTarget{ + Target: "/root", + Include: []string{"/root/sub1"}, + Name: "override-name", + Technology: techutils.Pip, + }, + expected: "override-name [pip]", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.expected, tt.target.String()) + }) + } +} + +func TestScanTarget_IsScanRequestedByCentralConfig(t *testing.T) { + enabledModule := xscServices.Module{ + ScanConfig: xscServices.ScanConfig{ + ScaScannerConfig: xscServices.ScaScannerConfig{EnableScaScan: true}, + ContextualAnalysisScannerConfig: xscServices.CaScannerConfig{EnableCaScan: true}, + IacScannerConfig: xscServices.IacScannerConfig{EnableIacScan: true}, + SecretsScannerConfig: xscServices.SecretsScannerConfig{EnableSecretsScan: true}, + SastScannerConfig: xscServices.SastScannerConfig{EnableSastScan: true}, + }, + } + + tests := []struct { + name string + target ScanTarget + scanType utils.SubScanType + expected bool + }{ + { + name: "No modules - returns false", + target: ScanTarget{}, + scanType: utils.ScaScan, + expected: false, + }, + { + name: "SCA enabled", + target: ScanTarget{CentralConfigModules: []xscServices.Module{enabledModule}}, + scanType: utils.ScaScan, + expected: true, + }, + { + name: "IaC enabled", + target: ScanTarget{CentralConfigModules: []xscServices.Module{enabledModule}}, + scanType: utils.IacScan, + expected: true, + }, + { + name: "Secrets enabled", + target: ScanTarget{CentralConfigModules: []xscServices.Module{enabledModule}}, + scanType: utils.SecretsScan, + expected: true, + }, + { + name: "SAST enabled", + target: ScanTarget{CentralConfigModules: []xscServices.Module{enabledModule}}, + scanType: utils.SastScan, + expected: true, + }, + { + name: "Applicability requires both CA and SCA enabled", + target: ScanTarget{CentralConfigModules: []xscServices.Module{{ + ScanConfig: xscServices.ScanConfig{ + ContextualAnalysisScannerConfig: xscServices.CaScannerConfig{EnableCaScan: true}, + ScaScannerConfig: xscServices.ScaScannerConfig{EnableScaScan: false}, + }, + }}}, + scanType: utils.ContextualAnalysisScan, + expected: false, + }, + { + name: "Applicability with both CA and SCA enabled", + target: ScanTarget{CentralConfigModules: []xscServices.Module{enabledModule}}, + scanType: utils.ContextualAnalysisScan, + expected: true, + }, + { + name: "SCA disabled", + target: ScanTarget{CentralConfigModules: []xscServices.Module{{ + ScanConfig: xscServices.ScanConfig{ + ScaScannerConfig: xscServices.ScaScannerConfig{EnableScaScan: false}, + }, + }}}, + scanType: utils.ScaScan, + expected: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.expected, tt.target.IsScanRequestedByCentralConfig(tt.scanType)) + }) + } +} + +func TestScanTarget_GetCentralConfigExclusions(t *testing.T) { + tests := []struct { + name string + target ScanTarget + scanType utils.SubScanType + expected []string + }{ + { + name: "No modules - empty", + target: ScanTarget{}, + scanType: utils.ScaScan, + expected: []string{}, + }, + { + name: "SCA exclusions", + target: ScanTarget{CentralConfigModules: []xscServices.Module{{ + ScanConfig: xscServices.ScanConfig{ + ScaScannerConfig: xscServices.ScaScannerConfig{ExcludePatterns: []string{"**/vendor/**"}}, + }, + }}}, + scanType: utils.ScaScan, + expected: []string{"**/vendor/**"}, + }, + { + name: "Secrets exclusions", + target: ScanTarget{CentralConfigModules: []xscServices.Module{{ + ScanConfig: xscServices.ScanConfig{ + SecretsScannerConfig: xscServices.SecretsScannerConfig{ExcludePatterns: []string{"**/*.key"}}, + }, + }}}, + scanType: utils.SecretsScan, + expected: []string{"**/*.key"}, + }, + { + name: "IaC exclusions", + target: ScanTarget{CentralConfigModules: []xscServices.Module{{ + ScanConfig: xscServices.ScanConfig{ + IacScannerConfig: xscServices.IacScannerConfig{ExcludePatterns: []string{"**/test-infra/**"}}, + }, + }}}, + scanType: utils.IacScan, + expected: []string{"**/test-infra/**"}, + }, + { + name: "SAST exclusions", + target: ScanTarget{CentralConfigModules: []xscServices.Module{{ + ScanConfig: xscServices.ScanConfig{ + SastScannerConfig: xscServices.SastScannerConfig{ExcludePatterns: []string{"**/generated/**"}}, + }, + }}}, + scanType: utils.SastScan, + expected: []string{"**/generated/**"}, + }, + { + name: "Contextual analysis exclusions", + target: ScanTarget{CentralConfigModules: []xscServices.Module{{ + ScanConfig: xscServices.ScanConfig{ + ContextualAnalysisScannerConfig: xscServices.CaScannerConfig{ExcludePatterns: []string{"**/mock/**"}}, + }, + }}}, + scanType: utils.ContextualAnalysisScan, + expected: []string{"**/mock/**"}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.ElementsMatch(t, tt.expected, tt.target.GetCentralConfigExclusions(tt.scanType)) + }) + } +} + +func TestScanTarget_GetDeprecatedAppsConfigModuleExclusions(t *testing.T) { + tests := []struct { + name string + target ScanTarget + scanType jasutils.JasScanType + expected []string + }{ + { + name: "Nil module - returns nil", + target: ScanTarget{}, + scanType: jasutils.Secrets, + expected: nil, + }, + { + name: "Module with base exclusions only", + target: ScanTarget{DeprecatedAppsConfigModule: &jfrogappsconfig.Module{ + ExcludePatterns: []string{"**/dist/**"}, + }}, + scanType: jasutils.IaC, + expected: []string{"**/dist/**"}, + }, + { + name: "Module with secrets scanner exclusions", + target: ScanTarget{DeprecatedAppsConfigModule: &jfrogappsconfig.Module{ + ExcludePatterns: []string{"**/dist/**"}, + Scanners: jfrogappsconfig.Scanners{ + Secrets: &jfrogappsconfig.Scanner{ExcludePatterns: []string{"**/*.pem"}}, + }, + }}, + scanType: jasutils.Secrets, + expected: []string{"**/dist/**", "**/*.pem"}, + }, + { + name: "Module with SAST scanner exclusions", + target: ScanTarget{DeprecatedAppsConfigModule: &jfrogappsconfig.Module{ + Scanners: jfrogappsconfig.Scanners{ + Sast: &jfrogappsconfig.SastScanner{Scanner: jfrogappsconfig.Scanner{ExcludePatterns: []string{"**/test/**"}}}, + }, + }}, + scanType: jasutils.Sast, + expected: []string{"**/test/**"}, + }, + { + name: "Module with IaC scanner exclusions", + target: ScanTarget{DeprecatedAppsConfigModule: &jfrogappsconfig.Module{ + Scanners: jfrogappsconfig.Scanners{ + Iac: &jfrogappsconfig.Scanner{ExcludePatterns: []string{"**/sandbox/**"}}, + }, + }}, + scanType: jasutils.IaC, + expected: []string{"**/sandbox/**"}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.ElementsMatch(t, tt.expected, tt.target.GetDeprecatedAppsConfigModuleExclusions(tt.scanType)) + }) + } +} diff --git a/utils/utils.go b/utils/utils.go index 4073f2722..8977ff9f7 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -498,13 +498,13 @@ func ElementsEqual[T comparable](slice1 []T, slice2 []T) bool { if len(slice1) != len(slice2) { return false } - for i := range slice1 { - if !slices.Contains(slice2, slice1[i]) { - return false - } + freq := make(map[T]int, len(slice1)) + for _, v := range slice1 { + freq[v]++ } - for i := range slice2 { - if !slices.Contains(slice1, slice2[i]) { + for _, v := range slice2 { + freq[v]-- + if freq[v] < 0 { return false } } diff --git a/utils/utils_test.go b/utils/utils_test.go index 7629efe11..16054cced 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -163,3 +163,60 @@ func TestMergeMaps(t *testing.T) { }) } } + +func TestElementsEqual(t *testing.T) { + testCases := []struct { + name string + slice1 []string + slice2 []string + expected bool + }{ + { + name: "Both empty", + slice1: []string{}, + slice2: []string{}, + expected: true, + }, + { + name: "Equal single element", + slice1: []string{"a"}, + slice2: []string{"a"}, + expected: true, + }, + { + name: "Same elements different order", + slice1: []string{"a", "b", "c"}, + slice2: []string{"c", "a", "b"}, + expected: true, + }, + { + name: "Different lengths", + slice1: []string{"a", "b"}, + slice2: []string{"a"}, + expected: false, + }, + { + name: "Same length different elements", + slice1: []string{"a", "b"}, + slice2: []string{"a", "c"}, + expected: false, + }, + { + name: "Duplicate mismatch", + slice1: []string{"a", "a", "b"}, + slice2: []string{"a", "b", "b"}, + expected: false, + }, + { + name: "Equal with duplicates", + slice1: []string{"a", "a", "b"}, + slice2: []string{"a", "b", "a"}, + expected: true, + }, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + assert.Equal(t, tc.expected, ElementsEqual(tc.slice1, tc.slice2)) + }) + } +} From 79951ac6858c24a0206ff68cd6e6465bb9ccc4b0 Mon Sep 17 00:00:00 2001 From: attiasas Date: Mon, 30 Mar 2026 12:15:36 +0300 Subject: [PATCH 23/26] fix tests --- git_test.go | 8 ++++---- sca/bom/buildinfo/technologies/pnpm/pnpm_test.go | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/git_test.go b/git_test.go index 2128cf561..19f98a2de 100644 --- a/git_test.go +++ b/git_test.go @@ -266,8 +266,8 @@ func TestGitAuditJasSkipNotApplicableCvesViolations(t *testing.T) { xrayVersion, xscVersion, "", validations.ValidationParams{ Violations: &validations.ViolationCount{ - ValidateScan: &validations.ScanCount{Sca: 10, Sast: 2, Secrets: 2}, - ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotApplicable: 5, NotCovered: 5, Inactive: 2}, + ValidateScan: &validations.ScanCount{Sca: 11, Sast: 2, Secrets: 2}, + ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotApplicable: 5, NotCovered: 6, Inactive: 2}, }, ExactResultsMatch: true, }, @@ -294,8 +294,8 @@ func TestGitAuditJasSkipNotApplicableCvesViolations(t *testing.T) { xrayVersion, xscVersion, "", validations.ValidationParams{ Violations: &validations.ViolationCount{ - ValidateScan: &validations.ScanCount{Sca: 5, Sast: 2, Secrets: 2}, - ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotCovered: 5, Inactive: 2}, + ValidateScan: &validations.ScanCount{Sca: 6, Sast: 2, Secrets: 2}, + ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotCovered: 6, Inactive: 2}, }, ExactResultsMatch: true, }, diff --git a/sca/bom/buildinfo/technologies/pnpm/pnpm_test.go b/sca/bom/buildinfo/technologies/pnpm/pnpm_test.go index 18cdd46bd..1e957330a 100644 --- a/sca/bom/buildinfo/technologies/pnpm/pnpm_test.go +++ b/sca/bom/buildinfo/technologies/pnpm/pnpm_test.go @@ -43,7 +43,7 @@ func TestBuildDependencyTreeLimitedDepth(t *testing.T) { name: "With transitive dependencies", treeDepth: "1", expectedUniqueDeps: []string{ - "npm://axios:1.13.6", + "npm://axios:1.14.0", "npm://balaganjs:1.0.0", "npm://yargs:13.3.0", "npm://zen-website:1.0.0", @@ -53,7 +53,7 @@ func TestBuildDependencyTreeLimitedDepth(t *testing.T) { Nodes: []*xrayUtils.GraphNode{ { Id: "npm://balaganjs:1.0.0", - Nodes: []*xrayUtils.GraphNode{{Id: "npm://axios:1.13.6"}, {Id: "npm://yargs:13.3.0"}}, + Nodes: []*xrayUtils.GraphNode{{Id: "npm://axios:1.14.0"}, {Id: "npm://yargs:13.3.0"}}, }, }, }, From 620fda6a4f893112ee3a7f2cb0a36e3e14d8333c Mon Sep 17 00:00:00 2001 From: attiasas Date: Mon, 30 Mar 2026 13:25:01 +0300 Subject: [PATCH 24/26] Convert scan target to support multi tech --- commands/audit/audit.go | 24 ++--- commands/audit/audit_test.go | 96 +++++++++---------- commands/audit/auditparams.go | 5 +- commands/enrich/enrich.go | 2 +- commands/scan/scan.go | 4 +- jas/runner/jasrunner_test.go | 2 +- sca/bom/buildinfo/buildinfobom.go | 9 +- .../validations/test_validate_simple_json.go | 1 - utils/results/conversion/convertor_test.go | 4 +- .../simplejsonparser/simplejsonparser.go | 4 +- .../simplejsonparser/simplejsonparser_test.go | 82 ++++++++++++++++ utils/results/results.go | 41 ++++++-- utils/results/results_test.go | 26 +++-- 13 files changed, 201 insertions(+), 99 deletions(-) diff --git a/commands/audit/audit.go b/commands/audit/audit.go index 887e46ff9..57d90715d 100644 --- a/commands/audit/audit.go +++ b/commands/audit/audit.go @@ -544,15 +544,7 @@ func createSingleScanTarget(cmdResults *results.SecurityCommandResults, params * detectedTechnologies.Add(tech) } } - techs := detectedTechnologies.ToSlice() - if len(techs) > 1 { - log.Warn(fmt.Sprintf("Detected multiple technologies %v but only one is supported per target. Using '%s'; others will be ignored.", techs, techs[0])) - } - for _, tech := range techs { - // TODO: We only support one technology per target for now. should be extended in the future. - scanTarget.Technology = tech - break - } + scanTarget.Technologies = detectedTechnologies.ToSlice() cmdResults.NewScanResults(scanTarget) } @@ -601,17 +593,17 @@ func detectScaTargetsFromTechnologies(cmdResults *results.SecurityCommandResults if len(workingDirs) == 0 { // Requested technology (from params) descriptors/indicators were not found or recursive scan with NoTech value, add scan without descriptors. cmdResults.NewScanResults(results.ScanTarget{ - Target: requestedDirectory, - Technology: tech, - Exclude: params.Exclusions(), + Target: requestedDirectory, + Technologies: []techutils.Technology{tech}, + Exclude: params.Exclusions(), }) } for workingDir, descriptors := range workingDirs { // Add scan for each detected working directory. targetResults := cmdResults.NewScanResults(results.ScanTarget{ - Target: workingDir, - Technology: tech, - Exclude: params.Exclusions(), + Target: workingDir, + Technologies: []techutils.Technology{tech}, + Exclude: params.Exclusions(), }) if tech != techutils.NoTech { targetResults.SetDescriptors(descriptors...) @@ -789,7 +781,7 @@ func createJasScansTask(auditParallelRunner *utils.SecurityParallelRunner, scanR CvesProvider: func() (directCves []string, indirectCves []string) { if len(targetResult.GetScaScansXrayResults()) > 0 { // TODO: remove this once the new SCA flow with cdx is fully implemented. - return results.ExtractCvesFromScanResponse(targetResult.GetScaScansXrayResults(), results.GetTargetDirectDependencies(targetResult, auditParams.ShouldGetFlatTreeForApplicableScan(targetResult.Technology), true)) + return results.ExtractCvesFromScanResponse(targetResult.GetScaScansXrayResults(), results.GetTargetDirectDependencies(targetResult, auditParams.ShouldGetFlatTreeForApplicableScan(targetResult.ScanTarget), true)) } else if targetResult.ScaResults != nil && targetResult.ScaResults.Sbom != nil { return results.ExtractCdxDependenciesCves(targetResult.ScaResults.Sbom) } diff --git a/commands/audit/audit_test.go b/commands/audit/audit_test.go index 81b43f88d..fb2ecd2ea 100644 --- a/commands/audit/audit_test.go +++ b/commands/audit/audit_test.go @@ -64,8 +64,8 @@ func TestDetectScansToPerform(t *testing.T) { }, { ScanTarget: results.ScanTarget{ - Technology: techutils.Go, - Target: filepath.Join(dir, "dir", "go"), + Technologies: []techutils.Technology{techutils.Go}, + Target: filepath.Join(dir, "dir", "go"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -74,8 +74,8 @@ func TestDetectScansToPerform(t *testing.T) { }, { ScanTarget: results.ScanTarget{ - Technology: techutils.Maven, - Target: filepath.Join(dir, "dir", "maven"), + Technologies: []techutils.Technology{techutils.Maven}, + Target: filepath.Join(dir, "dir", "maven"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -88,8 +88,8 @@ func TestDetectScansToPerform(t *testing.T) { }, { ScanTarget: results.ScanTarget{ - Technology: techutils.Npm, - Target: filepath.Join(dir, "dir", "npm"), + Technologies: []techutils.Technology{techutils.Npm}, + Target: filepath.Join(dir, "dir", "npm"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -116,8 +116,8 @@ func TestDetectScansToPerform(t *testing.T) { expected: []*results.TargetResults{ { ScanTarget: results.ScanTarget{ - Technology: techutils.Nuget, - Target: filepath.Join(dir, "Nuget"), + Technologies: []techutils.Technology{techutils.Nuget}, + Target: filepath.Join(dir, "Nuget"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -126,8 +126,8 @@ func TestDetectScansToPerform(t *testing.T) { }, { ScanTarget: results.ScanTarget{ - Technology: techutils.Go, - Target: filepath.Join(dir, "dir", "go"), + Technologies: []techutils.Technology{techutils.Go}, + Target: filepath.Join(dir, "dir", "go"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -136,8 +136,8 @@ func TestDetectScansToPerform(t *testing.T) { }, { ScanTarget: results.ScanTarget{ - Technology: techutils.Maven, - Target: filepath.Join(dir, "dir", "maven"), + Technologies: []techutils.Technology{techutils.Maven}, + Target: filepath.Join(dir, "dir", "maven"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -150,8 +150,8 @@ func TestDetectScansToPerform(t *testing.T) { }, { ScanTarget: results.ScanTarget{ - Technology: techutils.Npm, - Target: filepath.Join(dir, "dir", "npm"), + Technologies: []techutils.Technology{techutils.Npm}, + Target: filepath.Join(dir, "dir", "npm"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -160,8 +160,8 @@ func TestDetectScansToPerform(t *testing.T) { }, { ScanTarget: results.ScanTarget{ - Technology: techutils.Yarn, - Target: filepath.Join(dir, "yarn"), + Technologies: []techutils.Technology{techutils.Yarn}, + Target: filepath.Join(dir, "yarn"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -170,8 +170,8 @@ func TestDetectScansToPerform(t *testing.T) { }, { ScanTarget: results.ScanTarget{ - Technology: techutils.Pip, - Target: filepath.Join(dir, "yarn", "Pip"), + Technologies: []techutils.Technology{techutils.Pip}, + Target: filepath.Join(dir, "yarn", "Pip"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -180,8 +180,8 @@ func TestDetectScansToPerform(t *testing.T) { }, { ScanTarget: results.ScanTarget{ - Technology: techutils.Pipenv, - Target: filepath.Join(dir, "yarn", "Pipenv"), + Technologies: []techutils.Technology{techutils.Pipenv}, + Target: filepath.Join(dir, "yarn", "Pipenv"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -201,8 +201,8 @@ func TestDetectScansToPerform(t *testing.T) { expected: []*results.TargetResults{ { ScanTarget: results.ScanTarget{ - Technology: techutils.Npm, - Target: filepath.Join(dir, "dir", "npm"), + Technologies: []techutils.Technology{techutils.Npm}, + Target: filepath.Join(dir, "dir", "npm"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -222,8 +222,8 @@ func TestDetectScansToPerform(t *testing.T) { expected: []*results.TargetResults{ { ScanTarget: results.ScanTarget{ - Technology: techutils.Npm, - Target: filepath.Join(dir, "dir", "npm"), + Technologies: []techutils.Technology{techutils.Npm}, + Target: filepath.Join(dir, "dir", "npm"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -250,8 +250,8 @@ func TestDetectScansToPerform(t *testing.T) { expected: []*results.TargetResults{ { ScanTarget: results.ScanTarget{ - Technology: techutils.Go, - Target: filepath.Join(dir, "dir", "go"), + Technologies: []techutils.Technology{techutils.Go}, + Target: filepath.Join(dir, "dir", "go"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -260,8 +260,8 @@ func TestDetectScansToPerform(t *testing.T) { }, { ScanTarget: results.ScanTarget{ - Technology: techutils.Maven, - Target: filepath.Join(dir, "dir", "maven"), + Technologies: []techutils.Technology{techutils.Maven}, + Target: filepath.Join(dir, "dir", "maven"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -274,8 +274,8 @@ func TestDetectScansToPerform(t *testing.T) { }, { ScanTarget: results.ScanTarget{ - Technology: techutils.Npm, - Target: filepath.Join(dir, "dir", "npm"), + Technologies: []techutils.Technology{techutils.Npm}, + Target: filepath.Join(dir, "dir", "npm"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -284,8 +284,8 @@ func TestDetectScansToPerform(t *testing.T) { }, { ScanTarget: results.ScanTarget{ - Technology: techutils.Pip, - Target: filepath.Join(dir, "yarn", "Pip"), + Technologies: []techutils.Technology{techutils.Pip}, + Target: filepath.Join(dir, "yarn", "Pip"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -294,8 +294,8 @@ func TestDetectScansToPerform(t *testing.T) { }, { ScanTarget: results.ScanTarget{ - Technology: techutils.Pipenv, - Target: filepath.Join(dir, "yarn", "Pipenv"), + Technologies: []techutils.Technology{techutils.Pipenv}, + Target: filepath.Join(dir, "yarn", "Pipenv"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -304,8 +304,8 @@ func TestDetectScansToPerform(t *testing.T) { }, { ScanTarget: results.ScanTarget{ - Technology: techutils.Yarn, - Target: filepath.Join(dir, "yarn"), + Technologies: []techutils.Technology{techutils.Yarn}, + Target: filepath.Join(dir, "yarn"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -325,8 +325,8 @@ func TestDetectScansToPerform(t *testing.T) { expected: []*results.TargetResults{ { ScanTarget: results.ScanTarget{ - Technology: techutils.Maven, - Target: filepath.Join(dir, "dir", "maven"), + Technologies: []techutils.Technology{techutils.Maven}, + Target: filepath.Join(dir, "dir", "maven"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -350,8 +350,8 @@ func TestDetectScansToPerform(t *testing.T) { expected: []*results.TargetResults{ { ScanTarget: results.ScanTarget{ - Technology: techutils.Go, - Target: filepath.Join(dir, "dir", "go"), + Technologies: []techutils.Technology{techutils.Go}, + Target: filepath.Join(dir, "dir", "go"), }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, ScaResults: &results.ScaScanResults{ @@ -371,9 +371,9 @@ func TestDetectScansToPerform(t *testing.T) { expected: []*results.TargetResults{ { ScanTarget: results.ScanTarget{ - Target: dir, - Include: []string{filepath.Join(dir, "dir", "npm")}, - Technology: techutils.Npm, + Target: dir, + Include: []string{filepath.Join(dir, "dir", "npm")}, + Technologies: []techutils.Technology{techutils.Npm}, }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, }, @@ -390,9 +390,9 @@ func TestDetectScansToPerform(t *testing.T) { expected: []*results.TargetResults{ { ScanTarget: results.ScanTarget{ - Target: dir, - Include: []string{filepath.Join(dir, "dir", "maven")}, - Technology: techutils.Maven, + Target: dir, + Include: []string{filepath.Join(dir, "dir", "maven")}, + Technologies: []techutils.Technology{techutils.Maven}, }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, }, @@ -1171,8 +1171,8 @@ func TestAudit_DiffScanFlow(t *testing.T) { Targets: []*results.TargetResults{ { ScanTarget: results.ScanTarget{ - Target: tempProjectPath, - Technology: techutils.Pip, + Target: tempProjectPath, + Technologies: []techutils.Technology{techutils.Pip}, }, ScaResults: &results.ScaScanResults{ Sbom: &cyclonedx.BOM{ diff --git a/commands/audit/auditparams.go b/commands/audit/auditparams.go index 739a7a21b..c25340039 100644 --- a/commands/audit/auditparams.go +++ b/commands/audit/auditparams.go @@ -311,15 +311,14 @@ func (params *AuditParams) DiffMode() bool { // Our solution for this case is to send all dependencies to the CA scanner. // When thirdPartyApplicabilityScan is true, use flatten graph to include all the dependencies in applicability scanning. // Only npm is supported for this flag. -func (params *AuditParams) ShouldGetFlatTreeForApplicableScan(tech techutils.Technology) bool { +func (params *AuditParams) ShouldGetFlatTreeForApplicableScan(target results.ScanTarget) bool { if params.bomGenerator == nil { return false } - // Check if bomGenerator is BuildInfo type, if not, return false if _, success := params.bomGenerator.(*buildinfo.BuildInfoBomGenerator); !success { return false } - return tech == techutils.Pip || (params.thirdPartyApplicabilityScan && tech == techutils.Npm) + return target.HasTechnology(techutils.Pip) || (params.thirdPartyApplicabilityScan && target.HasTechnology(techutils.Npm)) } func (params *AuditParams) SetViolationGenerator(violationGenerator policy.PolicyHandler) *AuditParams { diff --git a/commands/enrich/enrich.go b/commands/enrich/enrich.go index 74b068d8c..5d940231f 100644 --- a/commands/enrich/enrich.go +++ b/commands/enrich/enrich.go @@ -265,7 +265,7 @@ func (enrichCmd *EnrichCommand) createIndexerHandlerFunc(indexedFileProducer par return targetResults.AddTargetError(fmt.Errorf("%s failed to import graph: %s", logPrefix, err.Error()), false) } targetResults.ScaScanResults(scan.GetScaScansStatusCode(err, *scanResults), *scanResults) - targetResults.Technology = techutils.Technology(scanResults.ScannedPackageType) + targetResults.Technologies = []techutils.Technology{techutils.Technology(scanResults.ScannedPackageType)} return } diff --git a/commands/scan/scan.go b/commands/scan/scan.go index 82f028803..35a223344 100644 --- a/commands/scan/scan.go +++ b/commands/scan/scan.go @@ -539,7 +539,7 @@ func (scanCmd *ScanCommand) RunBinaryScaScan(fileTarget string, cmdResults *resu return } targetResults.ScaScanResults(scan.GetScaScansStatusCode(err, *graphScanResults), *graphScanResults) - targetResults.Technology = techutils.ToTechnology(graphScanResults.ScannedPackageType) + targetResults.Technologies = []techutils.Technology{techutils.ToTechnology(graphScanResults.ScannedPackageType)} // Dump scan response if requested if scanCmd.outputDir == "" { return @@ -648,7 +648,7 @@ func getJasScanTypes(cmdType utils.CommandType, targetResults *results.TargetRes } func isDockerBinary(cmdType utils.CommandType, targetResults *results.TargetResults) bool { - return cmdType == utils.DockerImage || targetResults.Technology == techutils.Docker || targetResults.Technology == techutils.Oci + return cmdType == utils.DockerImage || targetResults.HasTechnology(techutils.Docker) || targetResults.HasTechnology(techutils.Oci) } func getJasDeprecatedAppsConfigModule(target string) (jfrogappsconfig.Module, error) { diff --git a/jas/runner/jasrunner_test.go b/jas/runner/jasrunner_test.go index 9bac6e1c9..854715c0c 100644 --- a/jas/runner/jasrunner_test.go +++ b/jas/runner/jasrunner_test.go @@ -42,7 +42,7 @@ func TestJasRunner_AnalyzerManagerNotExist(t *testing.T) { func TestJasRunner(t *testing.T) { assert.NoError(t, testUtils.PrepareAnalyzerManagerResource()) securityParallelRunnerForTest := utils.CreateSecurityParallelRunner(cliutils.Threads) - targetResults := results.NewCommandResults(utils.SourceCode).SetEntitledForJas(true).SetSecretValidation(true).NewScanResults(results.ScanTarget{Target: "target", Technology: techutils.Pip}) + targetResults := results.NewCommandResults(utils.SourceCode).SetEntitledForJas(true).SetSecretValidation(true).NewScanResults(results.ScanTarget{Target: "target", Technologies: []techutils.Technology{techutils.Pip}}) jasScanner, err := jas.NewJasScanner(&jas.FakeServerDetails, jas.WithEnvVars(false, jas.NotDiffScanEnvValue, jas.GetAnalyzerManagerXscEnvVars(false, "", "", "", []string{}, targetResults.GetTechnologies()...))) assert.NoError(t, err) diff --git a/sca/bom/buildinfo/buildinfobom.go b/sca/bom/buildinfo/buildinfobom.go index 53c0ae235..accface35 100644 --- a/sca/bom/buildinfo/buildinfobom.go +++ b/sca/bom/buildinfo/buildinfobom.go @@ -102,7 +102,7 @@ func (b *BuildInfoBomGenerator) GenerateSbom(target results.ScanTarget) (sbom *c generalError = errors.Join(generalError, errorutils.CheckError(os.Chdir(currentWorkingDir))) }() } - if target.Technology == techutils.NoTech { + if target.FirstTechnology() == techutils.NoTech { log.Debug(fmt.Sprintf("Couldn't determine a package manager or build tool used by '%s'.", target.Target)) return } @@ -147,13 +147,14 @@ func (b *BuildInfoBomGenerator) buildDependencyTree(scan results.ScanTarget) (*D if err := os.Chdir(scan.Target); err != nil { return nil, errorutils.CheckError(err) } - serverDetails, err := SetResolutionRepoInParamsIfExists(&b.params, scan.Technology) + tech := scan.FirstTechnology() + serverDetails, err := SetResolutionRepoInParamsIfExists(&b.params, tech) if err != nil { return nil, err } - treeResult, techErr := GetTechDependencyTree(b.params, serverDetails, scan.Technology) + treeResult, techErr := GetTechDependencyTree(b.params, serverDetails, tech) if techErr != nil { - return nil, fmt.Errorf("failed while building '%s' dependency tree: %w", scan.Technology, techErr) + return nil, fmt.Errorf("failed while building '%s' dependency tree: %w", tech, techErr) } if treeResult.FlatTree == nil || len(treeResult.FlatTree.Nodes) == 0 { return nil, errorutils.CheckErrorf("no dependencies were found. Please try to build your project and re-run the audit command") diff --git a/tests/validations/test_validate_simple_json.go b/tests/validations/test_validate_simple_json.go index 5f2e60b1b..6612c66fd 100644 --- a/tests/validations/test_validate_simple_json.go +++ b/tests/validations/test_validate_simple_json.go @@ -158,7 +158,6 @@ func validateVulnerabilityOrViolationRow(t *testing.T, exactMatch bool, expected StringValidation{Expected: expected.Summary, Actual: actual.Summary, Msg: fmt.Sprintf("IssueId %s: Summary mismatch", expected.IssueId)}, StringValidation{Expected: expected.Severity, Actual: actual.Severity, Msg: fmt.Sprintf("IssueId %s: Severity mismatch", expected.IssueId)}, StringValidation{Expected: expected.Applicable, Actual: actual.Applicable, Msg: fmt.Sprintf("IssueId %s: Applicable mismatch", expected.IssueId)}, - // StringValidation{Expected: expected.Technology.String(), Actual: actual.Technology.String(), Msg: fmt.Sprintf("IssueId %s: Technology mismatch", expected.IssueId)}, ListValidation[string]{Expected: expected.References, Actual: actual.References, Msg: fmt.Sprintf("IssueId %s: References mismatch", expected.IssueId)}, StringValidation{Expected: expected.ImpactedDependencyType, Actual: actual.ImpactedDependencyType, Msg: fmt.Sprintf("IssueId %s: ImpactedDependencyType mismatch", expected.IssueId)}, diff --git a/utils/results/conversion/convertor_test.go b/utils/results/conversion/convertor_test.go index d08950c85..07b56c8e6 100644 --- a/utils/results/conversion/convertor_test.go +++ b/utils/results/conversion/convertor_test.go @@ -162,7 +162,7 @@ func getAuditTestResults(unique bool) (*results.SecurityCommandResults, validati // Create basic command results to be converted to different formats cmdResults := results.NewCommandResults(utils.SourceCode) cmdResults.SetEntitledForJas(true).SetXrayVersion("3.107.13").SetXscVersion("1.12.5").SetMultiScanId("7d5e4733-3f93-11ef-8147-e610d09d7daa") - npmTargetResults := cmdResults.NewScanResults(results.ScanTarget{Target: filepath.Join("Users", "user", "project-with-issues"), Technology: techutils.Npm}).SetDescriptors(filepath.Join("Users", "user", "project-with-issues", "package.json")) + npmTargetResults := cmdResults.NewScanResults(results.ScanTarget{Target: filepath.Join("Users", "user", "project-with-issues"), Technologies: []techutils.Technology{techutils.Npm}}).SetDescriptors(filepath.Join("Users", "user", "project-with-issues", "package.json")) // SCA scan results npmTargetResults.ScaScanResults(0, services.ScanResponse{ ScanId: "711851ce-68c4-4dfd-7afb-c29737ebcb96", @@ -606,7 +606,7 @@ func getDockerScanTestResults(unique bool) (*results.SecurityCommandResults, val // Create basic command results to be converted to different formats cmdResults := results.NewCommandResults(utils.DockerImage) cmdResults.SetEntitledForJas(true).SetXrayVersion("3.107.13").SetXscVersion("1.12.5").SetMultiScanId("7d5e4733-3f93-11ef-8147-e610d09d7daa") - dockerImageTarget := cmdResults.NewScanResults(results.ScanTarget{Target: filepath.Join("temp", "folders", "T", "jfrog.cli.temp.-11-11", "image.tar"), Name: "platform.jfrog.io/swamp-docker/swamp:latest", Technology: techutils.Oci}) + dockerImageTarget := cmdResults.NewScanResults(results.ScanTarget{Target: filepath.Join("temp", "folders", "T", "jfrog.cli.temp.-11-11", "image.tar"), Name: "platform.jfrog.io/swamp-docker/swamp:latest", Technologies: []techutils.Technology{techutils.Oci}}) // SCA scan results dockerImageTarget.ScaScanResults(0, services.ScanResponse{ ScanId: "27da9106-88ea-416b-799b-bc7d15783473", diff --git a/utils/results/conversion/simplejsonparser/simplejsonparser.go b/utils/results/conversion/simplejsonparser/simplejsonparser.go index ad9559057..938a2e4af 100644 --- a/utils/results/conversion/simplejsonparser/simplejsonparser.go +++ b/utils/results/conversion/simplejsonparser/simplejsonparser.go @@ -242,7 +242,7 @@ func (sjc *CmdResultsSimpleJsonConverter) createVulnerabilityOrViolationRowFromC ImpactPaths: impactPaths, Cves: results.CdxVulnToCveRows(vulnerability, contextualAnalysis), FixedVersions: results.CdxToFixedVersions(fixedVersions), - Technology: results.GetIssueTechnology(compType, sjc.currentTarget.Technology), + Technology: results.GetIssueTechnology(compType, sjc.currentTarget.FirstTechnology()), References: toReferences(vulnerability), Applicable: applicabilityStatus.ToString(sjc.pretty), JfrogResearchInformation: jfrogResearch, @@ -425,7 +425,7 @@ func addSimpleJsonVulnerability(target results.ScanTarget, vulnerabilitiesRows * References: vulnerability.References, JfrogResearchInformation: results.ConvertJfrogResearchInformation(vulnerability.ExtendedInformation), ImpactPaths: impactPaths, - Technology: results.GetIssueTechnology(vulnerability.Technology, target.Technology), + Technology: results.GetIssueTechnology(vulnerability.Technology, target.FirstTechnology()), Applicable: applicabilityStatus.ToString(pretty), }, ) diff --git a/utils/results/conversion/simplejsonparser/simplejsonparser_test.go b/utils/results/conversion/simplejsonparser/simplejsonparser_test.go index 9a84fd14b..bba4e34ce 100644 --- a/utils/results/conversion/simplejsonparser/simplejsonparser_test.go +++ b/utils/results/conversion/simplejsonparser/simplejsonparser_test.go @@ -12,6 +12,7 @@ import ( "github.com/jfrog/jfrog-cli-security/utils/jasutils" "github.com/jfrog/jfrog-cli-security/utils/results" "github.com/jfrog/jfrog-cli-security/utils/severityutils" + "github.com/jfrog/jfrog-cli-security/utils/techutils" "github.com/jfrog/jfrog-client-go/xray/services" ) @@ -487,3 +488,84 @@ func TestPrepareSimpleJsonJasIssues(t *testing.T) { }) } } + +func TestPrepareSimpleJsonVulnerabilities_Technology(t *testing.T) { + testCases := []struct { + name string + target results.ScanTarget + vulns []services.Vulnerability + expectedTechPerIssue map[string]techutils.Technology + }{ + { + name: "Target technology used as fallback", + target: results.ScanTarget{Target: "target", Technologies: []techutils.Technology{techutils.Npm}}, + vulns: []services.Vulnerability{ + { + IssueId: "XRAY-100", + Summary: "vuln without tech", + Severity: "High", + Components: map[string]services.Component{ + "npm://dep:1.0.0": { + ImpactPaths: [][]services.ImpactPathNode{{{ComponentId: "root"}, {ComponentId: "npm://dep:1.0.0"}}}, + }, + }, + }, + }, + expectedTechPerIssue: map[string]techutils.Technology{ + "XRAY-100": techutils.Npm, + }, + }, + { + name: "Response technology takes precedence over empty target", + target: results.ScanTarget{Target: "target"}, + vulns: []services.Vulnerability{ + { + IssueId: "XRAY-200", + Summary: "vuln with response tech", + Severity: "Medium", + Technology: "pip", + Components: map[string]services.Component{ + "pip://dep:2.0.0": { + ImpactPaths: [][]services.ImpactPathNode{{{ComponentId: "root"}, {ComponentId: "pip://dep:2.0.0"}}}, + }, + }, + }, + }, + expectedTechPerIssue: map[string]techutils.Technology{ + "XRAY-200": techutils.Pip, + }, + }, + { + name: "Target technology wins when response is generic", + target: results.ScanTarget{Target: "target", Technologies: []techutils.Technology{techutils.Maven}}, + vulns: []services.Vulnerability{ + { + IssueId: "XRAY-300", + Summary: "generic vuln", + Severity: "Low", + Technology: "generic", + Components: map[string]services.Component{ + "maven://dep:3.0.0": { + ImpactPaths: [][]services.ImpactPathNode{{{ComponentId: "root"}, {ComponentId: "maven://dep:3.0.0"}}}, + }, + }, + }, + }, + expectedTechPerIssue: map[string]techutils.Technology{ + "XRAY-300": techutils.Maven, + }, + }, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + rows, err := PrepareSimpleJsonVulnerabilities(tc.target, nil, services.ScanResponse{Vulnerabilities: tc.vulns}, false, false) + assert.NoError(t, err) + for _, row := range rows { + expectedTech, ok := tc.expectedTechPerIssue[row.IssueId] + if assert.True(t, ok, "unexpected issue %s in output", row.IssueId) { + assert.Equal(t, expectedTech, row.Technology, "IssueId %s: Technology mismatch", row.IssueId) + } + } + }) + } +} diff --git a/utils/results/results.go b/utils/results/results.go index 5f7b27482..5ef46da48 100644 --- a/utils/results/results.go +++ b/utils/results/results.go @@ -220,15 +220,34 @@ type ScanTarget struct { Exclude []string `json:"exclude,omitempty"` // Logical name of the target (build name / module name / docker image name...) Name string `json:"name,omitempty"` - // Optional field (not used only in build scan) to provide the technology of the target - // TODO: convert to list of technologies - Technology techutils.Technology `json:"technology,omitempty"` + // Technologies detected or assigned for this target + Technologies []techutils.Technology `json:"technologies,omitempty"` // Optional field to provide the deprecated apps config module for the target DeprecatedAppsConfigModule *jfrogappsconfig.Module `json:"deprecated_apps_config_module,omitempty"` // Optional field to provide the central config modules for the target CentralConfigModules []xscServices.Module `json:"central_config_modules,omitempty"` } +// FirstTechnology returns the first technology in the list, or empty if none are set. +// Use this only in backward-compatible call sites where a single technology is expected +// (e.g. old-flow BuildInfo BOM generation, legacy issue-technology fallback). +// For multi-tech aware code, prefer iterating Technologies directly or using HasTechnology(). +func (st ScanTarget) FirstTechnology() techutils.Technology { + if len(st.Technologies) == 0 { + return "" + } + return st.Technologies[0] +} + +func (st ScanTarget) HasTechnology(tech techutils.Technology) bool { + for _, t := range st.Technologies { + if t == tech { + return true + } + } + return false +} + func (st ScanTarget) String() (str string) { if len(st.Include) > 0 { relativePaths := []string{} @@ -242,11 +261,15 @@ func (st ScanTarget) String() (str string) { if st.Name != "" { str = st.Name } - tech := st.Technology.String() - if tech == techutils.NoTech.String() { - tech = "unknown" + if len(st.Technologies) == 0 { + str += " [unknown]" + } else { + techNames := make([]string, 0, len(st.Technologies)) + for _, t := range st.Technologies { + techNames = append(techNames, t.String()) + } + str += fmt.Sprintf(" [%s]", strings.Join(techNames, ", ")) } - str += fmt.Sprintf(" [%s]", tech) return } @@ -585,9 +608,7 @@ func (sr *TargetResults) GetScaScansXrayResults() (results []services.ScanRespon func (sr *TargetResults) GetTechnologies() []techutils.Technology { technologiesSet := datastructures.MakeSet[techutils.Technology]() - if sr.Technology != "" { - technologiesSet.Add(sr.Technology) - } + technologiesSet.AddElements(sr.Technologies...) if sr.ScaResults == nil { return technologiesSet.ToSlice() } diff --git a/utils/results/results_test.go b/utils/results/results_test.go index d11be4516..63676264e 100644 --- a/utils/results/results_test.go +++ b/utils/results/results_test.go @@ -24,33 +24,41 @@ func TestScanTarget_String(t *testing.T) { }, { name: "Target with technology", - target: ScanTarget{Target: "/path/to/project", Technology: techutils.Npm}, + target: ScanTarget{Target: "/path/to/project", Technologies: []techutils.Technology{techutils.Npm}}, expected: "/path/to/project [npm]", }, { name: "Target with name overrides path", - target: ScanTarget{Target: "/path/to/project", Name: "my-project", Technology: techutils.Go}, + target: ScanTarget{Target: "/path/to/project", Name: "my-project", Technologies: []techutils.Technology{techutils.Go}}, expected: "my-project [go]", }, { name: "Target with include dirs", target: ScanTarget{ - Target: "/root", - Include: []string{"/root/sub1", "/root/sub2"}, - Technology: techutils.Maven, + Target: "/root", + Include: []string{"/root/sub1", "/root/sub2"}, + Technologies: []techutils.Technology{techutils.Maven}, }, expected: "/root {sub1, sub2} [maven]", }, { name: "Target with include dirs and name - name wins", target: ScanTarget{ - Target: "/root", - Include: []string{"/root/sub1"}, - Name: "override-name", - Technology: techutils.Pip, + Target: "/root", + Include: []string{"/root/sub1"}, + Name: "override-name", + Technologies: []techutils.Technology{techutils.Pip}, }, expected: "override-name [pip]", }, + { + name: "Target with multiple technologies", + target: ScanTarget{ + Target: "/path/to/project", + Technologies: []techutils.Technology{techutils.Npm, techutils.Go}, + }, + expected: "/path/to/project [npm, go]", + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { From 87a9ec5393d5162aba535e8bcca980b84a7adb21 Mon Sep 17 00:00:00 2001 From: attiasas Date: Wed, 15 Apr 2026 11:24:50 +0300 Subject: [PATCH 25/26] Fix TestDetectScansToPerform --- commands/audit/audit_test.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/commands/audit/audit_test.go b/commands/audit/audit_test.go index fb2ecd2ea..4cce63bf0 100644 --- a/commands/audit/audit_test.go +++ b/commands/audit/audit_test.go @@ -58,7 +58,8 @@ func TestDetectScansToPerform(t *testing.T) { { // We requested specific technologies, Nuget is not in the list but we want to run JAS on it ScanTarget: results.ScanTarget{ - Target: filepath.Join(dir, "Nuget"), + Target: filepath.Join(dir, "Nuget"), + Technologies: []techutils.Technology{techutils.NoTech}, }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, }, @@ -99,7 +100,8 @@ func TestDetectScansToPerform(t *testing.T) { { // We requested specific technologies, yarn is not in the list but we want to run JAS on it ScanTarget: results.ScanTarget{ - Target: filepath.Join(dir, "yarn"), + Target: filepath.Join(dir, "yarn"), + Technologies: []techutils.Technology{techutils.NoTech}, }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, }, @@ -233,7 +235,8 @@ func TestDetectScansToPerform(t *testing.T) { { // Requested tech npm had no other descriptors at root; add JAS-only target for requested directory ScanTarget: results.ScanTarget{ - Target: dir, + Target: dir, + Technologies: []techutils.Technology{techutils.NoTech}, }, JasResults: &results.JasScansResults{JasVulnerabilities: results.JasScanResults{}, JasViolations: results.JasScanResults{}}, }, From 3acb0201c539c6e7a9143d89e736fc293776985d Mon Sep 17 00:00:00 2001 From: attiasas Date: Mon, 4 May 2026 14:48:24 +0300 Subject: [PATCH 26/26] remove unrelated changes --- .../npm/npm-project/.jfrog/jfrog-cli.conf.v6 | 17 - .../ClassLibrary1.csproj.nuget.dgspec.json | 105 - .../obj/ClassLibrary1.csproj.nuget.g.props | 15 - .../obj/ClassLibrary1.csproj.nuget.g.targets | 6 - .../ClassLibrary1/obj/project.assets.json | 4677 --------------- .../ClassLibrary1/obj/project.nuget.cache | 107 - .../obj/TestApp1.csproj.nuget.dgspec.json | 226 - .../obj/TestApp1.csproj.nuget.g.props | 15 - .../obj/TestApp1.csproj.nuget.g.targets | 2 - .../multi/TestApp1/obj/project.assets.json | 5324 ----------------- .../multi/TestApp1/obj/project.nuget.cache | 156 - 11 files changed, 10650 deletions(-) delete mode 100644 tests/testdata/projects/package-managers/npm/npm-project/.jfrog/jfrog-cli.conf.v6 delete mode 100644 tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/ClassLibrary1.csproj.nuget.dgspec.json delete mode 100644 tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/ClassLibrary1.csproj.nuget.g.props delete mode 100644 tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/ClassLibrary1.csproj.nuget.g.targets delete mode 100644 tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/project.assets.json delete mode 100644 tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/project.nuget.cache delete mode 100644 tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/TestApp1.csproj.nuget.dgspec.json delete mode 100644 tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/TestApp1.csproj.nuget.g.props delete mode 100644 tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/TestApp1.csproj.nuget.g.targets delete mode 100644 tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/project.assets.json delete mode 100644 tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/project.nuget.cache diff --git a/tests/testdata/projects/package-managers/npm/npm-project/.jfrog/jfrog-cli.conf.v6 b/tests/testdata/projects/package-managers/npm/npm-project/.jfrog/jfrog-cli.conf.v6 deleted file mode 100644 index 5c7cfaf7f..000000000 --- a/tests/testdata/projects/package-managers/npm/npm-project/.jfrog/jfrog-cli.conf.v6 +++ /dev/null @@ -1,17 +0,0 @@ -{ - "servers": [ - { - "url": "http://127.0.0.1:57602/", - "artifactoryUrl": "http://127.0.0.1:57602/", - "distributionUrl": "http://127.0.0.1:57602/distribution/", - "xrayUrl": "http://127.0.0.1:57602/", - "missionControlUrl": "http://127.0.0.1:57602/mc/", - "pipelinesUrl": "http://127.0.0.1:57602/pipelines/", - "user": "admin", - "password": "password", - "serverId": "test", - "isDefault": true - } - ], - "version": "6" -} \ No newline at end of file diff --git a/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/ClassLibrary1.csproj.nuget.dgspec.json b/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/ClassLibrary1.csproj.nuget.dgspec.json deleted file mode 100644 index c3ce5ae1f..000000000 --- a/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/ClassLibrary1.csproj.nuget.dgspec.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "format": 1, - "restore": { - "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/ClassLibrary1.csproj": {} - }, - "projects": { - "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/ClassLibrary1.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/ClassLibrary1.csproj", - "projectName": "ClassLibrary1", - "projectPath": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/ClassLibrary1.csproj", - "packagesPath": "/Users/assafa/.nuget/packages/", - "outputPath": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/", - "projectStyle": "PackageReference", - "configFilePaths": [ - "/Users/assafa/.nuget/NuGet/NuGet.Config" - ], - "originalTargetFrameworks": [ - "netstandard2.0" - ], - "sources": { - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - } - }, - "frameworks": { - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "dependencies": { - "Microsoft.AspNetCore.Hosting": { - "target": "Package", - "version": "[2.1.0, )" - }, - "NETStandard.Library": { - "suppressParent": "All", - "target": "Package", - "version": "[2.0.3, )", - "autoReferenced": true - }, - "Newtonsoft.Json": { - "target": "Package", - "version": "[12.0.3, )" - }, - "Serilog.AspNetCore": { - "target": "Package", - "version": "[2.1.1, )" - }, - "Serilog.Formatting.Compact": { - "target": "Package", - "version": "[1.0.0, )" - }, - "Serilog.Settings.Configuration": { - "target": "Package", - "version": "[3.0.1, )" - }, - "Serilog.Sinks.Console": { - "target": "Package", - "version": "[3.1.1, )" - }, - "Serilog.Sinks.EventLog": { - "target": "Package", - "version": "[3.1.0, )" - }, - "Serilog.Sinks.File": { - "target": "Package", - "version": "[4.0.0, )" - }, - "System.IO.FileSystem.AccessControl": { - "target": "Package", - "version": "[4.7.0, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "runtimeIdentifierGraphPath": "/Users/assafa/.dotnet/sdk/8.0.418/RuntimeIdentifierGraph.json" - } - } - } - } -} \ No newline at end of file diff --git a/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/ClassLibrary1.csproj.nuget.g.props b/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/ClassLibrary1.csproj.nuget.g.props deleted file mode 100644 index d8e90e26e..000000000 --- a/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/ClassLibrary1.csproj.nuget.g.props +++ /dev/null @@ -1,15 +0,0 @@ - - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - /Users/assafa/.nuget/packages/ - /Users/assafa/.nuget/packages/ - PackageReference - 6.11.1 - - - - - \ No newline at end of file diff --git a/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/ClassLibrary1.csproj.nuget.g.targets b/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/ClassLibrary1.csproj.nuget.g.targets deleted file mode 100644 index 8284cdf45..000000000 --- a/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/ClassLibrary1.csproj.nuget.g.targets +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/project.assets.json b/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/project.assets.json deleted file mode 100644 index fa1211745..000000000 --- a/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/project.assets.json +++ /dev/null @@ -1,4677 +0,0 @@ -{ - "version": 3, - "targets": { - ".NETStandard,Version=v2.0": { - "Microsoft.AspNetCore.Hosting/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Hosting.Abstractions": "2.1.0", - "Microsoft.AspNetCore.Http": "2.1.0", - "Microsoft.AspNetCore.Http.Extensions": "2.1.0", - "Microsoft.Extensions.Configuration": "2.1.0", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "2.1.0", - "Microsoft.Extensions.Configuration.FileExtensions": "2.1.0", - "Microsoft.Extensions.DependencyInjection": "2.1.0", - "Microsoft.Extensions.FileProviders.Physical": "2.1.0", - "Microsoft.Extensions.Hosting.Abstractions": "2.1.0", - "Microsoft.Extensions.Logging": "2.1.0", - "Microsoft.Extensions.Options": "2.1.0", - "System.Diagnostics.DiagnosticSource": "4.5.0", - "System.Reflection.Metadata": "1.6.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Hosting.Abstractions/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.1.0", - "Microsoft.AspNetCore.Http.Abstractions": "2.1.0", - "Microsoft.Extensions.Hosting.Abstractions": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.1.0", - "Microsoft.Extensions.Configuration.Abstractions": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.1.0", - "Microsoft.AspNetCore.WebUtilities": "2.1.0", - "Microsoft.Extensions.ObjectPool": "2.1.0", - "Microsoft.Extensions.Options": "2.1.0", - "Microsoft.Net.Http.Headers": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Abstractions/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.1.0", - "System.Text.Encodings.Web": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Extensions/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.1.0", - "Microsoft.Extensions.FileProviders.Abstractions": "2.1.0", - "Microsoft.Net.Http.Headers": "2.1.0", - "System.Buffers": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Features/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.WebUtilities/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Net.Http.Headers": "2.1.0", - "System.Text.Encodings.Web": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll": { - "related": ".xml" - } - } - }, - "Microsoft.CSharp/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.0/Microsoft.CSharp.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/Microsoft.CSharp.dll": {} - } - }, - "Microsoft.DotNet.PlatformAbstractions/2.0.4": { - "type": "package", - "dependencies": { - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.DotNet.PlatformAbstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.DotNet.PlatformAbstractions.dll": {} - } - }, - "Microsoft.Extensions.Configuration/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Configuration.Abstractions/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Configuration.Binder/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Configuration.FileExtensions/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "2.1.0", - "Microsoft.Extensions.FileProviders.Physical": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.DependencyInjection/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/2.1.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.DependencyModel/2.0.4": { - "type": "package", - "dependencies": { - "Microsoft.DotNet.PlatformAbstractions": "2.0.4", - "Newtonsoft.Json": "9.0.1", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Linq": "4.1.0" - }, - "compile": { - "lib/netstandard1.6/Microsoft.Extensions.DependencyModel.dll": {} - }, - "runtime": { - "lib/netstandard1.6/Microsoft.Extensions.DependencyModel.dll": {} - } - }, - "Microsoft.Extensions.FileProviders.Abstractions/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.FileProviders.Physical/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "2.1.0", - "Microsoft.Extensions.FileSystemGlobbing": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.FileSystemGlobbing/2.1.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Hosting.Abstractions/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "2.1.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0", - "Microsoft.Extensions.FileProviders.Abstractions": "2.1.0", - "Microsoft.Extensions.Logging.Abstractions": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Logging/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "2.1.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0", - "Microsoft.Extensions.Logging.Abstractions": "2.1.0", - "Microsoft.Extensions.Options": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Logging.Abstractions/2.1.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.ObjectPool/2.1.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Options/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0", - "Microsoft.Extensions.Primitives": "2.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Options.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Options.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions/2.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "2.0.0", - "Microsoft.Extensions.Configuration.Binder": "2.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.0.0", - "Microsoft.Extensions.Options": "2.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Primitives/2.1.0": { - "type": "package", - "dependencies": { - "System.Memory": "4.5.0", - "System.Runtime.CompilerServices.Unsafe": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Net.Http.Headers/2.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.0", - "System.Buffers": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll": { - "related": ".xml" - } - } - }, - "Microsoft.NETCore.Platforms/1.1.0": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.NETCore.Targets/1.1.0": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "NETStandard.Library/2.0.3": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - }, - "build": { - "build/netstandard2.0/NETStandard.Library.targets": {} - } - }, - "Newtonsoft.Json/12.0.3": { - "type": "package", - "compile": { - "lib/netstandard2.0/Newtonsoft.Json.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Newtonsoft.Json.dll": { - "related": ".xml" - } - } - }, - "runtime.native.System/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Serilog/2.6.0": { - "type": "package", - "dependencies": { - "Microsoft.CSharp": "4.0.1", - "System.Collections": "4.0.11", - "System.Collections.NonGeneric": "4.0.1", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Serilog.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/Serilog.dll": { - "related": ".xml" - } - } - }, - "Serilog.AspNetCore/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Hosting.Abstractions": "2.0.0", - "Microsoft.Extensions.DependencyInjection": "2.0.0", - "Microsoft.Extensions.Logging": "2.0.0", - "Serilog": "2.5.0", - "Serilog.Extensions.Logging": "2.0.0" - }, - "compile": { - "lib/netstandard2.0/Serilog.AspNetCore.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Serilog.AspNetCore.dll": { - "related": ".xml" - } - } - }, - "Serilog.Extensions.Logging/2.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Logging": "2.0.0", - "Serilog": "2.3.0" - }, - "compile": { - "lib/netstandard2.0/Serilog.Extensions.Logging.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Serilog.Extensions.Logging.dll": { - "related": ".xml" - } - } - }, - "Serilog.Formatting.Compact/1.0.0": { - "type": "package", - "dependencies": { - "Serilog": "2.0.0" - }, - "compile": { - "lib/netstandard1.1/Serilog.Formatting.Compact.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.1/Serilog.Formatting.Compact.dll": { - "related": ".xml" - } - } - }, - "Serilog.Settings.Configuration/3.0.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyModel": "2.0.4", - "Microsoft.Extensions.Options.ConfigurationExtensions": "2.0.0", - "Serilog": "2.6.0" - }, - "compile": { - "lib/netstandard2.0/Serilog.Settings.Configuration.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Serilog.Settings.Configuration.dll": { - "related": ".xml" - } - } - }, - "Serilog.Sinks.Console/3.1.1": { - "type": "package", - "dependencies": { - "Serilog": "2.5.0", - "System.Console": "4.3.0" - }, - "compile": { - "lib/netstandard1.3/Serilog.Sinks.Console.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/Serilog.Sinks.Console.dll": { - "related": ".xml" - } - } - }, - "Serilog.Sinks.EventLog/3.1.0": { - "type": "package", - "dependencies": { - "Serilog": "2.3.0", - "System.Diagnostics.EventLog": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Serilog.Sinks.EventLog.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Serilog.Sinks.EventLog.dll": { - "related": ".xml" - } - } - }, - "Serilog.Sinks.File/4.0.0": { - "type": "package", - "dependencies": { - "Serilog": "2.5.0", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Timer": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/Serilog.Sinks.File.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/Serilog.Sinks.File.dll": { - "related": ".xml" - } - } - }, - "System.AppContext/4.1.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.6/System.AppContext.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.6/System.AppContext.dll": {} - } - }, - "System.Buffers/4.5.0": { - "type": "package", - "compile": { - "ref/netstandard2.0/System.Buffers.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Buffers.dll": { - "related": ".xml" - } - } - }, - "System.Collections/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Collections.dll": { - "related": ".xml" - } - } - }, - "System.Collections.Immutable/1.5.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/System.Collections.Immutable.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Collections.Immutable.dll": { - "related": ".xml" - } - } - }, - "System.Collections.NonGeneric/4.0.1": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Collections.NonGeneric.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Collections.NonGeneric.dll": {} - } - }, - "System.Console/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Console.dll": { - "related": ".xml" - } - } - }, - "System.Diagnostics.Debug/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.Debug.dll": { - "related": ".xml" - } - } - }, - "System.Diagnostics.DiagnosticSource/4.5.0": { - "type": "package", - "compile": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": { - "related": ".xml" - } - } - }, - "System.Diagnostics.EventLog/4.5.0": { - "type": "package", - "dependencies": { - "System.Security.Permissions": "4.5.0" - }, - "compile": { - "ref/netstandard2.0/System.Diagnostics.EventLog.dll": {} - }, - "runtime": { - "lib/netstandard2.0/System.Diagnostics.EventLog.dll": {} - } - }, - "System.Dynamic.Runtime/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Dynamic.Runtime.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Dynamic.Runtime.dll": {} - } - }, - "System.Globalization/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.dll": { - "related": ".xml" - } - } - }, - "System.IO/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.5/System.IO.dll": { - "related": ".xml" - } - } - }, - "System.IO.FileSystem/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.dll": { - "related": ".xml" - } - } - }, - "System.IO.FileSystem.AccessControl/4.7.0": { - "type": "package", - "dependencies": { - "System.Buffers": "4.5.0", - "System.Memory": "4.5.3", - "System.Security.AccessControl": "4.7.0", - "System.Security.Principal.Windows": "4.7.0" - }, - "compile": { - "ref/netstandard2.0/System.IO.FileSystem.AccessControl.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.IO.FileSystem.AccessControl.dll": { - "related": ".xml" - } - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard2.0/System.IO.FileSystem.AccessControl.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.FileSystem.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} - } - }, - "System.Linq/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.6/System.Linq.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.6/System.Linq.dll": {} - } - }, - "System.Linq.Expressions/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Emit.Lightweight": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/System.Linq.Expressions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.6/System.Linq.Expressions.dll": {} - } - }, - "System.Memory/4.5.3": { - "type": "package", - "dependencies": { - "System.Buffers": "4.4.0", - "System.Numerics.Vectors": "4.4.0", - "System.Runtime.CompilerServices.Unsafe": "4.5.2" - }, - "compile": { - "lib/netstandard2.0/System.Memory.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Memory.dll": { - "related": ".xml" - } - } - }, - "System.Numerics.Vectors/4.4.0": { - "type": "package", - "compile": { - "ref/netstandard2.0/System.Numerics.Vectors.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Numerics.Vectors.dll": { - "related": ".xml" - } - } - }, - "System.ObjectModel/4.0.12": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.ObjectModel.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.ObjectModel.dll": {} - } - }, - "System.Reflection/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.dll": { - "related": ".xml" - } - } - }, - "System.Reflection.Emit/4.0.1": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.1/_._": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.dll": {} - } - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {} - } - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {} - } - }, - "System.Reflection.Extensions/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Extensions.dll": { - "related": ".xml" - } - } - }, - "System.Reflection.Metadata/1.6.0": { - "type": "package", - "dependencies": { - "System.Collections.Immutable": "1.5.0" - }, - "compile": { - "lib/netstandard2.0/System.Reflection.Metadata.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Reflection.Metadata.dll": { - "related": ".xml" - } - } - }, - "System.Reflection.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Primitives.dll": { - "related": ".xml" - } - } - }, - "System.Reflection.TypeExtensions/4.1.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {} - } - }, - "System.Resources.ResourceManager/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Globalization": "4.0.11", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": { - "related": ".xml" - } - } - }, - "System.Runtime/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.dll": { - "related": ".xml" - } - } - }, - "System.Runtime.CompilerServices.Unsafe/4.5.2": { - "type": "package", - "compile": { - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { - "related": ".xml" - } - } - }, - "System.Runtime.Extensions/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.Extensions.dll": { - "related": ".xml" - } - } - }, - "System.Runtime.Handles/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Handles.dll": { - "related": ".xml" - } - } - }, - "System.Runtime.InteropServices/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.InteropServices.dll": { - "related": ".xml" - } - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.AccessControl/4.7.0": { - "type": "package", - "dependencies": { - "System.Security.Principal.Windows": "4.7.0" - }, - "compile": { - "ref/netstandard2.0/System.Security.AccessControl.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Security.AccessControl.dll": { - "related": ".xml" - } - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Permissions/4.5.0": { - "type": "package", - "dependencies": { - "System.Security.AccessControl": "4.5.0" - }, - "compile": { - "ref/netstandard2.0/System.Security.Permissions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Security.Permissions.dll": {} - } - }, - "System.Security.Principal.Windows/4.7.0": { - "type": "package", - "compile": { - "ref/netstandard2.0/System.Security.Principal.Windows.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Security.Principal.Windows.dll": { - "related": ".xml" - } - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Text.Encoding/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.dll": { - "related": ".xml" - } - } - }, - "System.Text.Encoding.Extensions/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": { - "related": ".xml" - } - } - }, - "System.Text.Encodings.Web/4.5.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - } - }, - "System.Text.RegularExpressions/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/System.Text.RegularExpressions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.6/System.Text.RegularExpressions.dll": {} - } - }, - "System.Threading/4.0.11": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Threading.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Threading.dll": {} - } - }, - "System.Threading.Tasks/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Tasks.dll": { - "related": ".xml" - } - } - }, - "System.Threading.Timer/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.2/System.Threading.Timer.dll": { - "related": ".xml" - } - } - } - } - }, - "libraries": { - "Microsoft.AspNetCore.Hosting/2.1.0": { - "sha512": "W0JHHIjNt8J9yBh6QjWH0u0k9OxQc4a76BmST9RWALRQt0s4N+OhWfCrFa+VXSNhLVXJHUPBYdjPAq1svEd8gw==", - "type": "package", - "path": "microsoft.aspnetcore.hosting/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.xml", - "microsoft.aspnetcore.hosting.2.1.0.nupkg.sha512", - "microsoft.aspnetcore.hosting.nuspec" - ] - }, - "Microsoft.AspNetCore.Hosting.Abstractions/2.1.0": { - "sha512": "1TQgBfd/NPZLR2o/h6l5Cml2ZCF5hsyV4h9WEwWwAIavrbdTnaNozGGcTOd4AOgQvogMM9UM1ajflm9Cwd0jLQ==", - "type": "package", - "path": "microsoft.aspnetcore.hosting.abstractions/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.xml", - "microsoft.aspnetcore.hosting.abstractions.2.1.0.nupkg.sha512", - "microsoft.aspnetcore.hosting.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.1.0": { - "sha512": "YTKMi2vHX6P+WHEVpW/DS+eFHnwivCSMklkyamcK1ETtc/4j8H3VR0kgW8XIBqukNxhD8k5wYt22P7PhrWSXjQ==", - "type": "package", - "path": "microsoft.aspnetcore.hosting.server.abstractions/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.xml", - "microsoft.aspnetcore.hosting.server.abstractions.2.1.0.nupkg.sha512", - "microsoft.aspnetcore.hosting.server.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.Http/2.1.0": { - "sha512": "eAPryjDRH41EYY2sOMHCu+tHXLI6PUN1AsOPKst6GbiIoMi8wJCiPcE4h9418tKje1oUzmMc2Iz8fFPPVamfaw==", - "type": "package", - "path": "microsoft.aspnetcore.http/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.xml", - "microsoft.aspnetcore.http.2.1.0.nupkg.sha512", - "microsoft.aspnetcore.http.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Abstractions/2.1.0": { - "sha512": "vbFDyKsSYBnxl3+RABtN79b0vsTcG66fDY8vD6Nqvu9uLtSej70Q5NcbGlnN6bJpZci5orSdgFTHMhBywivDPg==", - "type": "package", - "path": "microsoft.aspnetcore.http.abstractions/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.xml", - "microsoft.aspnetcore.http.abstractions.2.1.0.nupkg.sha512", - "microsoft.aspnetcore.http.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Extensions/2.1.0": { - "sha512": "M8Gk5qrUu5nFV7yE3SZgATt/5B1a5Qs8ZnXXeO/Pqu68CEiBHJWc10sdGdO5guc3zOFdm7H966mVnpZtEX4vSA==", - "type": "package", - "path": "microsoft.aspnetcore.http.extensions/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.xml", - "microsoft.aspnetcore.http.extensions.2.1.0.nupkg.sha512", - "microsoft.aspnetcore.http.extensions.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Features/2.1.0": { - "sha512": "UmkUePxRjsQW0j5euFFscBwjvTu25b8+qIK/2fI3GvcqQ+mkwgbWNAT8b/Gkoei1m2bTWC07lSdutuRDPPLcJA==", - "type": "package", - "path": "microsoft.aspnetcore.http.features/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.xml", - "microsoft.aspnetcore.http.features.2.1.0.nupkg.sha512", - "microsoft.aspnetcore.http.features.nuspec" - ] - }, - "Microsoft.AspNetCore.WebUtilities/2.1.0": { - "sha512": "xBy8JGXQ3tVSYzLl/LtN3c9EeB75khFSB2Kw2HWmF+McU0Ltva7R4JBRH0Rb4LgkcjYyyJdf+09PZalQFwsT+Q==", - "type": "package", - "path": "microsoft.aspnetcore.webutilities/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.xml", - "microsoft.aspnetcore.webutilities.2.1.0.nupkg.sha512", - "microsoft.aspnetcore.webutilities.nuspec" - ] - }, - "Microsoft.CSharp/4.0.1": { - "sha512": "17h8b5mXa87XYKrrVqdgZ38JefSUqLChUQpXgSnpzsM0nDOhE40FTeNWOJ/YmySGV6tG6T8+hjz6vxbknHJr6A==", - "type": "package", - "path": "microsoft.csharp/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/Microsoft.CSharp.dll", - "lib/netstandard1.3/Microsoft.CSharp.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "microsoft.csharp.4.0.1.nupkg.sha512", - "microsoft.csharp.nuspec", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/Microsoft.CSharp.dll", - "ref/netcore50/Microsoft.CSharp.xml", - "ref/netcore50/de/Microsoft.CSharp.xml", - "ref/netcore50/es/Microsoft.CSharp.xml", - "ref/netcore50/fr/Microsoft.CSharp.xml", - "ref/netcore50/it/Microsoft.CSharp.xml", - "ref/netcore50/ja/Microsoft.CSharp.xml", - "ref/netcore50/ko/Microsoft.CSharp.xml", - "ref/netcore50/ru/Microsoft.CSharp.xml", - "ref/netcore50/zh-hans/Microsoft.CSharp.xml", - "ref/netcore50/zh-hant/Microsoft.CSharp.xml", - "ref/netstandard1.0/Microsoft.CSharp.dll", - "ref/netstandard1.0/Microsoft.CSharp.xml", - "ref/netstandard1.0/de/Microsoft.CSharp.xml", - "ref/netstandard1.0/es/Microsoft.CSharp.xml", - "ref/netstandard1.0/fr/Microsoft.CSharp.xml", - "ref/netstandard1.0/it/Microsoft.CSharp.xml", - "ref/netstandard1.0/ja/Microsoft.CSharp.xml", - "ref/netstandard1.0/ko/Microsoft.CSharp.xml", - "ref/netstandard1.0/ru/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "Microsoft.DotNet.PlatformAbstractions/2.0.4": { - "sha512": "2HjSGp63VCLQaeGadrLYR868g25mJHr+TFF81yWCaClzjUbU2vNDx6km7SUgPnoLVksE/1e7in88eh+oPtc4aQ==", - "type": "package", - "path": "microsoft.dotnet.platformabstractions/2.0.4", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net45/Microsoft.DotNet.PlatformAbstractions.dll", - "lib/netstandard1.3/Microsoft.DotNet.PlatformAbstractions.dll", - "microsoft.dotnet.platformabstractions.2.0.4.nupkg.sha512", - "microsoft.dotnet.platformabstractions.nuspec" - ] - }, - "Microsoft.Extensions.Configuration/2.1.0": { - "sha512": "SS8ce1GYQTkZoOq5bskqQ+m7xiXQjnKRiGfVNZkkX2SX0HpXNRsKnSUaywRRuCje3v2KT9xeacsM3J9/G2exsQ==", - "type": "package", - "path": "microsoft.extensions.configuration/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", - "microsoft.extensions.configuration.2.1.0.nupkg.sha512", - "microsoft.extensions.configuration.nuspec" - ] - }, - "Microsoft.Extensions.Configuration.Abstractions/2.1.0": { - "sha512": "lMmUjAKvY9r6QmxCS15iSb6ulhwnh0zp44NtnVJ+HIDLFmu4iej41U+dU58On8NRezmlgRXiQtLnBeZSzYNKQg==", - "type": "package", - "path": "microsoft.extensions.configuration.abstractions/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "microsoft.extensions.configuration.abstractions.2.1.0.nupkg.sha512", - "microsoft.extensions.configuration.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.Configuration.Binder/2.1.0": { - "sha512": "Fls0O54Ielz1DiVYpcmiUpeizN1iKGGI5yAWAoShfmUvMcQ8jAGOK1a+DaflHA5hN9IOKvmSos0yewDYAIY0ZA==", - "type": "package", - "path": "microsoft.extensions.configuration.binder/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml", - "microsoft.extensions.configuration.binder.2.1.0.nupkg.sha512", - "microsoft.extensions.configuration.binder.nuspec" - ] - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables/2.1.0": { - "sha512": "fZIoU1kxy9zu4KjjabcA79jws6Fk1xmub/VQMrClVqRXZrWt9lYmyjJjw7x0KZtl+Y1hs8qDDaFDrpR1Mso6Wg==", - "type": "package", - "path": "microsoft.extensions.configuration.environmentvariables/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", - "microsoft.extensions.configuration.environmentvariables.2.1.0.nupkg.sha512", - "microsoft.extensions.configuration.environmentvariables.nuspec" - ] - }, - "Microsoft.Extensions.Configuration.FileExtensions/2.1.0": { - "sha512": "xvbjRAIo2Iwxk7vsMg49RwXPOOm5rtvr0frArvlg1uviS60ouVkOLouCNvOv/eRgWYINPbHAU9p//zEjit38Og==", - "type": "package", - "path": "microsoft.extensions.configuration.fileextensions/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.xml", - "microsoft.extensions.configuration.fileextensions.2.1.0.nupkg.sha512", - "microsoft.extensions.configuration.fileextensions.nuspec" - ] - }, - "Microsoft.Extensions.DependencyInjection/2.1.0": { - "sha512": "gqQviLfuA31PheEGi+XJoZc1bc9H9RsPa9Gq9XuDct7XGWSR9eVXjK5Sg7CSUPhTFHSuxUFY12wcTYLZ4zM1hg==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net461/Microsoft.Extensions.DependencyInjection.dll", - "lib/net461/Microsoft.Extensions.DependencyInjection.xml", - "lib/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", - "microsoft.extensions.dependencyinjection.2.1.0.nupkg.sha512", - "microsoft.extensions.dependencyinjection.nuspec" - ] - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/2.1.0": { - "sha512": "8/CtASu80UIoyG+r8FstrmZW5GLtXxzoYpjj3jV0FKZCL5CiFgSH3pAmqut/dC68mu7N1bU6v0UtKKL3gCUQGQ==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection.abstractions/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "microsoft.extensions.dependencyinjection.abstractions.2.1.0.nupkg.sha512", - "microsoft.extensions.dependencyinjection.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.DependencyModel/2.0.4": { - "sha512": "jnHAeijsfJFQXdXmnYK/NhQIkgBUeth//RZZkf0ldIKC+jARbf7YxbA9uTrs/EPhuQxHXaDxVuMyscgmL+UqfA==", - "type": "package", - "path": "microsoft.extensions.dependencymodel/2.0.4", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net451/Microsoft.Extensions.DependencyModel.dll", - "lib/netstandard1.3/Microsoft.Extensions.DependencyModel.dll", - "lib/netstandard1.6/Microsoft.Extensions.DependencyModel.dll", - "microsoft.extensions.dependencymodel.2.0.4.nupkg.sha512", - "microsoft.extensions.dependencymodel.nuspec" - ] - }, - "Microsoft.Extensions.FileProviders.Abstractions/2.1.0": { - "sha512": "itv+7XBu58pxi8mykxx9cUO1OOVYe0jmQIZVSZVp5lOcLxB7sSV2bnHiI1RSu6Nxne/s6+oBla3ON5CCMSmwhQ==", - "type": "package", - "path": "microsoft.extensions.fileproviders.abstractions/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.xml", - "microsoft.extensions.fileproviders.abstractions.2.1.0.nupkg.sha512", - "microsoft.extensions.fileproviders.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.FileProviders.Physical/2.1.0": { - "sha512": "A9xLomqD4tNFqDfleapx2C14ZcSjCTzn/4Od0W/wBYdlLF2tYDJ204e75HjpWDVTkr03kgdZbM3QZ6ZeDsrBYg==", - "type": "package", - "path": "microsoft.extensions.fileproviders.physical/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll", - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.xml", - "microsoft.extensions.fileproviders.physical.2.1.0.nupkg.sha512", - "microsoft.extensions.fileproviders.physical.nuspec" - ] - }, - "Microsoft.Extensions.FileSystemGlobbing/2.1.0": { - "sha512": "JEwwhwbVTEXJu4W4l/FFx7FG9Fh5R8999mZl6qJImjM/LY4DxQsFYzpSkziMdY022n7TQpNUxJlH9bKZc7TqWw==", - "type": "package", - "path": "microsoft.extensions.filesystemglobbing/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll", - "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.xml", - "microsoft.extensions.filesystemglobbing.2.1.0.nupkg.sha512", - "microsoft.extensions.filesystemglobbing.nuspec" - ] - }, - "Microsoft.Extensions.Hosting.Abstractions/2.1.0": { - "sha512": "BpMaoBxdXr5VD0yk7rYN6R8lAU9X9JbvsPveNdKT+llIn3J5s4sxpWqaSG/NnzTzTLU5eJE5nrecTl7clg/7dQ==", - "type": "package", - "path": "microsoft.extensions.hosting.abstractions/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.xml", - "microsoft.extensions.hosting.abstractions.2.1.0.nupkg.sha512", - "microsoft.extensions.hosting.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.Logging/2.1.0": { - "sha512": "kuZbZMMHb7ibzhLdn9/R1+PAAFKntlF10tOw4loB8VuQkHvSrBE6IzW1rhBLsEdmLXOgi2zFbwcXFrxzSM6ybA==", - "type": "package", - "path": "microsoft.extensions.logging/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", - "microsoft.extensions.logging.2.1.0.nupkg.sha512", - "microsoft.extensions.logging.nuspec" - ] - }, - "Microsoft.Extensions.Logging.Abstractions/2.1.0": { - "sha512": "GfD2VtvN9z1W+m6pZZe98yh9VWTSdNY2dZSxtca9uFIY6aBI6twvskMvLO/ktClBOTQmAov/7Em+IWFlHepa0A==", - "type": "package", - "path": "microsoft.extensions.logging.abstractions/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", - "microsoft.extensions.logging.abstractions.2.1.0.nupkg.sha512", - "microsoft.extensions.logging.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.ObjectPool/2.1.0": { - "sha512": "tIbO45cohqexTJPXBubpwluycDT+6OWy2m7PukG37XMrtQ6Zv4AnoLrgUTaCmpWihSs5RZHKvThiAJFcBlR3AA==", - "type": "package", - "path": "microsoft.extensions.objectpool/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll", - "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.xml", - "microsoft.extensions.objectpool.2.1.0.nupkg.sha512", - "microsoft.extensions.objectpool.nuspec" - ] - }, - "Microsoft.Extensions.Options/2.1.0": { - "sha512": "VOM1pPMi9+7/4Vc9aPLU8btHOBQy1+AvpqxLxFI2OVtqGv+1klPaV59g9R6aSt2U7ijfB3TjvAO4Tc/cn9/hxA==", - "type": "package", - "path": "microsoft.extensions.options/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Options.dll", - "lib/netstandard2.0/Microsoft.Extensions.Options.xml", - "microsoft.extensions.options.2.1.0.nupkg.sha512", - "microsoft.extensions.options.nuspec" - ] - }, - "Microsoft.Extensions.Options.ConfigurationExtensions/2.0.0": { - "sha512": "Y/lGICwO27fCkQRK3tZseVzFjZaxfGmui990E67sB4MuiPzdJHnJDS/BeYWrHShSSBgCl4KyKRx4ux686fftPg==", - "type": "package", - "path": "microsoft.extensions.options.configurationextensions/2.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", - "microsoft.extensions.options.configurationextensions.2.0.0.nupkg.sha512", - "microsoft.extensions.options.configurationextensions.nuspec" - ] - }, - "Microsoft.Extensions.Primitives/2.1.0": { - "sha512": "gMwH6wgWOPfyfLfMLEP+ZF7/MSJq35e0xxKEYUjt8veEznY45nBVqdfI876+9SFQq2ChcqKf2UyYc2XYj2v27w==", - "type": "package", - "path": "microsoft.extensions.primitives/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", - "microsoft.extensions.primitives.2.1.0.nupkg.sha512", - "microsoft.extensions.primitives.nuspec" - ] - }, - "Microsoft.Net.Http.Headers/2.1.0": { - "sha512": "c08F7C7BGgmjrq9cr7382pBRhcimBx24YOv4M4gtzMIuVKmxGoRr5r9A2Hke9v7Nx7zKKCysk6XpuZasZX4oeg==", - "type": "package", - "path": "microsoft.net.http.headers/2.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll", - "lib/netstandard2.0/Microsoft.Net.Http.Headers.xml", - "microsoft.net.http.headers.2.1.0.nupkg.sha512", - "microsoft.net.http.headers.nuspec" - ] - }, - "Microsoft.NETCore.Platforms/1.1.0": { - "sha512": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", - "type": "package", - "path": "microsoft.netcore.platforms/1.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "microsoft.netcore.platforms.1.1.0.nupkg.sha512", - "microsoft.netcore.platforms.nuspec", - "runtime.json" - ] - }, - "Microsoft.NETCore.Targets/1.1.0": { - "sha512": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", - "type": "package", - "path": "microsoft.netcore.targets/1.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "microsoft.netcore.targets.1.1.0.nupkg.sha512", - "microsoft.netcore.targets.nuspec", - "runtime.json" - ] - }, - "NETStandard.Library/2.0.3": { - "sha512": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", - "type": "package", - "path": "netstandard.library/2.0.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "build/netstandard2.0/NETStandard.Library.targets", - "build/netstandard2.0/ref/Microsoft.Win32.Primitives.dll", - "build/netstandard2.0/ref/System.AppContext.dll", - "build/netstandard2.0/ref/System.Collections.Concurrent.dll", - "build/netstandard2.0/ref/System.Collections.NonGeneric.dll", - "build/netstandard2.0/ref/System.Collections.Specialized.dll", - "build/netstandard2.0/ref/System.Collections.dll", - "build/netstandard2.0/ref/System.ComponentModel.Composition.dll", - "build/netstandard2.0/ref/System.ComponentModel.EventBasedAsync.dll", - "build/netstandard2.0/ref/System.ComponentModel.Primitives.dll", - "build/netstandard2.0/ref/System.ComponentModel.TypeConverter.dll", - "build/netstandard2.0/ref/System.ComponentModel.dll", - "build/netstandard2.0/ref/System.Console.dll", - "build/netstandard2.0/ref/System.Core.dll", - "build/netstandard2.0/ref/System.Data.Common.dll", - "build/netstandard2.0/ref/System.Data.dll", - "build/netstandard2.0/ref/System.Diagnostics.Contracts.dll", - "build/netstandard2.0/ref/System.Diagnostics.Debug.dll", - "build/netstandard2.0/ref/System.Diagnostics.FileVersionInfo.dll", - "build/netstandard2.0/ref/System.Diagnostics.Process.dll", - "build/netstandard2.0/ref/System.Diagnostics.StackTrace.dll", - "build/netstandard2.0/ref/System.Diagnostics.TextWriterTraceListener.dll", - "build/netstandard2.0/ref/System.Diagnostics.Tools.dll", - "build/netstandard2.0/ref/System.Diagnostics.TraceSource.dll", - "build/netstandard2.0/ref/System.Diagnostics.Tracing.dll", - "build/netstandard2.0/ref/System.Drawing.Primitives.dll", - "build/netstandard2.0/ref/System.Drawing.dll", - "build/netstandard2.0/ref/System.Dynamic.Runtime.dll", - "build/netstandard2.0/ref/System.Globalization.Calendars.dll", - "build/netstandard2.0/ref/System.Globalization.Extensions.dll", - "build/netstandard2.0/ref/System.Globalization.dll", - "build/netstandard2.0/ref/System.IO.Compression.FileSystem.dll", - "build/netstandard2.0/ref/System.IO.Compression.ZipFile.dll", - "build/netstandard2.0/ref/System.IO.Compression.dll", - "build/netstandard2.0/ref/System.IO.FileSystem.DriveInfo.dll", - "build/netstandard2.0/ref/System.IO.FileSystem.Primitives.dll", - "build/netstandard2.0/ref/System.IO.FileSystem.Watcher.dll", - "build/netstandard2.0/ref/System.IO.FileSystem.dll", - "build/netstandard2.0/ref/System.IO.IsolatedStorage.dll", - "build/netstandard2.0/ref/System.IO.MemoryMappedFiles.dll", - "build/netstandard2.0/ref/System.IO.Pipes.dll", - "build/netstandard2.0/ref/System.IO.UnmanagedMemoryStream.dll", - "build/netstandard2.0/ref/System.IO.dll", - "build/netstandard2.0/ref/System.Linq.Expressions.dll", - "build/netstandard2.0/ref/System.Linq.Parallel.dll", - "build/netstandard2.0/ref/System.Linq.Queryable.dll", - "build/netstandard2.0/ref/System.Linq.dll", - "build/netstandard2.0/ref/System.Net.Http.dll", - "build/netstandard2.0/ref/System.Net.NameResolution.dll", - "build/netstandard2.0/ref/System.Net.NetworkInformation.dll", - "build/netstandard2.0/ref/System.Net.Ping.dll", - "build/netstandard2.0/ref/System.Net.Primitives.dll", - "build/netstandard2.0/ref/System.Net.Requests.dll", - "build/netstandard2.0/ref/System.Net.Security.dll", - "build/netstandard2.0/ref/System.Net.Sockets.dll", - "build/netstandard2.0/ref/System.Net.WebHeaderCollection.dll", - "build/netstandard2.0/ref/System.Net.WebSockets.Client.dll", - "build/netstandard2.0/ref/System.Net.WebSockets.dll", - "build/netstandard2.0/ref/System.Net.dll", - "build/netstandard2.0/ref/System.Numerics.dll", - "build/netstandard2.0/ref/System.ObjectModel.dll", - "build/netstandard2.0/ref/System.Reflection.Extensions.dll", - "build/netstandard2.0/ref/System.Reflection.Primitives.dll", - "build/netstandard2.0/ref/System.Reflection.dll", - "build/netstandard2.0/ref/System.Resources.Reader.dll", - "build/netstandard2.0/ref/System.Resources.ResourceManager.dll", - "build/netstandard2.0/ref/System.Resources.Writer.dll", - "build/netstandard2.0/ref/System.Runtime.CompilerServices.VisualC.dll", - "build/netstandard2.0/ref/System.Runtime.Extensions.dll", - "build/netstandard2.0/ref/System.Runtime.Handles.dll", - "build/netstandard2.0/ref/System.Runtime.InteropServices.RuntimeInformation.dll", - "build/netstandard2.0/ref/System.Runtime.InteropServices.dll", - "build/netstandard2.0/ref/System.Runtime.Numerics.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.Formatters.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.Json.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.Primitives.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.Xml.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.dll", - "build/netstandard2.0/ref/System.Runtime.dll", - "build/netstandard2.0/ref/System.Security.Claims.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.Algorithms.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.Csp.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.Encoding.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.Primitives.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.X509Certificates.dll", - "build/netstandard2.0/ref/System.Security.Principal.dll", - "build/netstandard2.0/ref/System.Security.SecureString.dll", - "build/netstandard2.0/ref/System.ServiceModel.Web.dll", - "build/netstandard2.0/ref/System.Text.Encoding.Extensions.dll", - "build/netstandard2.0/ref/System.Text.Encoding.dll", - "build/netstandard2.0/ref/System.Text.RegularExpressions.dll", - "build/netstandard2.0/ref/System.Threading.Overlapped.dll", - "build/netstandard2.0/ref/System.Threading.Tasks.Parallel.dll", - "build/netstandard2.0/ref/System.Threading.Tasks.dll", - "build/netstandard2.0/ref/System.Threading.Thread.dll", - "build/netstandard2.0/ref/System.Threading.ThreadPool.dll", - "build/netstandard2.0/ref/System.Threading.Timer.dll", - "build/netstandard2.0/ref/System.Threading.dll", - "build/netstandard2.0/ref/System.Transactions.dll", - "build/netstandard2.0/ref/System.ValueTuple.dll", - "build/netstandard2.0/ref/System.Web.dll", - "build/netstandard2.0/ref/System.Windows.dll", - "build/netstandard2.0/ref/System.Xml.Linq.dll", - "build/netstandard2.0/ref/System.Xml.ReaderWriter.dll", - "build/netstandard2.0/ref/System.Xml.Serialization.dll", - "build/netstandard2.0/ref/System.Xml.XDocument.dll", - "build/netstandard2.0/ref/System.Xml.XPath.XDocument.dll", - "build/netstandard2.0/ref/System.Xml.XPath.dll", - "build/netstandard2.0/ref/System.Xml.XmlDocument.dll", - "build/netstandard2.0/ref/System.Xml.XmlSerializer.dll", - "build/netstandard2.0/ref/System.Xml.dll", - "build/netstandard2.0/ref/System.dll", - "build/netstandard2.0/ref/mscorlib.dll", - "build/netstandard2.0/ref/netstandard.dll", - "build/netstandard2.0/ref/netstandard.xml", - "lib/netstandard1.0/_._", - "netstandard.library.2.0.3.nupkg.sha512", - "netstandard.library.nuspec" - ] - }, - "Newtonsoft.Json/12.0.3": { - "sha512": "6mgjfnRB4jKMlzHSl+VD+oUc1IebOZabkbyWj2RiTgWwYPPuaK1H97G1sHqGwPlS5npiF5Q0OrxN1wni2n5QWg==", - "type": "package", - "path": "newtonsoft.json/12.0.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "lib/net20/Newtonsoft.Json.dll", - "lib/net20/Newtonsoft.Json.xml", - "lib/net35/Newtonsoft.Json.dll", - "lib/net35/Newtonsoft.Json.xml", - "lib/net40/Newtonsoft.Json.dll", - "lib/net40/Newtonsoft.Json.xml", - "lib/net45/Newtonsoft.Json.dll", - "lib/net45/Newtonsoft.Json.xml", - "lib/netstandard1.0/Newtonsoft.Json.dll", - "lib/netstandard1.0/Newtonsoft.Json.xml", - "lib/netstandard1.3/Newtonsoft.Json.dll", - "lib/netstandard1.3/Newtonsoft.Json.xml", - "lib/netstandard2.0/Newtonsoft.Json.dll", - "lib/netstandard2.0/Newtonsoft.Json.xml", - "lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.dll", - "lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.xml", - "lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.dll", - "lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.xml", - "newtonsoft.json.12.0.3.nupkg.sha512", - "newtonsoft.json.nuspec", - "packageIcon.png" - ] - }, - "runtime.native.System/4.0.0": { - "sha512": "QfS/nQI7k/BLgmLrw7qm7YBoULEvgWnPI+cYsbfCVFTW8Aj+i8JhccxcFMu1RWms0YZzF+UHguNBK4Qn89e2Sg==", - "type": "package", - "path": "runtime.native.system/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.4.0.0.nupkg.sha512", - "runtime.native.system.nuspec" - ] - }, - "Serilog/2.6.0": { - "sha512": "hxHgHkza8ZowrvQ+jTEF2ypDWGP8NbNtxPQIx7ogTAM9fisDFo2+6kOaxCkleZLO8hiyq0kW5tDLkgm/dbj9uA==", - "type": "package", - "path": "serilog/2.6.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/Serilog.dll", - "lib/net45/Serilog.xml", - "lib/net46/Serilog.dll", - "lib/net46/Serilog.xml", - "lib/netstandard1.0/Serilog.dll", - "lib/netstandard1.0/Serilog.xml", - "lib/netstandard1.3/Serilog.dll", - "lib/netstandard1.3/Serilog.xml", - "serilog.2.6.0.nupkg.sha512", - "serilog.nuspec" - ] - }, - "Serilog.AspNetCore/2.1.1": { - "sha512": "euuzaDEF8RuTszbqZnYYOm15bGKm0ID3Vaj++sDhmxeL79a8yRemhv2Y8knjvqoOatIpN7Cqd6Jma0A+Pk+V7g==", - "type": "package", - "path": "serilog.aspnetcore/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Serilog.AspNetCore.dll", - "lib/netstandard2.0/Serilog.AspNetCore.xml", - "serilog.aspnetcore.2.1.1.nupkg.sha512", - "serilog.aspnetcore.nuspec" - ] - }, - "Serilog.Extensions.Logging/2.0.0": { - "sha512": "JAh1vHmbiwDAjA9VmUQjAXvlGm+vDv8usarajlkx7Arm6Zai+CPY4naE4N9M3Eh520wY5GmIWpM+7zmfMbdTOw==", - "type": "package", - "path": "serilog.extensions.logging/2.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/Serilog.Extensions.Logging.dll", - "lib/net45/Serilog.Extensions.Logging.xml", - "lib/net46/Serilog.Extensions.Logging.dll", - "lib/net46/Serilog.Extensions.Logging.xml", - "lib/net461/Serilog.Extensions.Logging.dll", - "lib/net461/Serilog.Extensions.Logging.xml", - "lib/netstandard1.3/Serilog.Extensions.Logging.dll", - "lib/netstandard1.3/Serilog.Extensions.Logging.xml", - "lib/netstandard2.0/Serilog.Extensions.Logging.dll", - "lib/netstandard2.0/Serilog.Extensions.Logging.xml", - "serilog.extensions.logging.2.0.0.nupkg.sha512", - "serilog.extensions.logging.nuspec" - ] - }, - "Serilog.Formatting.Compact/1.0.0": { - "sha512": "r3QYz02y7+B7Ng30hyJM929OJhem7SsJ4XDUE0Zfptj2MRiQfpPUb5f58juAFjp/TnNeSX2QNzZEnHwLeoJfHQ==", - "type": "package", - "path": "serilog.formatting.compact/1.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/Serilog.Formatting.Compact.dll", - "lib/net45/Serilog.Formatting.Compact.xml", - "lib/netstandard1.1/Serilog.Formatting.Compact.dll", - "lib/netstandard1.1/Serilog.Formatting.Compact.xml", - "serilog.formatting.compact.1.0.0.nupkg.sha512", - "serilog.formatting.compact.nuspec" - ] - }, - "Serilog.Settings.Configuration/3.0.1": { - "sha512": "c9W5OWJgyDWIfewzzSOBUve7XKRyXTt+A8McIBKY/lydI478JnxZUTbbigAtzEIq+FecZGQ5QgA8oUBFi40odA==", - "type": "package", - "path": "serilog.settings.configuration/3.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net451/Serilog.Settings.Configuration.dll", - "lib/net451/Serilog.Settings.Configuration.xml", - "lib/net461/Serilog.Settings.Configuration.dll", - "lib/net461/Serilog.Settings.Configuration.xml", - "lib/netstandard2.0/Serilog.Settings.Configuration.dll", - "lib/netstandard2.0/Serilog.Settings.Configuration.xml", - "serilog.settings.configuration.3.0.1.nupkg.sha512", - "serilog.settings.configuration.nuspec" - ] - }, - "Serilog.Sinks.Console/3.1.1": { - "sha512": "56mI5AqvyF/i/c2451nvV71kq370XOCE4Uu5qiaJ295sOhMb9q3BWwG7mWLOVSnmpWiq0SBT3SXfgRXGNP6vzA==", - "type": "package", - "path": "serilog.sinks.console/3.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/Serilog.Sinks.Console.dll", - "lib/net45/Serilog.Sinks.Console.xml", - "lib/netcoreapp1.1/Serilog.Sinks.Console.dll", - "lib/netcoreapp1.1/Serilog.Sinks.Console.xml", - "lib/netstandard1.3/Serilog.Sinks.Console.dll", - "lib/netstandard1.3/Serilog.Sinks.Console.xml", - "serilog.sinks.console.3.1.1.nupkg.sha512", - "serilog.sinks.console.nuspec" - ] - }, - "Serilog.Sinks.EventLog/3.1.0": { - "sha512": "NZukSBsuyGqcA8h6VI4SC84vmwjw08OKJUEXFktSx7wPokWIwx/Mk9cdqSvadwLIC+2Stmpz1vG6EP5OZ5indQ==", - "type": "package", - "path": "serilog.sinks.eventlog/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/Serilog.Sinks.EventLog.dll", - "lib/net45/Serilog.Sinks.EventLog.xml", - "lib/netstandard2.0/Serilog.Sinks.EventLog.dll", - "lib/netstandard2.0/Serilog.Sinks.EventLog.xml", - "serilog.sinks.eventlog.3.1.0.nupkg.sha512", - "serilog.sinks.eventlog.nuspec" - ] - }, - "Serilog.Sinks.File/4.0.0": { - "sha512": "vBj43RkAbeP1dzoPFR2+LfV5GevDRPDq6265JJBv223lMvT9rfdwe/S/I9ow7aZSLYKfw4qPDw6NW8YwjbDbvg==", - "type": "package", - "path": "serilog.sinks.file/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/Serilog.Sinks.File.dll", - "lib/net45/Serilog.Sinks.File.xml", - "lib/netstandard1.3/Serilog.Sinks.File.dll", - "lib/netstandard1.3/Serilog.Sinks.File.xml", - "serilog.sinks.file.4.0.0.nupkg.sha512", - "serilog.sinks.file.nuspec" - ] - }, - "System.AppContext/4.1.0": { - "sha512": "3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==", - "type": "package", - "path": "system.appcontext/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.AppContext.dll", - "lib/net463/System.AppContext.dll", - "lib/netcore50/System.AppContext.dll", - "lib/netstandard1.6/System.AppContext.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.AppContext.dll", - "ref/net463/System.AppContext.dll", - "ref/netstandard/_._", - "ref/netstandard1.3/System.AppContext.dll", - "ref/netstandard1.3/System.AppContext.xml", - "ref/netstandard1.3/de/System.AppContext.xml", - "ref/netstandard1.3/es/System.AppContext.xml", - "ref/netstandard1.3/fr/System.AppContext.xml", - "ref/netstandard1.3/it/System.AppContext.xml", - "ref/netstandard1.3/ja/System.AppContext.xml", - "ref/netstandard1.3/ko/System.AppContext.xml", - "ref/netstandard1.3/ru/System.AppContext.xml", - "ref/netstandard1.3/zh-hans/System.AppContext.xml", - "ref/netstandard1.3/zh-hant/System.AppContext.xml", - "ref/netstandard1.6/System.AppContext.dll", - "ref/netstandard1.6/System.AppContext.xml", - "ref/netstandard1.6/de/System.AppContext.xml", - "ref/netstandard1.6/es/System.AppContext.xml", - "ref/netstandard1.6/fr/System.AppContext.xml", - "ref/netstandard1.6/it/System.AppContext.xml", - "ref/netstandard1.6/ja/System.AppContext.xml", - "ref/netstandard1.6/ko/System.AppContext.xml", - "ref/netstandard1.6/ru/System.AppContext.xml", - "ref/netstandard1.6/zh-hans/System.AppContext.xml", - "ref/netstandard1.6/zh-hant/System.AppContext.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.AppContext.dll", - "system.appcontext.4.1.0.nupkg.sha512", - "system.appcontext.nuspec" - ] - }, - "System.Buffers/4.5.0": { - "sha512": "pL2ChpaRRWI/p4LXyy4RgeWlYF2sgfj/pnVMvBqwNFr5cXg7CXNnWZWxrOONLg8VGdFB8oB+EG2Qw4MLgTOe+A==", - "type": "package", - "path": "system.buffers/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.0/_._", - "lib/netstandard1.1/System.Buffers.dll", - "lib/netstandard1.1/System.Buffers.xml", - "lib/netstandard2.0/System.Buffers.dll", - "lib/netstandard2.0/System.Buffers.xml", - "lib/uap10.0.16299/_._", - "ref/net45/System.Buffers.dll", - "ref/net45/System.Buffers.xml", - "ref/netcoreapp2.0/_._", - "ref/netstandard1.1/System.Buffers.dll", - "ref/netstandard1.1/System.Buffers.xml", - "ref/netstandard2.0/System.Buffers.dll", - "ref/netstandard2.0/System.Buffers.xml", - "ref/uap10.0.16299/_._", - "system.buffers.4.5.0.nupkg.sha512", - "system.buffers.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Collections/4.0.11": { - "sha512": "YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==", - "type": "package", - "path": "system.collections/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.dll", - "ref/netcore50/System.Collections.xml", - "ref/netcore50/de/System.Collections.xml", - "ref/netcore50/es/System.Collections.xml", - "ref/netcore50/fr/System.Collections.xml", - "ref/netcore50/it/System.Collections.xml", - "ref/netcore50/ja/System.Collections.xml", - "ref/netcore50/ko/System.Collections.xml", - "ref/netcore50/ru/System.Collections.xml", - "ref/netcore50/zh-hans/System.Collections.xml", - "ref/netcore50/zh-hant/System.Collections.xml", - "ref/netstandard1.0/System.Collections.dll", - "ref/netstandard1.0/System.Collections.xml", - "ref/netstandard1.0/de/System.Collections.xml", - "ref/netstandard1.0/es/System.Collections.xml", - "ref/netstandard1.0/fr/System.Collections.xml", - "ref/netstandard1.0/it/System.Collections.xml", - "ref/netstandard1.0/ja/System.Collections.xml", - "ref/netstandard1.0/ko/System.Collections.xml", - "ref/netstandard1.0/ru/System.Collections.xml", - "ref/netstandard1.0/zh-hans/System.Collections.xml", - "ref/netstandard1.0/zh-hant/System.Collections.xml", - "ref/netstandard1.3/System.Collections.dll", - "ref/netstandard1.3/System.Collections.xml", - "ref/netstandard1.3/de/System.Collections.xml", - "ref/netstandard1.3/es/System.Collections.xml", - "ref/netstandard1.3/fr/System.Collections.xml", - "ref/netstandard1.3/it/System.Collections.xml", - "ref/netstandard1.3/ja/System.Collections.xml", - "ref/netstandard1.3/ko/System.Collections.xml", - "ref/netstandard1.3/ru/System.Collections.xml", - "ref/netstandard1.3/zh-hans/System.Collections.xml", - "ref/netstandard1.3/zh-hant/System.Collections.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.collections.4.0.11.nupkg.sha512", - "system.collections.nuspec" - ] - }, - "System.Collections.Immutable/1.5.0": { - "sha512": "EXKiDFsChZW0RjrZ4FYHu9aW6+P4MCgEDCklsVseRfhoO0F+dXeMSsMRAlVXIo06kGJ/zv+2w1a2uc2+kxxSaQ==", - "type": "package", - "path": "system.collections.immutable/1.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netstandard1.0/System.Collections.Immutable.dll", - "lib/netstandard1.0/System.Collections.Immutable.xml", - "lib/netstandard1.3/System.Collections.Immutable.dll", - "lib/netstandard1.3/System.Collections.Immutable.xml", - "lib/netstandard2.0/System.Collections.Immutable.dll", - "lib/netstandard2.0/System.Collections.Immutable.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml", - "system.collections.immutable.1.5.0.nupkg.sha512", - "system.collections.immutable.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Collections.NonGeneric/4.0.1": { - "sha512": "hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==", - "type": "package", - "path": "system.collections.nongeneric/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Collections.NonGeneric.dll", - "lib/netstandard1.3/System.Collections.NonGeneric.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Collections.NonGeneric.dll", - "ref/netstandard1.3/System.Collections.NonGeneric.dll", - "ref/netstandard1.3/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/de/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/es/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/fr/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/it/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ja/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ko/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ru/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/zh-hans/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/zh-hant/System.Collections.NonGeneric.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.collections.nongeneric.4.0.1.nupkg.sha512", - "system.collections.nongeneric.nuspec" - ] - }, - "System.Console/4.3.0": { - "sha512": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", - "type": "package", - "path": "system.console/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Console.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Console.dll", - "ref/netstandard1.3/System.Console.dll", - "ref/netstandard1.3/System.Console.xml", - "ref/netstandard1.3/de/System.Console.xml", - "ref/netstandard1.3/es/System.Console.xml", - "ref/netstandard1.3/fr/System.Console.xml", - "ref/netstandard1.3/it/System.Console.xml", - "ref/netstandard1.3/ja/System.Console.xml", - "ref/netstandard1.3/ko/System.Console.xml", - "ref/netstandard1.3/ru/System.Console.xml", - "ref/netstandard1.3/zh-hans/System.Console.xml", - "ref/netstandard1.3/zh-hant/System.Console.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.console.4.3.0.nupkg.sha512", - "system.console.nuspec" - ] - }, - "System.Diagnostics.Debug/4.0.11": { - "sha512": "w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==", - "type": "package", - "path": "system.diagnostics.debug/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Debug.dll", - "ref/netcore50/System.Diagnostics.Debug.xml", - "ref/netcore50/de/System.Diagnostics.Debug.xml", - "ref/netcore50/es/System.Diagnostics.Debug.xml", - "ref/netcore50/fr/System.Diagnostics.Debug.xml", - "ref/netcore50/it/System.Diagnostics.Debug.xml", - "ref/netcore50/ja/System.Diagnostics.Debug.xml", - "ref/netcore50/ko/System.Diagnostics.Debug.xml", - "ref/netcore50/ru/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/System.Diagnostics.Debug.dll", - "ref/netstandard1.0/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/System.Diagnostics.Debug.dll", - "ref/netstandard1.3/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.diagnostics.debug.4.0.11.nupkg.sha512", - "system.diagnostics.debug.nuspec" - ] - }, - "System.Diagnostics.DiagnosticSource/4.5.0": { - "sha512": "eIHRELiYDQvsMToML81QFkXEEYXUSUT2F28t1SGrevWqP+epFdw80SyAXIKTXOHrIEXReFOEnEr7XlGiC2GgOg==", - "type": "package", - "path": "system.diagnostics.diagnosticsource/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net45/System.Diagnostics.DiagnosticSource.dll", - "lib/net45/System.Diagnostics.DiagnosticSource.xml", - "lib/net46/System.Diagnostics.DiagnosticSource.dll", - "lib/net46/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml", - "system.diagnostics.diagnosticsource.4.5.0.nupkg.sha512", - "system.diagnostics.diagnosticsource.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Diagnostics.EventLog/4.5.0": { - "sha512": "QaQAhEk18QSBPSu4VjXcznvjlg45IoXcJJNS5hcoqyyLj58g/SzQwpYXUrdzo+UtHV0grmOzFwABxhCYSTTp5Q==", - "type": "package", - "path": "system.diagnostics.eventlog/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/System.Diagnostics.EventLog.dll", - "lib/netstandard2.0/System.Diagnostics.EventLog.dll", - "ref/net461/System.Diagnostics.EventLog.dll", - "ref/netstandard2.0/System.Diagnostics.EventLog.dll", - "runtimes/win/lib/netcoreapp2.0/System.Diagnostics.EventLog.dll", - "system.diagnostics.eventlog.4.5.0.nupkg.sha512", - "system.diagnostics.eventlog.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Dynamic.Runtime/4.0.11": { - "sha512": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", - "type": "package", - "path": "system.dynamic.runtime/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Dynamic.Runtime.dll", - "lib/netstandard1.3/System.Dynamic.Runtime.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Dynamic.Runtime.dll", - "ref/netcore50/System.Dynamic.Runtime.xml", - "ref/netcore50/de/System.Dynamic.Runtime.xml", - "ref/netcore50/es/System.Dynamic.Runtime.xml", - "ref/netcore50/fr/System.Dynamic.Runtime.xml", - "ref/netcore50/it/System.Dynamic.Runtime.xml", - "ref/netcore50/ja/System.Dynamic.Runtime.xml", - "ref/netcore50/ko/System.Dynamic.Runtime.xml", - "ref/netcore50/ru/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hans/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/System.Dynamic.Runtime.dll", - "ref/netstandard1.0/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/System.Dynamic.Runtime.dll", - "ref/netstandard1.3/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll", - "system.dynamic.runtime.4.0.11.nupkg.sha512", - "system.dynamic.runtime.nuspec" - ] - }, - "System.Globalization/4.0.11": { - "sha512": "B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==", - "type": "package", - "path": "system.globalization/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Globalization.dll", - "ref/netcore50/System.Globalization.xml", - "ref/netcore50/de/System.Globalization.xml", - "ref/netcore50/es/System.Globalization.xml", - "ref/netcore50/fr/System.Globalization.xml", - "ref/netcore50/it/System.Globalization.xml", - "ref/netcore50/ja/System.Globalization.xml", - "ref/netcore50/ko/System.Globalization.xml", - "ref/netcore50/ru/System.Globalization.xml", - "ref/netcore50/zh-hans/System.Globalization.xml", - "ref/netcore50/zh-hant/System.Globalization.xml", - "ref/netstandard1.0/System.Globalization.dll", - "ref/netstandard1.0/System.Globalization.xml", - "ref/netstandard1.0/de/System.Globalization.xml", - "ref/netstandard1.0/es/System.Globalization.xml", - "ref/netstandard1.0/fr/System.Globalization.xml", - "ref/netstandard1.0/it/System.Globalization.xml", - "ref/netstandard1.0/ja/System.Globalization.xml", - "ref/netstandard1.0/ko/System.Globalization.xml", - "ref/netstandard1.0/ru/System.Globalization.xml", - "ref/netstandard1.0/zh-hans/System.Globalization.xml", - "ref/netstandard1.0/zh-hant/System.Globalization.xml", - "ref/netstandard1.3/System.Globalization.dll", - "ref/netstandard1.3/System.Globalization.xml", - "ref/netstandard1.3/de/System.Globalization.xml", - "ref/netstandard1.3/es/System.Globalization.xml", - "ref/netstandard1.3/fr/System.Globalization.xml", - "ref/netstandard1.3/it/System.Globalization.xml", - "ref/netstandard1.3/ja/System.Globalization.xml", - "ref/netstandard1.3/ko/System.Globalization.xml", - "ref/netstandard1.3/ru/System.Globalization.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.globalization.4.0.11.nupkg.sha512", - "system.globalization.nuspec" - ] - }, - "System.IO/4.3.0": { - "sha512": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", - "type": "package", - "path": "system.io/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.IO.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.IO.dll", - "ref/netcore50/System.IO.dll", - "ref/netcore50/System.IO.xml", - "ref/netcore50/de/System.IO.xml", - "ref/netcore50/es/System.IO.xml", - "ref/netcore50/fr/System.IO.xml", - "ref/netcore50/it/System.IO.xml", - "ref/netcore50/ja/System.IO.xml", - "ref/netcore50/ko/System.IO.xml", - "ref/netcore50/ru/System.IO.xml", - "ref/netcore50/zh-hans/System.IO.xml", - "ref/netcore50/zh-hant/System.IO.xml", - "ref/netstandard1.0/System.IO.dll", - "ref/netstandard1.0/System.IO.xml", - "ref/netstandard1.0/de/System.IO.xml", - "ref/netstandard1.0/es/System.IO.xml", - "ref/netstandard1.0/fr/System.IO.xml", - "ref/netstandard1.0/it/System.IO.xml", - "ref/netstandard1.0/ja/System.IO.xml", - "ref/netstandard1.0/ko/System.IO.xml", - "ref/netstandard1.0/ru/System.IO.xml", - "ref/netstandard1.0/zh-hans/System.IO.xml", - "ref/netstandard1.0/zh-hant/System.IO.xml", - "ref/netstandard1.3/System.IO.dll", - "ref/netstandard1.3/System.IO.xml", - "ref/netstandard1.3/de/System.IO.xml", - "ref/netstandard1.3/es/System.IO.xml", - "ref/netstandard1.3/fr/System.IO.xml", - "ref/netstandard1.3/it/System.IO.xml", - "ref/netstandard1.3/ja/System.IO.xml", - "ref/netstandard1.3/ko/System.IO.xml", - "ref/netstandard1.3/ru/System.IO.xml", - "ref/netstandard1.3/zh-hans/System.IO.xml", - "ref/netstandard1.3/zh-hant/System.IO.xml", - "ref/netstandard1.5/System.IO.dll", - "ref/netstandard1.5/System.IO.xml", - "ref/netstandard1.5/de/System.IO.xml", - "ref/netstandard1.5/es/System.IO.xml", - "ref/netstandard1.5/fr/System.IO.xml", - "ref/netstandard1.5/it/System.IO.xml", - "ref/netstandard1.5/ja/System.IO.xml", - "ref/netstandard1.5/ko/System.IO.xml", - "ref/netstandard1.5/ru/System.IO.xml", - "ref/netstandard1.5/zh-hans/System.IO.xml", - "ref/netstandard1.5/zh-hant/System.IO.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.4.3.0.nupkg.sha512", - "system.io.nuspec" - ] - }, - "System.IO.FileSystem/4.0.1": { - "sha512": "IBErlVq5jOggAD69bg1t0pJcHaDbJbWNUZTPI96fkYWzwYbN6D9wRHMULLDd9dHsl7C2YsxXL31LMfPI1SWt8w==", - "type": "package", - "path": "system.io.filesystem/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.filesystem.4.0.1.nupkg.sha512", - "system.io.filesystem.nuspec" - ] - }, - "System.IO.FileSystem.AccessControl/4.7.0": { - "sha512": "vMToiarpU81LR1/KZtnT7VDPvqAZfw9oOS5nY6pPP78nGYz3COLsQH3OfzbR+SjTgltd31R6KmKklz/zDpTmzw==", - "type": "package", - "path": "system.io.filesystem.accesscontrol/4.7.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net46/System.IO.FileSystem.AccessControl.dll", - "lib/net461/System.IO.FileSystem.AccessControl.dll", - "lib/net461/System.IO.FileSystem.AccessControl.xml", - "lib/netstandard1.3/System.IO.FileSystem.AccessControl.dll", - "lib/netstandard2.0/System.IO.FileSystem.AccessControl.dll", - "lib/netstandard2.0/System.IO.FileSystem.AccessControl.xml", - "ref/net46/System.IO.FileSystem.AccessControl.dll", - "ref/net461/System.IO.FileSystem.AccessControl.dll", - "ref/net461/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/System.IO.FileSystem.AccessControl.dll", - "ref/netstandard1.3/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard2.0/System.IO.FileSystem.AccessControl.dll", - "ref/netstandard2.0/System.IO.FileSystem.AccessControl.xml", - "runtimes/win/lib/net46/System.IO.FileSystem.AccessControl.dll", - "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.dll", - "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.xml", - "runtimes/win/lib/netstandard1.3/System.IO.FileSystem.AccessControl.dll", - "runtimes/win/lib/netstandard2.0/System.IO.FileSystem.AccessControl.dll", - "runtimes/win/lib/netstandard2.0/System.IO.FileSystem.AccessControl.xml", - "system.io.filesystem.accesscontrol.4.7.0.nupkg.sha512", - "system.io.filesystem.accesscontrol.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.IO.FileSystem.Primitives/4.0.1": { - "sha512": "kWkKD203JJKxJeE74p8aF8y4Qc9r9WQx4C0cHzHPrY3fv/L/IhWnyCHaFJ3H1QPOH6A93whlQ2vG5nHlBDvzWQ==", - "type": "package", - "path": "system.io.filesystem.primitives/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.Primitives.dll", - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.filesystem.primitives.4.0.1.nupkg.sha512", - "system.io.filesystem.primitives.nuspec" - ] - }, - "System.Linq/4.1.0": { - "sha512": "bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==", - "type": "package", - "path": "system.linq/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.dll", - "lib/netcore50/System.Linq.dll", - "lib/netstandard1.6/System.Linq.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.dll", - "ref/netcore50/System.Linq.dll", - "ref/netcore50/System.Linq.xml", - "ref/netcore50/de/System.Linq.xml", - "ref/netcore50/es/System.Linq.xml", - "ref/netcore50/fr/System.Linq.xml", - "ref/netcore50/it/System.Linq.xml", - "ref/netcore50/ja/System.Linq.xml", - "ref/netcore50/ko/System.Linq.xml", - "ref/netcore50/ru/System.Linq.xml", - "ref/netcore50/zh-hans/System.Linq.xml", - "ref/netcore50/zh-hant/System.Linq.xml", - "ref/netstandard1.0/System.Linq.dll", - "ref/netstandard1.0/System.Linq.xml", - "ref/netstandard1.0/de/System.Linq.xml", - "ref/netstandard1.0/es/System.Linq.xml", - "ref/netstandard1.0/fr/System.Linq.xml", - "ref/netstandard1.0/it/System.Linq.xml", - "ref/netstandard1.0/ja/System.Linq.xml", - "ref/netstandard1.0/ko/System.Linq.xml", - "ref/netstandard1.0/ru/System.Linq.xml", - "ref/netstandard1.0/zh-hans/System.Linq.xml", - "ref/netstandard1.0/zh-hant/System.Linq.xml", - "ref/netstandard1.6/System.Linq.dll", - "ref/netstandard1.6/System.Linq.xml", - "ref/netstandard1.6/de/System.Linq.xml", - "ref/netstandard1.6/es/System.Linq.xml", - "ref/netstandard1.6/fr/System.Linq.xml", - "ref/netstandard1.6/it/System.Linq.xml", - "ref/netstandard1.6/ja/System.Linq.xml", - "ref/netstandard1.6/ko/System.Linq.xml", - "ref/netstandard1.6/ru/System.Linq.xml", - "ref/netstandard1.6/zh-hans/System.Linq.xml", - "ref/netstandard1.6/zh-hant/System.Linq.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.linq.4.1.0.nupkg.sha512", - "system.linq.nuspec" - ] - }, - "System.Linq.Expressions/4.1.0": { - "sha512": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==", - "type": "package", - "path": "system.linq.expressions/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.Expressions.dll", - "lib/netcore50/System.Linq.Expressions.dll", - "lib/netstandard1.6/System.Linq.Expressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.xml", - "ref/netcore50/de/System.Linq.Expressions.xml", - "ref/netcore50/es/System.Linq.Expressions.xml", - "ref/netcore50/fr/System.Linq.Expressions.xml", - "ref/netcore50/it/System.Linq.Expressions.xml", - "ref/netcore50/ja/System.Linq.Expressions.xml", - "ref/netcore50/ko/System.Linq.Expressions.xml", - "ref/netcore50/ru/System.Linq.Expressions.xml", - "ref/netcore50/zh-hans/System.Linq.Expressions.xml", - "ref/netcore50/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.0/System.Linq.Expressions.dll", - "ref/netstandard1.0/System.Linq.Expressions.xml", - "ref/netstandard1.0/de/System.Linq.Expressions.xml", - "ref/netstandard1.0/es/System.Linq.Expressions.xml", - "ref/netstandard1.0/fr/System.Linq.Expressions.xml", - "ref/netstandard1.0/it/System.Linq.Expressions.xml", - "ref/netstandard1.0/ja/System.Linq.Expressions.xml", - "ref/netstandard1.0/ko/System.Linq.Expressions.xml", - "ref/netstandard1.0/ru/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.3/System.Linq.Expressions.dll", - "ref/netstandard1.3/System.Linq.Expressions.xml", - "ref/netstandard1.3/de/System.Linq.Expressions.xml", - "ref/netstandard1.3/es/System.Linq.Expressions.xml", - "ref/netstandard1.3/fr/System.Linq.Expressions.xml", - "ref/netstandard1.3/it/System.Linq.Expressions.xml", - "ref/netstandard1.3/ja/System.Linq.Expressions.xml", - "ref/netstandard1.3/ko/System.Linq.Expressions.xml", - "ref/netstandard1.3/ru/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.6/System.Linq.Expressions.dll", - "ref/netstandard1.6/System.Linq.Expressions.xml", - "ref/netstandard1.6/de/System.Linq.Expressions.xml", - "ref/netstandard1.6/es/System.Linq.Expressions.xml", - "ref/netstandard1.6/fr/System.Linq.Expressions.xml", - "ref/netstandard1.6/it/System.Linq.Expressions.xml", - "ref/netstandard1.6/ja/System.Linq.Expressions.xml", - "ref/netstandard1.6/ko/System.Linq.Expressions.xml", - "ref/netstandard1.6/ru/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll", - "system.linq.expressions.4.1.0.nupkg.sha512", - "system.linq.expressions.nuspec" - ] - }, - "System.Memory/4.5.3": { - "sha512": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==", - "type": "package", - "path": "system.memory/4.5.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.1/_._", - "lib/netstandard1.1/System.Memory.dll", - "lib/netstandard1.1/System.Memory.xml", - "lib/netstandard2.0/System.Memory.dll", - "lib/netstandard2.0/System.Memory.xml", - "ref/netcoreapp2.1/_._", - "system.memory.4.5.3.nupkg.sha512", - "system.memory.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Numerics.Vectors/4.4.0": { - "sha512": "UiLzLW+Lw6HLed1Hcg+8jSRttrbuXv7DANVj0DkL9g6EnnzbL75EB7EWsw5uRbhxd/4YdG8li5XizGWepmG3PQ==", - "type": "package", - "path": "system.numerics.vectors/4.4.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Numerics.Vectors.dll", - "lib/net46/System.Numerics.Vectors.xml", - "lib/netcoreapp2.0/_._", - "lib/netstandard1.0/System.Numerics.Vectors.dll", - "lib/netstandard1.0/System.Numerics.Vectors.xml", - "lib/netstandard2.0/System.Numerics.Vectors.dll", - "lib/netstandard2.0/System.Numerics.Vectors.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Numerics.Vectors.dll", - "ref/net46/System.Numerics.Vectors.xml", - "ref/netcoreapp2.0/_._", - "ref/netstandard1.0/System.Numerics.Vectors.dll", - "ref/netstandard1.0/System.Numerics.Vectors.xml", - "ref/netstandard2.0/System.Numerics.Vectors.dll", - "ref/netstandard2.0/System.Numerics.Vectors.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.numerics.vectors.4.4.0.nupkg.sha512", - "system.numerics.vectors.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.ObjectModel/4.0.12": { - "sha512": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==", - "type": "package", - "path": "system.objectmodel/4.0.12", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ObjectModel.dll", - "lib/netstandard1.3/System.ObjectModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ObjectModel.dll", - "ref/netcore50/System.ObjectModel.xml", - "ref/netcore50/de/System.ObjectModel.xml", - "ref/netcore50/es/System.ObjectModel.xml", - "ref/netcore50/fr/System.ObjectModel.xml", - "ref/netcore50/it/System.ObjectModel.xml", - "ref/netcore50/ja/System.ObjectModel.xml", - "ref/netcore50/ko/System.ObjectModel.xml", - "ref/netcore50/ru/System.ObjectModel.xml", - "ref/netcore50/zh-hans/System.ObjectModel.xml", - "ref/netcore50/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.0/System.ObjectModel.dll", - "ref/netstandard1.0/System.ObjectModel.xml", - "ref/netstandard1.0/de/System.ObjectModel.xml", - "ref/netstandard1.0/es/System.ObjectModel.xml", - "ref/netstandard1.0/fr/System.ObjectModel.xml", - "ref/netstandard1.0/it/System.ObjectModel.xml", - "ref/netstandard1.0/ja/System.ObjectModel.xml", - "ref/netstandard1.0/ko/System.ObjectModel.xml", - "ref/netstandard1.0/ru/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.3/System.ObjectModel.dll", - "ref/netstandard1.3/System.ObjectModel.xml", - "ref/netstandard1.3/de/System.ObjectModel.xml", - "ref/netstandard1.3/es/System.ObjectModel.xml", - "ref/netstandard1.3/fr/System.ObjectModel.xml", - "ref/netstandard1.3/it/System.ObjectModel.xml", - "ref/netstandard1.3/ja/System.ObjectModel.xml", - "ref/netstandard1.3/ko/System.ObjectModel.xml", - "ref/netstandard1.3/ru/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.objectmodel.4.0.12.nupkg.sha512", - "system.objectmodel.nuspec" - ] - }, - "System.Reflection/4.1.0": { - "sha512": "JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==", - "type": "package", - "path": "system.reflection/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Reflection.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Reflection.dll", - "ref/netcore50/System.Reflection.dll", - "ref/netcore50/System.Reflection.xml", - "ref/netcore50/de/System.Reflection.xml", - "ref/netcore50/es/System.Reflection.xml", - "ref/netcore50/fr/System.Reflection.xml", - "ref/netcore50/it/System.Reflection.xml", - "ref/netcore50/ja/System.Reflection.xml", - "ref/netcore50/ko/System.Reflection.xml", - "ref/netcore50/ru/System.Reflection.xml", - "ref/netcore50/zh-hans/System.Reflection.xml", - "ref/netcore50/zh-hant/System.Reflection.xml", - "ref/netstandard1.0/System.Reflection.dll", - "ref/netstandard1.0/System.Reflection.xml", - "ref/netstandard1.0/de/System.Reflection.xml", - "ref/netstandard1.0/es/System.Reflection.xml", - "ref/netstandard1.0/fr/System.Reflection.xml", - "ref/netstandard1.0/it/System.Reflection.xml", - "ref/netstandard1.0/ja/System.Reflection.xml", - "ref/netstandard1.0/ko/System.Reflection.xml", - "ref/netstandard1.0/ru/System.Reflection.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.xml", - "ref/netstandard1.3/System.Reflection.dll", - "ref/netstandard1.3/System.Reflection.xml", - "ref/netstandard1.3/de/System.Reflection.xml", - "ref/netstandard1.3/es/System.Reflection.xml", - "ref/netstandard1.3/fr/System.Reflection.xml", - "ref/netstandard1.3/it/System.Reflection.xml", - "ref/netstandard1.3/ja/System.Reflection.xml", - "ref/netstandard1.3/ko/System.Reflection.xml", - "ref/netstandard1.3/ru/System.Reflection.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.xml", - "ref/netstandard1.5/System.Reflection.dll", - "ref/netstandard1.5/System.Reflection.xml", - "ref/netstandard1.5/de/System.Reflection.xml", - "ref/netstandard1.5/es/System.Reflection.xml", - "ref/netstandard1.5/fr/System.Reflection.xml", - "ref/netstandard1.5/it/System.Reflection.xml", - "ref/netstandard1.5/ja/System.Reflection.xml", - "ref/netstandard1.5/ko/System.Reflection.xml", - "ref/netstandard1.5/ru/System.Reflection.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.4.1.0.nupkg.sha512", - "system.reflection.nuspec" - ] - }, - "System.Reflection.Emit/4.0.1": { - "sha512": "P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==", - "type": "package", - "path": "system.reflection.emit/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.dll", - "lib/netstandard1.3/System.Reflection.Emit.dll", - "lib/xamarinmac20/_._", - "ref/MonoAndroid10/_._", - "ref/net45/_._", - "ref/netstandard1.1/System.Reflection.Emit.dll", - "ref/netstandard1.1/System.Reflection.Emit.xml", - "ref/netstandard1.1/de/System.Reflection.Emit.xml", - "ref/netstandard1.1/es/System.Reflection.Emit.xml", - "ref/netstandard1.1/fr/System.Reflection.Emit.xml", - "ref/netstandard1.1/it/System.Reflection.Emit.xml", - "ref/netstandard1.1/ja/System.Reflection.Emit.xml", - "ref/netstandard1.1/ko/System.Reflection.Emit.xml", - "ref/netstandard1.1/ru/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", - "ref/xamarinmac20/_._", - "system.reflection.emit.4.0.1.nupkg.sha512", - "system.reflection.emit.nuspec" - ] - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "sha512": "Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==", - "type": "package", - "path": "system.reflection.emit.ilgeneration/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "runtimes/aot/lib/netcore50/_._", - "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512", - "system.reflection.emit.ilgeneration.nuspec" - ] - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "sha512": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==", - "type": "package", - "path": "system.reflection.emit.lightweight/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.Lightweight.dll", - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "runtimes/aot/lib/netcore50/_._", - "system.reflection.emit.lightweight.4.0.1.nupkg.sha512", - "system.reflection.emit.lightweight.nuspec" - ] - }, - "System.Reflection.Extensions/4.0.1": { - "sha512": "GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==", - "type": "package", - "path": "system.reflection.extensions/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Extensions.dll", - "ref/netcore50/System.Reflection.Extensions.xml", - "ref/netcore50/de/System.Reflection.Extensions.xml", - "ref/netcore50/es/System.Reflection.Extensions.xml", - "ref/netcore50/fr/System.Reflection.Extensions.xml", - "ref/netcore50/it/System.Reflection.Extensions.xml", - "ref/netcore50/ja/System.Reflection.Extensions.xml", - "ref/netcore50/ko/System.Reflection.Extensions.xml", - "ref/netcore50/ru/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", - "ref/netstandard1.0/System.Reflection.Extensions.dll", - "ref/netstandard1.0/System.Reflection.Extensions.xml", - "ref/netstandard1.0/de/System.Reflection.Extensions.xml", - "ref/netstandard1.0/es/System.Reflection.Extensions.xml", - "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", - "ref/netstandard1.0/it/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.extensions.4.0.1.nupkg.sha512", - "system.reflection.extensions.nuspec" - ] - }, - "System.Reflection.Metadata/1.6.0": { - "sha512": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==", - "type": "package", - "path": "system.reflection.metadata/1.6.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netstandard1.1/System.Reflection.Metadata.dll", - "lib/netstandard1.1/System.Reflection.Metadata.xml", - "lib/netstandard2.0/System.Reflection.Metadata.dll", - "lib/netstandard2.0/System.Reflection.Metadata.xml", - "lib/portable-net45+win8/System.Reflection.Metadata.dll", - "lib/portable-net45+win8/System.Reflection.Metadata.xml", - "system.reflection.metadata.1.6.0.nupkg.sha512", - "system.reflection.metadata.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Reflection.Primitives/4.0.1": { - "sha512": "4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==", - "type": "package", - "path": "system.reflection.primitives/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Primitives.dll", - "ref/netcore50/System.Reflection.Primitives.xml", - "ref/netcore50/de/System.Reflection.Primitives.xml", - "ref/netcore50/es/System.Reflection.Primitives.xml", - "ref/netcore50/fr/System.Reflection.Primitives.xml", - "ref/netcore50/it/System.Reflection.Primitives.xml", - "ref/netcore50/ja/System.Reflection.Primitives.xml", - "ref/netcore50/ko/System.Reflection.Primitives.xml", - "ref/netcore50/ru/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", - "ref/netstandard1.0/System.Reflection.Primitives.dll", - "ref/netstandard1.0/System.Reflection.Primitives.xml", - "ref/netstandard1.0/de/System.Reflection.Primitives.xml", - "ref/netstandard1.0/es/System.Reflection.Primitives.xml", - "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", - "ref/netstandard1.0/it/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.primitives.4.0.1.nupkg.sha512", - "system.reflection.primitives.nuspec" - ] - }, - "System.Reflection.TypeExtensions/4.1.0": { - "sha512": "tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==", - "type": "package", - "path": "system.reflection.typeextensions/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Reflection.TypeExtensions.dll", - "lib/net462/System.Reflection.TypeExtensions.dll", - "lib/netcore50/System.Reflection.TypeExtensions.dll", - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Reflection.TypeExtensions.dll", - "ref/net462/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll", - "system.reflection.typeextensions.4.1.0.nupkg.sha512", - "system.reflection.typeextensions.nuspec" - ] - }, - "System.Resources.ResourceManager/4.0.1": { - "sha512": "TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==", - "type": "package", - "path": "system.resources.resourcemanager/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Resources.ResourceManager.dll", - "ref/netcore50/System.Resources.ResourceManager.xml", - "ref/netcore50/de/System.Resources.ResourceManager.xml", - "ref/netcore50/es/System.Resources.ResourceManager.xml", - "ref/netcore50/fr/System.Resources.ResourceManager.xml", - "ref/netcore50/it/System.Resources.ResourceManager.xml", - "ref/netcore50/ja/System.Resources.ResourceManager.xml", - "ref/netcore50/ko/System.Resources.ResourceManager.xml", - "ref/netcore50/ru/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/System.Resources.ResourceManager.dll", - "ref/netstandard1.0/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.resources.resourcemanager.4.0.1.nupkg.sha512", - "system.resources.resourcemanager.nuspec" - ] - }, - "System.Runtime/4.3.0": { - "sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", - "type": "package", - "path": "system.runtime/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.dll", - "lib/portable-net45+win8+wp80+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.dll", - "ref/netcore50/System.Runtime.dll", - "ref/netcore50/System.Runtime.xml", - "ref/netcore50/de/System.Runtime.xml", - "ref/netcore50/es/System.Runtime.xml", - "ref/netcore50/fr/System.Runtime.xml", - "ref/netcore50/it/System.Runtime.xml", - "ref/netcore50/ja/System.Runtime.xml", - "ref/netcore50/ko/System.Runtime.xml", - "ref/netcore50/ru/System.Runtime.xml", - "ref/netcore50/zh-hans/System.Runtime.xml", - "ref/netcore50/zh-hant/System.Runtime.xml", - "ref/netstandard1.0/System.Runtime.dll", - "ref/netstandard1.0/System.Runtime.xml", - "ref/netstandard1.0/de/System.Runtime.xml", - "ref/netstandard1.0/es/System.Runtime.xml", - "ref/netstandard1.0/fr/System.Runtime.xml", - "ref/netstandard1.0/it/System.Runtime.xml", - "ref/netstandard1.0/ja/System.Runtime.xml", - "ref/netstandard1.0/ko/System.Runtime.xml", - "ref/netstandard1.0/ru/System.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.xml", - "ref/netstandard1.2/System.Runtime.dll", - "ref/netstandard1.2/System.Runtime.xml", - "ref/netstandard1.2/de/System.Runtime.xml", - "ref/netstandard1.2/es/System.Runtime.xml", - "ref/netstandard1.2/fr/System.Runtime.xml", - "ref/netstandard1.2/it/System.Runtime.xml", - "ref/netstandard1.2/ja/System.Runtime.xml", - "ref/netstandard1.2/ko/System.Runtime.xml", - "ref/netstandard1.2/ru/System.Runtime.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.xml", - "ref/netstandard1.3/System.Runtime.dll", - "ref/netstandard1.3/System.Runtime.xml", - "ref/netstandard1.3/de/System.Runtime.xml", - "ref/netstandard1.3/es/System.Runtime.xml", - "ref/netstandard1.3/fr/System.Runtime.xml", - "ref/netstandard1.3/it/System.Runtime.xml", - "ref/netstandard1.3/ja/System.Runtime.xml", - "ref/netstandard1.3/ko/System.Runtime.xml", - "ref/netstandard1.3/ru/System.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.xml", - "ref/netstandard1.5/System.Runtime.dll", - "ref/netstandard1.5/System.Runtime.xml", - "ref/netstandard1.5/de/System.Runtime.xml", - "ref/netstandard1.5/es/System.Runtime.xml", - "ref/netstandard1.5/fr/System.Runtime.xml", - "ref/netstandard1.5/it/System.Runtime.xml", - "ref/netstandard1.5/ja/System.Runtime.xml", - "ref/netstandard1.5/ko/System.Runtime.xml", - "ref/netstandard1.5/ru/System.Runtime.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.xml", - "ref/portable-net45+win8+wp80+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.4.3.0.nupkg.sha512", - "system.runtime.nuspec" - ] - }, - "System.Runtime.CompilerServices.Unsafe/4.5.2": { - "sha512": "wprSFgext8cwqymChhrBLu62LMg/1u92bU+VOwyfBimSPVFXtsNqEWC92Pf9ofzJFlk4IHmJA75EDJn1b2goAQ==", - "type": "package", - "path": "system.runtime.compilerservices.unsafe/4.5.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.xml", - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml", - "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", - "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", - "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml", - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", - "system.runtime.compilerservices.unsafe.4.5.2.nupkg.sha512", - "system.runtime.compilerservices.unsafe.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Runtime.Extensions/4.1.0": { - "sha512": "CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==", - "type": "package", - "path": "system.runtime.extensions/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.xml", - "ref/netcore50/de/System.Runtime.Extensions.xml", - "ref/netcore50/es/System.Runtime.Extensions.xml", - "ref/netcore50/fr/System.Runtime.Extensions.xml", - "ref/netcore50/it/System.Runtime.Extensions.xml", - "ref/netcore50/ja/System.Runtime.Extensions.xml", - "ref/netcore50/ko/System.Runtime.Extensions.xml", - "ref/netcore50/ru/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.0/System.Runtime.Extensions.dll", - "ref/netstandard1.0/System.Runtime.Extensions.xml", - "ref/netstandard1.0/de/System.Runtime.Extensions.xml", - "ref/netstandard1.0/es/System.Runtime.Extensions.xml", - "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.0/it/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.3/System.Runtime.Extensions.dll", - "ref/netstandard1.3/System.Runtime.Extensions.xml", - "ref/netstandard1.3/de/System.Runtime.Extensions.xml", - "ref/netstandard1.3/es/System.Runtime.Extensions.xml", - "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.3/it/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.5/System.Runtime.Extensions.dll", - "ref/netstandard1.5/System.Runtime.Extensions.xml", - "ref/netstandard1.5/de/System.Runtime.Extensions.xml", - "ref/netstandard1.5/es/System.Runtime.Extensions.xml", - "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.5/it/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.extensions.4.1.0.nupkg.sha512", - "system.runtime.extensions.nuspec" - ] - }, - "System.Runtime.Handles/4.0.1": { - "sha512": "nCJvEKguXEvk2ymk1gqj625vVnlK3/xdGzx0vOKicQkoquaTBJTP13AIYkocSUwHCLNBwUbXTqTWGDxBTWpt7g==", - "type": "package", - "path": "system.runtime.handles/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/netstandard1.3/System.Runtime.Handles.dll", - "ref/netstandard1.3/System.Runtime.Handles.xml", - "ref/netstandard1.3/de/System.Runtime.Handles.xml", - "ref/netstandard1.3/es/System.Runtime.Handles.xml", - "ref/netstandard1.3/fr/System.Runtime.Handles.xml", - "ref/netstandard1.3/it/System.Runtime.Handles.xml", - "ref/netstandard1.3/ja/System.Runtime.Handles.xml", - "ref/netstandard1.3/ko/System.Runtime.Handles.xml", - "ref/netstandard1.3/ru/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.handles.4.0.1.nupkg.sha512", - "system.runtime.handles.nuspec" - ] - }, - "System.Runtime.InteropServices/4.1.0": { - "sha512": "16eu3kjHS633yYdkjwShDHZLRNMKVi/s0bY8ODiqJ2RfMhDMAwxZaUaWVnZ2P71kr/or+X9o/xFWtNqz8ivieQ==", - "type": "package", - "path": "system.runtime.interopservices/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.InteropServices.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.xml", - "ref/netcore50/de/System.Runtime.InteropServices.xml", - "ref/netcore50/es/System.Runtime.InteropServices.xml", - "ref/netcore50/fr/System.Runtime.InteropServices.xml", - "ref/netcore50/it/System.Runtime.InteropServices.xml", - "ref/netcore50/ja/System.Runtime.InteropServices.xml", - "ref/netcore50/ko/System.Runtime.InteropServices.xml", - "ref/netcore50/ru/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/System.Runtime.InteropServices.dll", - "ref/netstandard1.1/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/System.Runtime.InteropServices.dll", - "ref/netstandard1.2/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/System.Runtime.InteropServices.dll", - "ref/netstandard1.3/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/System.Runtime.InteropServices.dll", - "ref/netstandard1.5/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.interopservices.4.1.0.nupkg.sha512", - "system.runtime.interopservices.nuspec" - ] - }, - "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { - "sha512": "hWPhJxc453RCa8Z29O91EmfGeZIHX1ZH2A8L6lYQVSaKzku2DfArSfMEb1/MYYzPQRJZeu0c9dmYeJKxW5Fgng==", - "type": "package", - "path": "system.runtime.interopservices.runtimeinformation/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "system.runtime.interopservices.runtimeinformation.4.0.0.nupkg.sha512", - "system.runtime.interopservices.runtimeinformation.nuspec" - ] - }, - "System.Security.AccessControl/4.7.0": { - "sha512": "JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==", - "type": "package", - "path": "system.security.accesscontrol/4.7.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net46/System.Security.AccessControl.dll", - "lib/net461/System.Security.AccessControl.dll", - "lib/net461/System.Security.AccessControl.xml", - "lib/netstandard1.3/System.Security.AccessControl.dll", - "lib/netstandard2.0/System.Security.AccessControl.dll", - "lib/netstandard2.0/System.Security.AccessControl.xml", - "lib/uap10.0.16299/_._", - "ref/net46/System.Security.AccessControl.dll", - "ref/net461/System.Security.AccessControl.dll", - "ref/net461/System.Security.AccessControl.xml", - "ref/netstandard1.3/System.Security.AccessControl.dll", - "ref/netstandard1.3/System.Security.AccessControl.xml", - "ref/netstandard1.3/de/System.Security.AccessControl.xml", - "ref/netstandard1.3/es/System.Security.AccessControl.xml", - "ref/netstandard1.3/fr/System.Security.AccessControl.xml", - "ref/netstandard1.3/it/System.Security.AccessControl.xml", - "ref/netstandard1.3/ja/System.Security.AccessControl.xml", - "ref/netstandard1.3/ko/System.Security.AccessControl.xml", - "ref/netstandard1.3/ru/System.Security.AccessControl.xml", - "ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml", - "ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml", - "ref/netstandard2.0/System.Security.AccessControl.dll", - "ref/netstandard2.0/System.Security.AccessControl.xml", - "ref/uap10.0.16299/_._", - "runtimes/win/lib/net46/System.Security.AccessControl.dll", - "runtimes/win/lib/net461/System.Security.AccessControl.dll", - "runtimes/win/lib/net461/System.Security.AccessControl.xml", - "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll", - "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml", - "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll", - "runtimes/win/lib/uap10.0.16299/_._", - "system.security.accesscontrol.4.7.0.nupkg.sha512", - "system.security.accesscontrol.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Security.Permissions/4.5.0": { - "sha512": "9gdyuARhUR7H+p5CjyUB/zPk7/Xut3wUSP8NJQB6iZr8L3XUXTMdoLeVAg9N4rqF8oIpE7MpdqHdDHQ7XgJe0g==", - "type": "package", - "path": "system.security.permissions/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/System.Security.Permissions.dll", - "lib/netstandard2.0/System.Security.Permissions.dll", - "ref/net461/System.Security.Permissions.dll", - "ref/net461/System.Security.Permissions.xml", - "ref/netstandard2.0/System.Security.Permissions.dll", - "ref/netstandard2.0/System.Security.Permissions.xml", - "system.security.permissions.4.5.0.nupkg.sha512", - "system.security.permissions.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Security.Principal.Windows/4.7.0": { - "sha512": "ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==", - "type": "package", - "path": "system.security.principal.windows/4.7.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net46/System.Security.Principal.Windows.dll", - "lib/net461/System.Security.Principal.Windows.dll", - "lib/net461/System.Security.Principal.Windows.xml", - "lib/netstandard1.3/System.Security.Principal.Windows.dll", - "lib/netstandard2.0/System.Security.Principal.Windows.dll", - "lib/netstandard2.0/System.Security.Principal.Windows.xml", - "lib/uap10.0.16299/_._", - "ref/net46/System.Security.Principal.Windows.dll", - "ref/net461/System.Security.Principal.Windows.dll", - "ref/net461/System.Security.Principal.Windows.xml", - "ref/netcoreapp3.0/System.Security.Principal.Windows.dll", - "ref/netcoreapp3.0/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/System.Security.Principal.Windows.dll", - "ref/netstandard1.3/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/de/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/es/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/it/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml", - "ref/netstandard2.0/System.Security.Principal.Windows.dll", - "ref/netstandard2.0/System.Security.Principal.Windows.xml", - "ref/uap10.0.16299/_._", - "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll", - "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.xml", - "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll", - "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.xml", - "runtimes/win/lib/net46/System.Security.Principal.Windows.dll", - "runtimes/win/lib/net461/System.Security.Principal.Windows.dll", - "runtimes/win/lib/net461/System.Security.Principal.Windows.xml", - "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll", - "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.xml", - "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll", - "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.xml", - "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll", - "runtimes/win/lib/uap10.0.16299/_._", - "system.security.principal.windows.4.7.0.nupkg.sha512", - "system.security.principal.windows.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Text.Encoding/4.3.0": { - "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", - "type": "package", - "path": "system.text.encoding/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.dll", - "ref/netcore50/System.Text.Encoding.xml", - "ref/netcore50/de/System.Text.Encoding.xml", - "ref/netcore50/es/System.Text.Encoding.xml", - "ref/netcore50/fr/System.Text.Encoding.xml", - "ref/netcore50/it/System.Text.Encoding.xml", - "ref/netcore50/ja/System.Text.Encoding.xml", - "ref/netcore50/ko/System.Text.Encoding.xml", - "ref/netcore50/ru/System.Text.Encoding.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.0/System.Text.Encoding.dll", - "ref/netstandard1.0/System.Text.Encoding.xml", - "ref/netstandard1.0/de/System.Text.Encoding.xml", - "ref/netstandard1.0/es/System.Text.Encoding.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.xml", - "ref/netstandard1.0/it/System.Text.Encoding.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.3/System.Text.Encoding.dll", - "ref/netstandard1.3/System.Text.Encoding.xml", - "ref/netstandard1.3/de/System.Text.Encoding.xml", - "ref/netstandard1.3/es/System.Text.Encoding.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.xml", - "ref/netstandard1.3/it/System.Text.Encoding.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.encoding.4.3.0.nupkg.sha512", - "system.text.encoding.nuspec" - ] - }, - "System.Text.Encoding.Extensions/4.0.11": { - "sha512": "jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==", - "type": "package", - "path": "system.text.encoding.extensions/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.Extensions.dll", - "ref/netcore50/System.Text.Encoding.Extensions.xml", - "ref/netcore50/de/System.Text.Encoding.Extensions.xml", - "ref/netcore50/es/System.Text.Encoding.Extensions.xml", - "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", - "ref/netcore50/it/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.encoding.extensions.4.0.11.nupkg.sha512", - "system.text.encoding.extensions.nuspec" - ] - }, - "System.Text.Encodings.Web/4.5.0": { - "sha512": "Xg4G4Indi4dqP1iuAiMSwpiWS54ZghzR644OtsRCm/m/lBMG8dUBhLVN7hLm8NNrNTR+iGbshCPTwrvxZPlm4g==", - "type": "package", - "path": "system.text.encodings.web/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netstandard1.0/System.Text.Encodings.Web.dll", - "lib/netstandard1.0/System.Text.Encodings.Web.xml", - "lib/netstandard2.0/System.Text.Encodings.Web.dll", - "lib/netstandard2.0/System.Text.Encodings.Web.xml", - "system.text.encodings.web.4.5.0.nupkg.sha512", - "system.text.encodings.web.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Text.RegularExpressions/4.1.0": { - "sha512": "i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==", - "type": "package", - "path": "system.text.regularexpressions/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Text.RegularExpressions.dll", - "lib/netcore50/System.Text.RegularExpressions.dll", - "lib/netstandard1.6/System.Text.RegularExpressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.xml", - "ref/netcore50/de/System.Text.RegularExpressions.xml", - "ref/netcore50/es/System.Text.RegularExpressions.xml", - "ref/netcore50/fr/System.Text.RegularExpressions.xml", - "ref/netcore50/it/System.Text.RegularExpressions.xml", - "ref/netcore50/ja/System.Text.RegularExpressions.xml", - "ref/netcore50/ko/System.Text.RegularExpressions.xml", - "ref/netcore50/ru/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/System.Text.RegularExpressions.dll", - "ref/netstandard1.0/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/System.Text.RegularExpressions.dll", - "ref/netstandard1.3/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/System.Text.RegularExpressions.dll", - "ref/netstandard1.6/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.regularexpressions.4.1.0.nupkg.sha512", - "system.text.regularexpressions.nuspec" - ] - }, - "System.Threading/4.0.11": { - "sha512": "N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==", - "type": "package", - "path": "system.threading/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Threading.dll", - "lib/netstandard1.3/System.Threading.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.dll", - "ref/netcore50/System.Threading.xml", - "ref/netcore50/de/System.Threading.xml", - "ref/netcore50/es/System.Threading.xml", - "ref/netcore50/fr/System.Threading.xml", - "ref/netcore50/it/System.Threading.xml", - "ref/netcore50/ja/System.Threading.xml", - "ref/netcore50/ko/System.Threading.xml", - "ref/netcore50/ru/System.Threading.xml", - "ref/netcore50/zh-hans/System.Threading.xml", - "ref/netcore50/zh-hant/System.Threading.xml", - "ref/netstandard1.0/System.Threading.dll", - "ref/netstandard1.0/System.Threading.xml", - "ref/netstandard1.0/de/System.Threading.xml", - "ref/netstandard1.0/es/System.Threading.xml", - "ref/netstandard1.0/fr/System.Threading.xml", - "ref/netstandard1.0/it/System.Threading.xml", - "ref/netstandard1.0/ja/System.Threading.xml", - "ref/netstandard1.0/ko/System.Threading.xml", - "ref/netstandard1.0/ru/System.Threading.xml", - "ref/netstandard1.0/zh-hans/System.Threading.xml", - "ref/netstandard1.0/zh-hant/System.Threading.xml", - "ref/netstandard1.3/System.Threading.dll", - "ref/netstandard1.3/System.Threading.xml", - "ref/netstandard1.3/de/System.Threading.xml", - "ref/netstandard1.3/es/System.Threading.xml", - "ref/netstandard1.3/fr/System.Threading.xml", - "ref/netstandard1.3/it/System.Threading.xml", - "ref/netstandard1.3/ja/System.Threading.xml", - "ref/netstandard1.3/ko/System.Threading.xml", - "ref/netstandard1.3/ru/System.Threading.xml", - "ref/netstandard1.3/zh-hans/System.Threading.xml", - "ref/netstandard1.3/zh-hant/System.Threading.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Threading.dll", - "system.threading.4.0.11.nupkg.sha512", - "system.threading.nuspec" - ] - }, - "System.Threading.Tasks/4.3.0": { - "sha512": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", - "type": "package", - "path": "system.threading.tasks/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.dll", - "ref/netcore50/System.Threading.Tasks.xml", - "ref/netcore50/de/System.Threading.Tasks.xml", - "ref/netcore50/es/System.Threading.Tasks.xml", - "ref/netcore50/fr/System.Threading.Tasks.xml", - "ref/netcore50/it/System.Threading.Tasks.xml", - "ref/netcore50/ja/System.Threading.Tasks.xml", - "ref/netcore50/ko/System.Threading.Tasks.xml", - "ref/netcore50/ru/System.Threading.Tasks.xml", - "ref/netcore50/zh-hans/System.Threading.Tasks.xml", - "ref/netcore50/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.0/System.Threading.Tasks.dll", - "ref/netstandard1.0/System.Threading.Tasks.xml", - "ref/netstandard1.0/de/System.Threading.Tasks.xml", - "ref/netstandard1.0/es/System.Threading.Tasks.xml", - "ref/netstandard1.0/fr/System.Threading.Tasks.xml", - "ref/netstandard1.0/it/System.Threading.Tasks.xml", - "ref/netstandard1.0/ja/System.Threading.Tasks.xml", - "ref/netstandard1.0/ko/System.Threading.Tasks.xml", - "ref/netstandard1.0/ru/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.3/System.Threading.Tasks.dll", - "ref/netstandard1.3/System.Threading.Tasks.xml", - "ref/netstandard1.3/de/System.Threading.Tasks.xml", - "ref/netstandard1.3/es/System.Threading.Tasks.xml", - "ref/netstandard1.3/fr/System.Threading.Tasks.xml", - "ref/netstandard1.3/it/System.Threading.Tasks.xml", - "ref/netstandard1.3/ja/System.Threading.Tasks.xml", - "ref/netstandard1.3/ko/System.Threading.Tasks.xml", - "ref/netstandard1.3/ru/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.tasks.4.3.0.nupkg.sha512", - "system.threading.tasks.nuspec" - ] - }, - "System.Threading.Timer/4.0.1": { - "sha512": "saGfUV8uqVW6LeURiqxcGhZ24PzuRNaUBtbhVeuUAvky1naH395A/1nY0P2bWvrw/BreRtIB/EzTDkGBpqCwEw==", - "type": "package", - "path": "system.threading.timer/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net451/_._", - "lib/portable-net451+win81+wpa81/_._", - "lib/win81/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net451/_._", - "ref/netcore50/System.Threading.Timer.dll", - "ref/netcore50/System.Threading.Timer.xml", - "ref/netcore50/de/System.Threading.Timer.xml", - "ref/netcore50/es/System.Threading.Timer.xml", - "ref/netcore50/fr/System.Threading.Timer.xml", - "ref/netcore50/it/System.Threading.Timer.xml", - "ref/netcore50/ja/System.Threading.Timer.xml", - "ref/netcore50/ko/System.Threading.Timer.xml", - "ref/netcore50/ru/System.Threading.Timer.xml", - "ref/netcore50/zh-hans/System.Threading.Timer.xml", - "ref/netcore50/zh-hant/System.Threading.Timer.xml", - "ref/netstandard1.2/System.Threading.Timer.dll", - "ref/netstandard1.2/System.Threading.Timer.xml", - "ref/netstandard1.2/de/System.Threading.Timer.xml", - "ref/netstandard1.2/es/System.Threading.Timer.xml", - "ref/netstandard1.2/fr/System.Threading.Timer.xml", - "ref/netstandard1.2/it/System.Threading.Timer.xml", - "ref/netstandard1.2/ja/System.Threading.Timer.xml", - "ref/netstandard1.2/ko/System.Threading.Timer.xml", - "ref/netstandard1.2/ru/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", - "ref/portable-net451+win81+wpa81/_._", - "ref/win81/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.timer.4.0.1.nupkg.sha512", - "system.threading.timer.nuspec" - ] - } - }, - "projectFileDependencyGroups": { - ".NETStandard,Version=v2.0": [ - "Microsoft.AspNetCore.Hosting >= 2.1.0", - "NETStandard.Library >= 2.0.3", - "Newtonsoft.Json >= 12.0.3", - "Serilog.AspNetCore >= 2.1.1", - "Serilog.Formatting.Compact >= 1.0.0", - "Serilog.Settings.Configuration >= 3.0.1", - "Serilog.Sinks.Console >= 3.1.1", - "Serilog.Sinks.EventLog >= 3.1.0", - "Serilog.Sinks.File >= 4.0.0", - "System.IO.FileSystem.AccessControl >= 4.7.0" - ] - }, - "packageFolders": { - "/Users/assafa/.nuget/packages/": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/ClassLibrary1.csproj", - "projectName": "ClassLibrary1", - "projectPath": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/ClassLibrary1.csproj", - "packagesPath": "/Users/assafa/.nuget/packages/", - "outputPath": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/", - "projectStyle": "PackageReference", - "configFilePaths": [ - "/Users/assafa/.nuget/NuGet/NuGet.Config" - ], - "originalTargetFrameworks": [ - "netstandard2.0" - ], - "sources": { - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - } - }, - "frameworks": { - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "dependencies": { - "Microsoft.AspNetCore.Hosting": { - "target": "Package", - "version": "[2.1.0, )" - }, - "NETStandard.Library": { - "suppressParent": "All", - "target": "Package", - "version": "[2.0.3, )", - "autoReferenced": true - }, - "Newtonsoft.Json": { - "target": "Package", - "version": "[12.0.3, )" - }, - "Serilog.AspNetCore": { - "target": "Package", - "version": "[2.1.1, )" - }, - "Serilog.Formatting.Compact": { - "target": "Package", - "version": "[1.0.0, )" - }, - "Serilog.Settings.Configuration": { - "target": "Package", - "version": "[3.0.1, )" - }, - "Serilog.Sinks.Console": { - "target": "Package", - "version": "[3.1.1, )" - }, - "Serilog.Sinks.EventLog": { - "target": "Package", - "version": "[3.1.0, )" - }, - "Serilog.Sinks.File": { - "target": "Package", - "version": "[4.0.0, )" - }, - "System.IO.FileSystem.AccessControl": { - "target": "Package", - "version": "[4.7.0, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "runtimeIdentifierGraphPath": "/Users/assafa/.dotnet/sdk/8.0.418/RuntimeIdentifierGraph.json" - } - } - }, - "logs": [ - { - "code": "NU1903", - "level": "Warning", - "warningLevel": 1, - "message": "Package 'Newtonsoft.Json' 12.0.3 has a known high severity vulnerability, https://github.com/advisories/GHSA-5crp-9r3c-p9vr", - "libraryId": "Newtonsoft.Json", - "targetGraphs": [ - ".NETStandard,Version=v2.0" - ] - } - ] -} \ No newline at end of file diff --git a/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/project.nuget.cache b/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/project.nuget.cache deleted file mode 100644 index 49838e64d..000000000 --- a/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/project.nuget.cache +++ /dev/null @@ -1,107 +0,0 @@ -{ - "version": 2, - "dgSpecHash": "I+B4NcNLBUE=", - "success": true, - "projectFilePath": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/ClassLibrary1.csproj", - "expectedPackageFiles": [ - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.hosting/2.1.0/microsoft.aspnetcore.hosting.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.hosting.abstractions/2.1.0/microsoft.aspnetcore.hosting.abstractions.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.hosting.server.abstractions/2.1.0/microsoft.aspnetcore.hosting.server.abstractions.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.http/2.1.0/microsoft.aspnetcore.http.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.http.abstractions/2.1.0/microsoft.aspnetcore.http.abstractions.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.http.extensions/2.1.0/microsoft.aspnetcore.http.extensions.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.http.features/2.1.0/microsoft.aspnetcore.http.features.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.webutilities/2.1.0/microsoft.aspnetcore.webutilities.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.csharp/4.0.1/microsoft.csharp.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.dotnet.platformabstractions/2.0.4/microsoft.dotnet.platformabstractions.2.0.4.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.configuration/2.1.0/microsoft.extensions.configuration.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.configuration.abstractions/2.1.0/microsoft.extensions.configuration.abstractions.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.configuration.binder/2.1.0/microsoft.extensions.configuration.binder.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.configuration.environmentvariables/2.1.0/microsoft.extensions.configuration.environmentvariables.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.configuration.fileextensions/2.1.0/microsoft.extensions.configuration.fileextensions.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.dependencyinjection/2.1.0/microsoft.extensions.dependencyinjection.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.dependencyinjection.abstractions/2.1.0/microsoft.extensions.dependencyinjection.abstractions.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.dependencymodel/2.0.4/microsoft.extensions.dependencymodel.2.0.4.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.fileproviders.abstractions/2.1.0/microsoft.extensions.fileproviders.abstractions.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.fileproviders.physical/2.1.0/microsoft.extensions.fileproviders.physical.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.filesystemglobbing/2.1.0/microsoft.extensions.filesystemglobbing.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.hosting.abstractions/2.1.0/microsoft.extensions.hosting.abstractions.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.logging/2.1.0/microsoft.extensions.logging.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.logging.abstractions/2.1.0/microsoft.extensions.logging.abstractions.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.objectpool/2.1.0/microsoft.extensions.objectpool.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.options/2.1.0/microsoft.extensions.options.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.options.configurationextensions/2.0.0/microsoft.extensions.options.configurationextensions.2.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.primitives/2.1.0/microsoft.extensions.primitives.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.net.http.headers/2.1.0/microsoft.net.http.headers.2.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.netcore.platforms/1.1.0/microsoft.netcore.platforms.1.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.netcore.targets/1.1.0/microsoft.netcore.targets.1.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/netstandard.library/2.0.3/netstandard.library.2.0.3.nupkg.sha512", - "/Users/assafa/.nuget/packages/newtonsoft.json/12.0.3/newtonsoft.json.12.0.3.nupkg.sha512", - "/Users/assafa/.nuget/packages/runtime.native.system/4.0.0/runtime.native.system.4.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog/2.6.0/serilog.2.6.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog.aspnetcore/2.1.1/serilog.aspnetcore.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog.extensions.logging/2.0.0/serilog.extensions.logging.2.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog.formatting.compact/1.0.0/serilog.formatting.compact.1.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog.settings.configuration/3.0.1/serilog.settings.configuration.3.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog.sinks.console/3.1.1/serilog.sinks.console.3.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog.sinks.eventlog/3.1.0/serilog.sinks.eventlog.3.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog.sinks.file/4.0.0/serilog.sinks.file.4.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.appcontext/4.1.0/system.appcontext.4.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.buffers/4.5.0/system.buffers.4.5.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.collections/4.0.11/system.collections.4.0.11.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.collections.immutable/1.5.0/system.collections.immutable.1.5.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.collections.nongeneric/4.0.1/system.collections.nongeneric.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.console/4.3.0/system.console.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.diagnostics.debug/4.0.11/system.diagnostics.debug.4.0.11.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.diagnostics.diagnosticsource/4.5.0/system.diagnostics.diagnosticsource.4.5.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.diagnostics.eventlog/4.5.0/system.diagnostics.eventlog.4.5.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.dynamic.runtime/4.0.11/system.dynamic.runtime.4.0.11.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.globalization/4.0.11/system.globalization.4.0.11.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.io/4.3.0/system.io.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.io.filesystem/4.0.1/system.io.filesystem.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.io.filesystem.accesscontrol/4.7.0/system.io.filesystem.accesscontrol.4.7.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.io.filesystem.primitives/4.0.1/system.io.filesystem.primitives.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.linq/4.1.0/system.linq.4.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.linq.expressions/4.1.0/system.linq.expressions.4.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.memory/4.5.3/system.memory.4.5.3.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.numerics.vectors/4.4.0/system.numerics.vectors.4.4.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.objectmodel/4.0.12/system.objectmodel.4.0.12.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection/4.1.0/system.reflection.4.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection.emit/4.0.1/system.reflection.emit.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection.emit.ilgeneration/4.0.1/system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection.emit.lightweight/4.0.1/system.reflection.emit.lightweight.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection.extensions/4.0.1/system.reflection.extensions.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection.metadata/1.6.0/system.reflection.metadata.1.6.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection.primitives/4.0.1/system.reflection.primitives.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection.typeextensions/4.1.0/system.reflection.typeextensions.4.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.resources.resourcemanager/4.0.1/system.resources.resourcemanager.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.runtime/4.3.0/system.runtime.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.runtime.compilerservices.unsafe/4.5.2/system.runtime.compilerservices.unsafe.4.5.2.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.runtime.extensions/4.1.0/system.runtime.extensions.4.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.runtime.handles/4.0.1/system.runtime.handles.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.runtime.interopservices/4.1.0/system.runtime.interopservices.4.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.runtime.interopservices.runtimeinformation/4.0.0/system.runtime.interopservices.runtimeinformation.4.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.security.accesscontrol/4.7.0/system.security.accesscontrol.4.7.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.security.permissions/4.5.0/system.security.permissions.4.5.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.security.principal.windows/4.7.0/system.security.principal.windows.4.7.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.text.encoding/4.3.0/system.text.encoding.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.text.encoding.extensions/4.0.11/system.text.encoding.extensions.4.0.11.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.text.encodings.web/4.5.0/system.text.encodings.web.4.5.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.text.regularexpressions/4.1.0/system.text.regularexpressions.4.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.threading/4.0.11/system.threading.4.0.11.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.threading.tasks/4.3.0/system.threading.tasks.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.threading.timer/4.0.1/system.threading.timer.4.0.1.nupkg.sha512" - ], - "logs": [ - { - "code": "NU1903", - "level": "Warning", - "warningLevel": 1, - "message": "Package 'Newtonsoft.Json' 12.0.3 has a known high severity vulnerability, https://github.com/advisories/GHSA-5crp-9r3c-p9vr", - "libraryId": "Newtonsoft.Json", - "targetGraphs": [ - ".NETStandard,Version=v2.0" - ] - } - ] -} \ No newline at end of file diff --git a/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/TestApp1.csproj.nuget.dgspec.json b/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/TestApp1.csproj.nuget.dgspec.json deleted file mode 100644 index d71a12707..000000000 --- a/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/TestApp1.csproj.nuget.dgspec.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "format": 1, - "restore": { - "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/TestApp1/TestApp1.csproj": {} - }, - "projects": { - "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/ClassLibrary1.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/ClassLibrary1.csproj", - "projectName": "ClassLibrary1", - "projectPath": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/ClassLibrary1.csproj", - "packagesPath": "/Users/assafa/.nuget/packages/", - "outputPath": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/obj/", - "projectStyle": "PackageReference", - "configFilePaths": [ - "/Users/assafa/.nuget/NuGet/NuGet.Config" - ], - "originalTargetFrameworks": [ - "netstandard2.0" - ], - "sources": { - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - } - }, - "frameworks": { - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "dependencies": { - "Microsoft.AspNetCore.Hosting": { - "target": "Package", - "version": "[2.1.0, )" - }, - "NETStandard.Library": { - "suppressParent": "All", - "target": "Package", - "version": "[2.0.3, )", - "autoReferenced": true - }, - "Newtonsoft.Json": { - "target": "Package", - "version": "[12.0.3, )" - }, - "Serilog.AspNetCore": { - "target": "Package", - "version": "[2.1.1, )" - }, - "Serilog.Formatting.Compact": { - "target": "Package", - "version": "[1.0.0, )" - }, - "Serilog.Settings.Configuration": { - "target": "Package", - "version": "[3.0.1, )" - }, - "Serilog.Sinks.Console": { - "target": "Package", - "version": "[3.1.1, )" - }, - "Serilog.Sinks.EventLog": { - "target": "Package", - "version": "[3.1.0, )" - }, - "Serilog.Sinks.File": { - "target": "Package", - "version": "[4.0.0, )" - }, - "System.IO.FileSystem.AccessControl": { - "target": "Package", - "version": "[4.7.0, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "runtimeIdentifierGraphPath": "/Users/assafa/.dotnet/sdk/8.0.418/RuntimeIdentifierGraph.json" - } - } - }, - "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/TestApp1/TestApp1.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/TestApp1/TestApp1.csproj", - "projectName": "TestApp1", - "projectPath": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/TestApp1/TestApp1.csproj", - "packagesPath": "/Users/assafa/.nuget/packages/", - "outputPath": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/", - "projectStyle": "PackageReference", - "configFilePaths": [ - "/Users/assafa/.nuget/NuGet/NuGet.Config" - ], - "originalTargetFrameworks": [ - "netcoreapp3.1" - ], - "sources": { - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "netcoreapp3.1": { - "targetAlias": "netcoreapp3.1", - "projectReferences": { - "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/ClassLibrary1.csproj": { - "projectPath": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/ClassLibrary1.csproj" - } - } - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - } - }, - "frameworks": { - "netcoreapp3.1": { - "targetAlias": "netcoreapp3.1", - "dependencies": { - "BouncyCastle": { - "target": "Package", - "version": "[1.8.9, )" - }, - "Google.Cloud.Kms.V1": { - "target": "Package", - "version": "[2.0.0, )" - }, - "Microsoft.AspNetCore.Hosting": { - "target": "Package", - "version": "[2.1.1, )" - }, - "Microsoft.AspNetCore.Hosting.WindowsServices": { - "target": "Package", - "version": "[2.1.1, )" - }, - "Serilog.AspNetCore": { - "target": "Package", - "version": "[2.1.1, )" - }, - "Serilog.Formatting.Compact": { - "target": "Package", - "version": "[1.0.0, )" - }, - "Serilog.Settings.Configuration": { - "target": "Package", - "version": "[3.0.1, )" - }, - "Serilog.Sinks.Console": { - "target": "Package", - "version": "[3.1.1, )" - }, - "Serilog.Sinks.EventLog": { - "target": "Package", - "version": "[3.1.0, )" - }, - "Serilog.Sinks.File": { - "target": "Package", - "version": "[4.0.0, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "downloadDependencies": [ - { - "name": "Microsoft.AspNetCore.App.Ref", - "version": "[3.1.10, 3.1.10]" - }, - { - "name": "Microsoft.NETCore.App.Host.osx-x64", - "version": "[3.1.32, 3.1.32]" - }, - { - "name": "Microsoft.NETCore.App.Ref", - "version": "[3.1.0, 3.1.0]" - } - ], - "frameworkReferences": { - "Microsoft.AspNetCore.App": { - "privateAssets": "none" - }, - "Microsoft.NETCore.App": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "/Users/assafa/.dotnet/sdk/8.0.418/RuntimeIdentifierGraph.json" - } - } - } - } -} \ No newline at end of file diff --git a/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/TestApp1.csproj.nuget.g.props b/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/TestApp1.csproj.nuget.g.props deleted file mode 100644 index d8e90e26e..000000000 --- a/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/TestApp1.csproj.nuget.g.props +++ /dev/null @@ -1,15 +0,0 @@ - - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - /Users/assafa/.nuget/packages/ - /Users/assafa/.nuget/packages/ - PackageReference - 6.11.1 - - - - - \ No newline at end of file diff --git a/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/TestApp1.csproj.nuget.g.targets b/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/TestApp1.csproj.nuget.g.targets deleted file mode 100644 index 3dc06ef3c..000000000 --- a/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/TestApp1.csproj.nuget.g.targets +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/project.assets.json b/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/project.assets.json deleted file mode 100644 index 411de6567..000000000 --- a/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/project.assets.json +++ /dev/null @@ -1,5324 +0,0 @@ -{ - "version": 3, - "targets": { - ".NETCoreApp,Version=v3.1": { - "BouncyCastle/1.8.9": { - "type": "package", - "compile": { - "lib/BouncyCastle.Crypto.dll": {} - }, - "runtime": { - "lib/BouncyCastle.Crypto.dll": {} - } - }, - "Google.Api.CommonProtos/2.0.0": { - "type": "package", - "dependencies": { - "Google.Protobuf": "3.11.4" - }, - "compile": { - "lib/netstandard2.0/Google.Api.CommonProtos.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Google.Api.CommonProtos.dll": { - "related": ".pdb;.xml" - } - } - }, - "Google.Api.Gax/3.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.0.0", - "Newtonsoft.Json": "12.0.3" - }, - "compile": { - "lib/netstandard2.0/Google.Api.Gax.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Google.Api.Gax.dll": { - "related": ".pdb;.xml" - } - } - }, - "Google.Api.Gax.Grpc/3.0.0": { - "type": "package", - "dependencies": { - "Google.Api.CommonProtos": "2.0.0", - "Google.Api.Gax": "3.0.0", - "Google.Apis.Auth": "1.44.1", - "Grpc.Auth": "2.27.0", - "Grpc.Core.Api": "2.27.0" - }, - "compile": { - "lib/netstandard2.0/Google.Api.Gax.Grpc.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Google.Api.Gax.Grpc.dll": { - "related": ".pdb;.xml" - } - } - }, - "Google.Api.Gax.Grpc.GrpcCore/3.0.0": { - "type": "package", - "dependencies": { - "Google.Api.Gax.Grpc": "3.0.0", - "Grpc.Core": "2.27.0" - }, - "compile": { - "lib/netstandard2.0/Google.Api.Gax.Grpc.GrpcCore.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Google.Api.Gax.Grpc.GrpcCore.dll": { - "related": ".pdb;.xml" - } - } - }, - "Google.Apis/1.44.1": { - "type": "package", - "dependencies": { - "Google.Apis.Core": "1.44.1" - }, - "compile": { - "lib/netstandard2.0/Google.Apis.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Google.Apis.dll": { - "related": ".pdb;.xml" - } - } - }, - "Google.Apis.Auth/1.44.1": { - "type": "package", - "dependencies": { - "Google.Apis": "1.44.1", - "Google.Apis.Core": "1.44.1" - }, - "compile": { - "lib/netstandard2.0/Google.Apis.Auth.PlatformServices.dll": {}, - "lib/netstandard2.0/Google.Apis.Auth.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Google.Apis.Auth.PlatformServices.dll": {}, - "lib/netstandard2.0/Google.Apis.Auth.dll": { - "related": ".pdb;.xml" - } - } - }, - "Google.Apis.Core/1.44.1": { - "type": "package", - "dependencies": { - "Newtonsoft.Json": "12.0.3" - }, - "compile": { - "lib/netstandard2.0/Google.Apis.Core.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Google.Apis.Core.dll": { - "related": ".pdb;.xml" - } - } - }, - "Google.Cloud.Iam.V1/2.0.0": { - "type": "package", - "dependencies": { - "Google.Api.Gax.Grpc.GrpcCore": "3.0.0", - "Grpc.Core": "2.27.0" - }, - "compile": { - "lib/netstandard2.0/Google.Cloud.Iam.V1.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Google.Cloud.Iam.V1.dll": { - "related": ".pdb;.xml" - } - } - }, - "Google.Cloud.Kms.V1/2.0.0": { - "type": "package", - "dependencies": { - "Google.Api.Gax.Grpc.GrpcCore": "3.0.0", - "Google.Cloud.Iam.V1": "2.0.0", - "Grpc.Core": "2.27.0" - }, - "compile": { - "lib/netstandard2.0/Google.Cloud.Kms.V1.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Google.Cloud.Kms.V1.dll": { - "related": ".pdb;.xml" - } - } - }, - "Google.Protobuf/3.11.4": { - "type": "package", - "dependencies": { - "System.Memory": "4.5.2" - }, - "compile": { - "lib/netstandard2.0/Google.Protobuf.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Google.Protobuf.dll": { - "related": ".pdb;.xml" - } - } - }, - "Grpc.Auth/2.27.0": { - "type": "package", - "dependencies": { - "Google.Apis.Auth": "1.21.0", - "Grpc.Core.Api": "2.27.0" - }, - "compile": { - "lib/netstandard2.0/Grpc.Auth.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Grpc.Auth.dll": { - "related": ".pdb;.xml" - } - } - }, - "Grpc.Core/2.27.0": { - "type": "package", - "dependencies": { - "Grpc.Core.Api": "2.27.0", - "System.Memory": "4.5.3" - }, - "compile": { - "lib/netstandard2.0/Grpc.Core.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Grpc.Core.dll": { - "related": ".pdb;.xml" - } - }, - "runtimeTargets": { - "runtimes/linux/native/libgrpc_csharp_ext.x64.so": { - "assetType": "native", - "rid": "linux" - }, - "runtimes/linux/native/libgrpc_csharp_ext.x86.so": { - "assetType": "native", - "rid": "linux" - }, - "runtimes/osx/native/libgrpc_csharp_ext.x64.dylib": { - "assetType": "native", - "rid": "osx" - }, - "runtimes/osx/native/libgrpc_csharp_ext.x86.dylib": { - "assetType": "native", - "rid": "osx" - }, - "runtimes/win/native/grpc_csharp_ext.x64.dll": { - "assetType": "native", - "rid": "win" - }, - "runtimes/win/native/grpc_csharp_ext.x86.dll": { - "assetType": "native", - "rid": "win" - } - } - }, - "Grpc.Core.Api/2.27.0": { - "type": "package", - "dependencies": { - "System.Memory": "4.5.3" - }, - "compile": { - "lib/netstandard2.0/Grpc.Core.Api.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Grpc.Core.Api.dll": { - "related": ".pdb;.xml" - } - } - }, - "Microsoft.AspNetCore.Hosting/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Hosting.Abstractions": "2.1.1", - "Microsoft.AspNetCore.Http": "2.1.1", - "Microsoft.AspNetCore.Http.Extensions": "2.1.1", - "Microsoft.Extensions.Configuration": "2.1.1", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "2.1.1", - "Microsoft.Extensions.Configuration.FileExtensions": "2.1.1", - "Microsoft.Extensions.DependencyInjection": "2.1.1", - "Microsoft.Extensions.FileProviders.Physical": "2.1.1", - "Microsoft.Extensions.Hosting.Abstractions": "2.1.1", - "Microsoft.Extensions.Logging": "2.1.1", - "Microsoft.Extensions.Options": "2.1.1", - "System.Diagnostics.DiagnosticSource": "4.5.0", - "System.Reflection.Metadata": "1.6.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Hosting.Abstractions/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.1.1", - "Microsoft.AspNetCore.Http.Abstractions": "2.1.1", - "Microsoft.Extensions.Hosting.Abstractions": "2.1.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.1.1", - "Microsoft.Extensions.Configuration.Abstractions": "2.1.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Hosting.WindowsServices/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Hosting": "2.1.1", - "System.ServiceProcess.ServiceController": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.WindowsServices.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.WindowsServices.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.1.1", - "Microsoft.AspNetCore.WebUtilities": "2.1.1", - "Microsoft.Extensions.ObjectPool": "2.1.1", - "Microsoft.Extensions.Options": "2.1.1", - "Microsoft.Net.Http.Headers": "2.1.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Abstractions/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.1.1", - "System.Text.Encodings.Web": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Extensions/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.1.1", - "Microsoft.Extensions.FileProviders.Abstractions": "2.1.1", - "Microsoft.Net.Http.Headers": "2.1.1", - "System.Buffers": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Features/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.WebUtilities/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.Net.Http.Headers": "2.1.1", - "System.Text.Encodings.Web": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Bcl.AsyncInterfaces/1.0.0": { - "type": "package", - "compile": { - "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {} - }, - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "related": ".xml" - } - } - }, - "Microsoft.CSharp/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.0/Microsoft.CSharp.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/Microsoft.CSharp.dll": {} - } - }, - "Microsoft.DotNet.PlatformAbstractions/2.0.4": { - "type": "package", - "dependencies": { - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.DotNet.PlatformAbstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.DotNet.PlatformAbstractions.dll": {} - } - }, - "Microsoft.Extensions.Configuration/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "2.1.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Configuration.Abstractions/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Configuration.Binder/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "2.1.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "2.1.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Configuration.FileExtensions/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "2.1.1", - "Microsoft.Extensions.FileProviders.Physical": "2.1.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.DependencyInjection/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.1" - }, - "compile": { - "lib/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/2.1.1": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.DependencyModel/2.0.4": { - "type": "package", - "dependencies": { - "Microsoft.DotNet.PlatformAbstractions": "2.0.4", - "Newtonsoft.Json": "9.0.1", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Linq": "4.1.0" - }, - "compile": { - "lib/netstandard1.6/Microsoft.Extensions.DependencyModel.dll": {} - }, - "runtime": { - "lib/netstandard1.6/Microsoft.Extensions.DependencyModel.dll": {} - } - }, - "Microsoft.Extensions.FileProviders.Abstractions/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.FileProviders.Physical/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "2.1.1", - "Microsoft.Extensions.FileSystemGlobbing": "2.1.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.FileSystemGlobbing/2.1.1": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Hosting.Abstractions/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "2.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.1", - "Microsoft.Extensions.FileProviders.Abstractions": "2.1.1", - "Microsoft.Extensions.Logging.Abstractions": "2.1.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Logging/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "2.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.1", - "Microsoft.Extensions.Logging.Abstractions": "2.1.1", - "Microsoft.Extensions.Options": "2.1.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Logging.Abstractions/2.1.1": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.ObjectPool/2.1.1": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Options/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.1", - "Microsoft.Extensions.Primitives": "2.1.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Options.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Options.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions/2.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "2.0.0", - "Microsoft.Extensions.Configuration.Binder": "2.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.0.0", - "Microsoft.Extensions.Options": "2.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Primitives/2.1.1": { - "type": "package", - "dependencies": { - "System.Memory": "4.5.1", - "System.Runtime.CompilerServices.Unsafe": "4.5.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Net.Http.Headers/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.1", - "System.Buffers": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll": { - "related": ".xml" - } - } - }, - "Microsoft.NETCore.Platforms/3.1.0": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.NETCore.Targets/1.1.0": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.Win32.Registry/4.5.0": { - "type": "package", - "dependencies": { - "System.Security.AccessControl": "4.5.0", - "System.Security.Principal.Windows": "4.5.0" - }, - "compile": { - "ref/netstandard2.0/_._": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Win32.Registry.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard2.0/Microsoft.Win32.Registry.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "Newtonsoft.Json/12.0.3": { - "type": "package", - "compile": { - "lib/netstandard2.0/Newtonsoft.Json.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Newtonsoft.Json.dll": { - "related": ".xml" - } - } - }, - "runtime.native.System/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Serilog/2.6.0": { - "type": "package", - "dependencies": { - "Microsoft.CSharp": "4.0.1", - "System.Collections": "4.0.11", - "System.Collections.NonGeneric": "4.0.1", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Serilog.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/Serilog.dll": { - "related": ".xml" - } - } - }, - "Serilog.AspNetCore/2.1.1": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Hosting.Abstractions": "2.0.0", - "Microsoft.Extensions.DependencyInjection": "2.0.0", - "Microsoft.Extensions.Logging": "2.0.0", - "Serilog": "2.5.0", - "Serilog.Extensions.Logging": "2.0.0" - }, - "compile": { - "lib/netstandard2.0/Serilog.AspNetCore.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Serilog.AspNetCore.dll": { - "related": ".xml" - } - } - }, - "Serilog.Extensions.Logging/2.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Logging": "2.0.0", - "Serilog": "2.3.0" - }, - "compile": { - "lib/netstandard2.0/Serilog.Extensions.Logging.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Serilog.Extensions.Logging.dll": { - "related": ".xml" - } - } - }, - "Serilog.Formatting.Compact/1.0.0": { - "type": "package", - "dependencies": { - "Serilog": "2.0.0" - }, - "compile": { - "lib/netstandard1.1/Serilog.Formatting.Compact.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.1/Serilog.Formatting.Compact.dll": { - "related": ".xml" - } - } - }, - "Serilog.Settings.Configuration/3.0.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyModel": "2.0.4", - "Microsoft.Extensions.Options.ConfigurationExtensions": "2.0.0", - "Serilog": "2.6.0" - }, - "compile": { - "lib/netstandard2.0/Serilog.Settings.Configuration.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Serilog.Settings.Configuration.dll": { - "related": ".xml" - } - } - }, - "Serilog.Sinks.Console/3.1.1": { - "type": "package", - "dependencies": { - "Serilog": "2.5.0", - "System.Console": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0" - }, - "compile": { - "lib/netcoreapp1.1/Serilog.Sinks.Console.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netcoreapp1.1/Serilog.Sinks.Console.dll": { - "related": ".xml" - } - } - }, - "Serilog.Sinks.EventLog/3.1.0": { - "type": "package", - "dependencies": { - "Serilog": "2.3.0", - "System.Diagnostics.EventLog": "4.5.0" - }, - "compile": { - "lib/netstandard2.0/Serilog.Sinks.EventLog.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Serilog.Sinks.EventLog.dll": { - "related": ".xml" - } - } - }, - "Serilog.Sinks.File/4.0.0": { - "type": "package", - "dependencies": { - "Serilog": "2.5.0", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Timer": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/Serilog.Sinks.File.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/Serilog.Sinks.File.dll": { - "related": ".xml" - } - } - }, - "System.AppContext/4.1.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.6/System.AppContext.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.6/System.AppContext.dll": {} - } - }, - "System.Buffers/4.5.0": { - "type": "package", - "compile": { - "ref/netcoreapp2.0/_._": {} - }, - "runtime": { - "lib/netcoreapp2.0/_._": {} - } - }, - "System.Collections/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Collections.dll": { - "related": ".xml" - } - } - }, - "System.Collections.NonGeneric/4.0.1": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Collections.NonGeneric.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Collections.NonGeneric.dll": {} - } - }, - "System.Console/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Console.dll": { - "related": ".xml" - } - } - }, - "System.Diagnostics.Debug/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.Debug.dll": { - "related": ".xml" - } - } - }, - "System.Diagnostics.DiagnosticSource/4.5.0": { - "type": "package", - "compile": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": { - "related": ".xml" - } - } - }, - "System.Diagnostics.EventLog/4.5.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.Win32.Registry": "4.5.0", - "System.Security.Permissions": "4.5.0", - "System.Security.Principal.Windows": "4.5.0", - "System.Threading.AccessControl": "4.5.0" - }, - "compile": { - "ref/netstandard2.0/System.Diagnostics.EventLog.dll": {} - }, - "runtime": { - "lib/netstandard2.0/System.Diagnostics.EventLog.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netcoreapp2.0/System.Diagnostics.EventLog.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Dynamic.Runtime/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Dynamic.Runtime.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Dynamic.Runtime.dll": {} - } - }, - "System.Globalization/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.dll": { - "related": ".xml" - } - } - }, - "System.IO/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.5/System.IO.dll": { - "related": ".xml" - } - } - }, - "System.IO.FileSystem/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.dll": { - "related": ".xml" - } - } - }, - "System.IO.FileSystem.AccessControl/4.7.0": { - "type": "package", - "dependencies": { - "System.Security.AccessControl": "4.7.0", - "System.Security.Principal.Windows": "4.7.0" - }, - "compile": { - "ref/netstandard2.0/System.IO.FileSystem.AccessControl.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.IO.FileSystem.AccessControl.dll": { - "related": ".xml" - } - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard2.0/System.IO.FileSystem.AccessControl.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.FileSystem.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} - } - }, - "System.Linq/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.6/System.Linq.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.6/System.Linq.dll": {} - } - }, - "System.Linq.Expressions/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Emit.Lightweight": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/System.Linq.Expressions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.6/System.Linq.Expressions.dll": {} - } - }, - "System.Memory/4.5.3": { - "type": "package", - "compile": { - "ref/netcoreapp2.1/_._": {} - }, - "runtime": { - "lib/netcoreapp2.1/_._": {} - } - }, - "System.ObjectModel/4.0.12": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.ObjectModel.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.ObjectModel.dll": {} - } - }, - "System.Reflection/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.dll": { - "related": ".xml" - } - } - }, - "System.Reflection.Emit/4.0.1": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.1/_._": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.dll": {} - } - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {} - } - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {} - } - }, - "System.Reflection.Extensions/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Extensions.dll": { - "related": ".xml" - } - } - }, - "System.Reflection.Metadata/1.6.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/System.Reflection.Metadata.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Reflection.Metadata.dll": { - "related": ".xml" - } - } - }, - "System.Reflection.Primitives/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Primitives.dll": { - "related": ".xml" - } - } - }, - "System.Reflection.TypeExtensions/4.1.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {} - } - }, - "System.Resources.ResourceManager/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/_._": { - "related": ".xml" - } - } - }, - "System.Runtime/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.dll": { - "related": ".xml" - } - } - }, - "System.Runtime.CompilerServices.Unsafe/4.5.1": { - "type": "package", - "compile": { - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll": { - "related": ".xml" - } - } - }, - "System.Runtime.Extensions/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.Extensions.dll": { - "related": ".xml" - } - } - }, - "System.Runtime.Handles/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Handles.dll": { - "related": ".xml" - } - } - }, - "System.Runtime.InteropServices/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - }, - "compile": { - "ref/netcoreapp1.1/System.Runtime.InteropServices.dll": {} - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtime": { - "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.AccessControl/4.7.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "3.1.0", - "System.Security.Principal.Windows": "4.7.0" - }, - "compile": { - "ref/netstandard2.0/System.Security.AccessControl.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Security.AccessControl.dll": { - "related": ".xml" - } - }, - "runtimeTargets": { - "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Permissions/4.5.0": { - "type": "package", - "dependencies": { - "System.Security.AccessControl": "4.5.0" - }, - "compile": { - "ref/netstandard2.0/System.Security.Permissions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Security.Permissions.dll": {} - } - }, - "System.Security.Principal.Windows/4.7.0": { - "type": "package", - "compile": { - "ref/netcoreapp3.0/System.Security.Principal.Windows.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Security.Principal.Windows.dll": { - "related": ".xml" - } - }, - "runtimeTargets": { - "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.ServiceProcess.ServiceController/4.5.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.EventLog": "4.5.0" - }, - "compile": { - "ref/netstandard2.0/System.ServiceProcess.ServiceController.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.ServiceProcess.ServiceController.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard2.0/System.ServiceProcess.ServiceController.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Text.Encoding/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.dll": { - "related": ".xml" - } - } - }, - "System.Text.Encoding.Extensions/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": { - "related": ".xml" - } - } - }, - "System.Text.Encodings.Web/4.5.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - } - }, - "System.Text.RegularExpressions/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/System.Text.RegularExpressions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.6/System.Text.RegularExpressions.dll": {} - } - }, - "System.Threading/4.3.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Threading.dll": {} - } - }, - "System.Threading.AccessControl/4.5.0": { - "type": "package", - "dependencies": { - "System.Security.AccessControl": "4.5.0", - "System.Security.Principal.Windows": "4.5.0" - }, - "compile": { - "ref/netstandard2.0/_._": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Threading.AccessControl.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard2.0/System.Threading.AccessControl.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Threading.Tasks/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Tasks.dll": { - "related": ".xml" - } - } - }, - "System.Threading.Timer/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.2/System.Threading.Timer.dll": { - "related": ".xml" - } - } - }, - "ClassLibrary1/1.0.0": { - "type": "project", - "framework": ".NETStandard,Version=v2.0", - "dependencies": { - "Microsoft.AspNetCore.Hosting": "2.1.0", - "Newtonsoft.Json": "12.0.3", - "Serilog.AspNetCore": "2.1.1", - "Serilog.Formatting.Compact": "1.0.0", - "Serilog.Settings.Configuration": "3.0.1", - "Serilog.Sinks.Console": "3.1.1", - "Serilog.Sinks.EventLog": "3.1.0", - "Serilog.Sinks.File": "4.0.0", - "System.IO.FileSystem.AccessControl": "4.7.0" - }, - "compile": { - "bin/placeholder/ClassLibrary1.dll": {} - }, - "runtime": { - "bin/placeholder/ClassLibrary1.dll": {} - } - } - } - }, - "libraries": { - "BouncyCastle/1.8.9": { - "sha512": "axnBgvdD5n+FnEG6efk/tfKuMFru7R/EoISH9zjh319yb3HD24TEHSAbNN/lTRT2ulOGRxDgOsCjkuk08iwWPg==", - "type": "package", - "path": "bouncycastle/1.8.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "bouncycastle.1.8.9.nupkg.sha512", - "bouncycastle.nuspec", - "lib/BouncyCastle.Crypto.dll" - ] - }, - "Google.Api.CommonProtos/2.0.0": { - "sha512": "GE3RbDXpPrzaVk1ubaD8b1EpvEYz/MPBUzg0poUcMJa1EKLkkblK5X6ysg6dlXfiNCE/W6VJ13ABtB89UQ2A8g==", - "type": "package", - "path": "google.api.commonprotos/2.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE", - "NuGetIcon.png", - "google.api.commonprotos.2.0.0.nupkg.sha512", - "google.api.commonprotos.nuspec", - "lib/net461/Google.Api.CommonProtos.dll", - "lib/net461/Google.Api.CommonProtos.pdb", - "lib/net461/Google.Api.CommonProtos.xml", - "lib/netstandard2.0/Google.Api.CommonProtos.dll", - "lib/netstandard2.0/Google.Api.CommonProtos.pdb", - "lib/netstandard2.0/Google.Api.CommonProtos.xml" - ] - }, - "Google.Api.Gax/3.0.0": { - "sha512": "jDXWaxeOjzUmaFBtEaGuWZmIl6CkR3yRrFuiMPFL9YNR6TWA4EZXl9K8mxae1fi7Z7H0j1CRfyAt2iZlomk9bw==", - "type": "package", - "path": "google.api.gax/3.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE", - "NuGetIcon.png", - "google.api.gax.3.0.0.nupkg.sha512", - "google.api.gax.nuspec", - "lib/net461/Google.Api.Gax.dll", - "lib/net461/Google.Api.Gax.pdb", - "lib/net461/Google.Api.Gax.xml", - "lib/netstandard2.0/Google.Api.Gax.dll", - "lib/netstandard2.0/Google.Api.Gax.pdb", - "lib/netstandard2.0/Google.Api.Gax.xml" - ] - }, - "Google.Api.Gax.Grpc/3.0.0": { - "sha512": "CW2AdT0X6zECEIGKQyu+kgpYxnxoigaa/9wm0FqVlYexGsjvajJXA16yHQPC1Q8qWE5PBs3sbh3qwksU0pUwzg==", - "type": "package", - "path": "google.api.gax.grpc/3.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE", - "NuGetIcon.png", - "google.api.gax.grpc.3.0.0.nupkg.sha512", - "google.api.gax.grpc.nuspec", - "lib/net461/Google.Api.Gax.Grpc.dll", - "lib/net461/Google.Api.Gax.Grpc.pdb", - "lib/net461/Google.Api.Gax.Grpc.xml", - "lib/netstandard2.0/Google.Api.Gax.Grpc.dll", - "lib/netstandard2.0/Google.Api.Gax.Grpc.pdb", - "lib/netstandard2.0/Google.Api.Gax.Grpc.xml" - ] - }, - "Google.Api.Gax.Grpc.GrpcCore/3.0.0": { - "sha512": "yDekiUKDsELhogc/AXG3D0UWWBGcf7l9FxgglN1xC75lNYFjLWVdKfi+bDKquqyvJUASUkJu2n27vuKE7nAWmQ==", - "type": "package", - "path": "google.api.gax.grpc.grpccore/3.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE", - "NuGetIcon.png", - "google.api.gax.grpc.grpccore.3.0.0.nupkg.sha512", - "google.api.gax.grpc.grpccore.nuspec", - "lib/net461/Google.Api.Gax.Grpc.GrpcCore.dll", - "lib/net461/Google.Api.Gax.Grpc.GrpcCore.pdb", - "lib/net461/Google.Api.Gax.Grpc.GrpcCore.xml", - "lib/netstandard2.0/Google.Api.Gax.Grpc.GrpcCore.dll", - "lib/netstandard2.0/Google.Api.Gax.Grpc.GrpcCore.pdb", - "lib/netstandard2.0/Google.Api.Gax.Grpc.GrpcCore.xml" - ] - }, - "Google.Apis/1.44.1": { - "sha512": "5l8vy1bwhuKDuE4Uku8qz2YnLaDhK1YJBGqzohx3MiaXyTucZWutovpEGYkvo6014rKUHa4hWDDuPxBJs/yxpA==", - "type": "package", - "path": "google.apis/1.44.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE", - "NuGetIcon.png", - "google.apis.1.44.1.nupkg.sha512", - "google.apis.nuspec", - "lib/net45/Google.Apis.PlatformServices.dll", - "lib/net45/Google.Apis.dll", - "lib/net45/Google.Apis.pdb", - "lib/net45/Google.Apis.xml", - "lib/netstandard1.3/Google.Apis.dll", - "lib/netstandard1.3/Google.Apis.pdb", - "lib/netstandard1.3/Google.Apis.xml", - "lib/netstandard2.0/Google.Apis.dll", - "lib/netstandard2.0/Google.Apis.pdb", - "lib/netstandard2.0/Google.Apis.xml" - ] - }, - "Google.Apis.Auth/1.44.1": { - "sha512": "5gIhSOw362+daGBT2YgElpQUWgLERsKOS7k8d2FzIxi6wXTpeu7ov5kT4fWrnoX4fUJ+ibxqTfhmEY8UThCxyA==", - "type": "package", - "path": "google.apis.auth/1.44.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE", - "NuGetIcon.png", - "google.apis.auth.1.44.1.nupkg.sha512", - "google.apis.auth.nuspec", - "lib/net45/Google.Apis.Auth.PlatformServices.dll", - "lib/net45/Google.Apis.Auth.dll", - "lib/net45/Google.Apis.Auth.pdb", - "lib/net45/Google.Apis.Auth.xml", - "lib/netstandard1.3/Google.Apis.Auth.PlatformServices.dll", - "lib/netstandard1.3/Google.Apis.Auth.dll", - "lib/netstandard1.3/Google.Apis.Auth.pdb", - "lib/netstandard1.3/Google.Apis.Auth.xml", - "lib/netstandard2.0/Google.Apis.Auth.PlatformServices.dll", - "lib/netstandard2.0/Google.Apis.Auth.dll", - "lib/netstandard2.0/Google.Apis.Auth.pdb", - "lib/netstandard2.0/Google.Apis.Auth.xml" - ] - }, - "Google.Apis.Core/1.44.1": { - "sha512": "VjN2tpE5++8xRjBcHgXuW7HoxgvPYoAsONj6ekq1Uv20TaC3aDsw+1tVCt1M60pO4mK0vnoZAxupb49B308+0Q==", - "type": "package", - "path": "google.apis.core/1.44.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE", - "NuGetIcon.png", - "google.apis.core.1.44.1.nupkg.sha512", - "google.apis.core.nuspec", - "lib/net45/Google.Apis.Core.dll", - "lib/net45/Google.Apis.Core.pdb", - "lib/net45/Google.Apis.Core.xml", - "lib/netstandard1.3/Google.Apis.Core.dll", - "lib/netstandard1.3/Google.Apis.Core.pdb", - "lib/netstandard1.3/Google.Apis.Core.xml", - "lib/netstandard2.0/Google.Apis.Core.dll", - "lib/netstandard2.0/Google.Apis.Core.pdb", - "lib/netstandard2.0/Google.Apis.Core.xml" - ] - }, - "Google.Cloud.Iam.V1/2.0.0": { - "sha512": "qn2TgZ9vBDQxTUVmqIo5NHz9Y3+cdAtK7TjQc3KXb+uZOnkZBQTppFR/tDs4g7BOCG28grCBRqXGSQPMNR2ELw==", - "type": "package", - "path": "google.cloud.iam.v1/2.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE", - "NuGetIcon.png", - "google.cloud.iam.v1.2.0.0.nupkg.sha512", - "google.cloud.iam.v1.nuspec", - "lib/net461/Google.Cloud.Iam.V1.dll", - "lib/net461/Google.Cloud.Iam.V1.pdb", - "lib/net461/Google.Cloud.Iam.V1.xml", - "lib/netstandard2.0/Google.Cloud.Iam.V1.dll", - "lib/netstandard2.0/Google.Cloud.Iam.V1.pdb", - "lib/netstandard2.0/Google.Cloud.Iam.V1.xml" - ] - }, - "Google.Cloud.Kms.V1/2.0.0": { - "sha512": "Ts+UqT80jgyjQgpLVzvD38aTa+8GAbObOK4eIn/GfF6fjBqGup08QeDOVIw9jbC63Bpv+wydOVOfwS+VgEiVgg==", - "type": "package", - "path": "google.cloud.kms.v1/2.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE", - "NuGetIcon.png", - "google.cloud.kms.v1.2.0.0.nupkg.sha512", - "google.cloud.kms.v1.nuspec", - "lib/net461/Google.Cloud.Kms.V1.dll", - "lib/net461/Google.Cloud.Kms.V1.pdb", - "lib/net461/Google.Cloud.Kms.V1.xml", - "lib/netstandard2.0/Google.Cloud.Kms.V1.dll", - "lib/netstandard2.0/Google.Cloud.Kms.V1.pdb", - "lib/netstandard2.0/Google.Cloud.Kms.V1.xml" - ] - }, - "Google.Protobuf/3.11.4": { - "sha512": "dajCxjDCiPyZuqwZCkFJTwhn/0TJ5VesIs4fXvs56ez1VUi68JjhYMMsPjnJ9gcPqJwTMtXMU1WqUdXYiG1x4w==", - "type": "package", - "path": "google.protobuf/3.11.4", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "google.protobuf.3.11.4.nupkg.sha512", - "google.protobuf.nuspec", - "lib/net45/Google.Protobuf.dll", - "lib/net45/Google.Protobuf.pdb", - "lib/net45/Google.Protobuf.xml", - "lib/netstandard1.0/Google.Protobuf.dll", - "lib/netstandard1.0/Google.Protobuf.pdb", - "lib/netstandard1.0/Google.Protobuf.xml", - "lib/netstandard2.0/Google.Protobuf.dll", - "lib/netstandard2.0/Google.Protobuf.pdb", - "lib/netstandard2.0/Google.Protobuf.xml" - ] - }, - "Grpc.Auth/2.27.0": { - "sha512": "fp0NUZUTJ1Jb5Zz9z/1FDyF2E5PS2S2I8SD90Il6rZW5V2A+1bHtYziF8b3xrLmqlNaukZ4yIhJP+7Igi3Himw==", - "type": "package", - "path": "grpc.auth/2.27.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "grpc.auth.2.27.0.nupkg.sha512", - "grpc.auth.nuspec", - "lib/net45/Grpc.Auth.dll", - "lib/net45/Grpc.Auth.pdb", - "lib/net45/Grpc.Auth.xml", - "lib/netstandard1.5/Grpc.Auth.dll", - "lib/netstandard1.5/Grpc.Auth.pdb", - "lib/netstandard1.5/Grpc.Auth.xml", - "lib/netstandard2.0/Grpc.Auth.dll", - "lib/netstandard2.0/Grpc.Auth.pdb", - "lib/netstandard2.0/Grpc.Auth.xml" - ] - }, - "Grpc.Core/2.27.0": { - "sha512": "iNWowSeJvGCkFwKxpJmhpRBrgAJ0kB+iwyZ0b0z2w1hCqs2ho02699TmDn6IwCgJrTfXtYnsBVevD+gKprmbug==", - "type": "package", - "path": "grpc.core/2.27.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "build/MonoAndroid10/Grpc.Core.targets", - "build/Xamarin.iOS10/Grpc.Core.targets", - "build/net45/Grpc.Core.targets", - "grpc.core.2.27.0.nupkg.sha512", - "grpc.core.nuspec", - "lib/net45/Grpc.Core.dll", - "lib/net45/Grpc.Core.pdb", - "lib/net45/Grpc.Core.xml", - "lib/netstandard1.5/Grpc.Core.dll", - "lib/netstandard1.5/Grpc.Core.pdb", - "lib/netstandard1.5/Grpc.Core.xml", - "lib/netstandard2.0/Grpc.Core.dll", - "lib/netstandard2.0/Grpc.Core.pdb", - "lib/netstandard2.0/Grpc.Core.xml", - "native/android/arm64-v8a/libgrpc_csharp_ext.so", - "native/android/armeabi-v7a/libgrpc_csharp_ext.so", - "native/android/x86/libgrpc_csharp_ext.so", - "native/ios/universal/libgrpc.a", - "native/ios/universal/libgrpc_csharp_ext.a", - "runtimes/linux/native/libgrpc_csharp_ext.x64.so", - "runtimes/linux/native/libgrpc_csharp_ext.x86.so", - "runtimes/osx/native/libgrpc_csharp_ext.x64.dylib", - "runtimes/osx/native/libgrpc_csharp_ext.x86.dylib", - "runtimes/win/native/grpc_csharp_ext.x64.dll", - "runtimes/win/native/grpc_csharp_ext.x86.dll" - ] - }, - "Grpc.Core.Api/2.27.0": { - "sha512": "UAHXfV+n6TEMCybML7V+1qWP7G9byGXUE2mtATWpctP7xB8P5J++iYMuyxrprKkC36X/QuUwHJmHpBxlDHzF2g==", - "type": "package", - "path": "grpc.core.api/2.27.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "grpc.core.api.2.27.0.nupkg.sha512", - "grpc.core.api.nuspec", - "lib/net45/Grpc.Core.Api.dll", - "lib/net45/Grpc.Core.Api.pdb", - "lib/net45/Grpc.Core.Api.xml", - "lib/netstandard1.5/Grpc.Core.Api.dll", - "lib/netstandard1.5/Grpc.Core.Api.pdb", - "lib/netstandard1.5/Grpc.Core.Api.xml", - "lib/netstandard2.0/Grpc.Core.Api.dll", - "lib/netstandard2.0/Grpc.Core.Api.pdb", - "lib/netstandard2.0/Grpc.Core.Api.xml" - ] - }, - "Microsoft.AspNetCore.Hosting/2.1.1": { - "sha512": "MqYc0DUxrhAPnb5b4HFspxsoJT+gJlLsliSxIgovf4BsbmpaXQId0/pDiVzLuEbmks2w1/lRfY8w0lQOuK1jQQ==", - "type": "package", - "path": "microsoft.aspnetcore.hosting/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.xml", - "microsoft.aspnetcore.hosting.2.1.1.nupkg.sha512", - "microsoft.aspnetcore.hosting.nuspec" - ] - }, - "Microsoft.AspNetCore.Hosting.Abstractions/2.1.1": { - "sha512": "76cKcp2pWhvdV2TXTqMg/DyW7N6cDzTEhtL8vVWFShQN+Ylwv3eO/vUQr2BS3Hz4IZHEpL+FOo2T+MtymHDqDQ==", - "type": "package", - "path": "microsoft.aspnetcore.hosting.abstractions/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.xml", - "microsoft.aspnetcore.hosting.abstractions.2.1.1.nupkg.sha512", - "microsoft.aspnetcore.hosting.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.1.1": { - "sha512": "+vD7HJYzAXNq17t+NgRkpS38cxuAyOBu8ixruOiA3nWsybozolUdALWiZ5QFtGRzajSLPFA2YsbO3NPcqoUwcw==", - "type": "package", - "path": "microsoft.aspnetcore.hosting.server.abstractions/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.xml", - "microsoft.aspnetcore.hosting.server.abstractions.2.1.1.nupkg.sha512", - "microsoft.aspnetcore.hosting.server.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.Hosting.WindowsServices/2.1.1": { - "sha512": "ae6V0WumOuXRGIiuePlqo2YovCa7yucAUneq8Drm39R6t47jY8TbQ5hzeGQ5RQCwr0cXmZ2bwpxeVEkVziDI+A==", - "type": "package", - "path": "microsoft.aspnetcore.hosting.windowsservices/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net461/Microsoft.AspNetCore.Hosting.WindowsServices.dll", - "lib/net461/Microsoft.AspNetCore.Hosting.WindowsServices.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.WindowsServices.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.WindowsServices.xml", - "microsoft.aspnetcore.hosting.windowsservices.2.1.1.nupkg.sha512", - "microsoft.aspnetcore.hosting.windowsservices.nuspec" - ] - }, - "Microsoft.AspNetCore.Http/2.1.1": { - "sha512": "pPDcCW8spnyibK3krpxrOpaFHf5fjV6k1Hsl6gfh77N/8gRYlLU7MOQDUnjpEwdlHmtxwJKQJNxZqVQOmJGRUw==", - "type": "package", - "path": "microsoft.aspnetcore.http/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.xml", - "microsoft.aspnetcore.http.2.1.1.nupkg.sha512", - "microsoft.aspnetcore.http.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Abstractions/2.1.1": { - "sha512": "kQUEVOU4loc8CPSb2WoHFTESqwIa8Ik7ysCBfTwzHAd0moWovc9JQLmhDIHlYLjHbyexqZAlkq/FPRUZqokebw==", - "type": "package", - "path": "microsoft.aspnetcore.http.abstractions/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.xml", - "microsoft.aspnetcore.http.abstractions.2.1.1.nupkg.sha512", - "microsoft.aspnetcore.http.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Extensions/2.1.1": { - "sha512": "ncAgV+cqsWSqjLXFUTyObGh4Tr7ShYYs3uW8Q/YpRwZn7eLV7dux5Z6GLY+rsdzmIHiia3Q2NWbLULQi7aziHw==", - "type": "package", - "path": "microsoft.aspnetcore.http.extensions/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.xml", - "microsoft.aspnetcore.http.extensions.2.1.1.nupkg.sha512", - "microsoft.aspnetcore.http.extensions.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Features/2.1.1": { - "sha512": "VklZ7hWgSvHBcDtwYYkdMdI/adlf7ebxTZ9kdzAhX+gUs5jSHE9mZlTamdgf9miSsxc1QjNazHXTDJdVPZKKTw==", - "type": "package", - "path": "microsoft.aspnetcore.http.features/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.xml", - "microsoft.aspnetcore.http.features.2.1.1.nupkg.sha512", - "microsoft.aspnetcore.http.features.nuspec" - ] - }, - "Microsoft.AspNetCore.WebUtilities/2.1.1": { - "sha512": "PGKIZt4+412Z/XPoSjvYu/QIbTxcAQuEFNoA1Pw8a9mgmO0ZhNBmfaNyhgXFf7Rq62kP0tT/2WXpxdcQhkFUPA==", - "type": "package", - "path": "microsoft.aspnetcore.webutilities/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.xml", - "microsoft.aspnetcore.webutilities.2.1.1.nupkg.sha512", - "microsoft.aspnetcore.webutilities.nuspec" - ] - }, - "Microsoft.Bcl.AsyncInterfaces/1.0.0": { - "sha512": "K63Y4hORbBcKLWH5wnKgzyn7TOfYzevIEwIedQHBIkmkEBA9SCqgvom+XTuE+fAFGvINGkhFItaZ2dvMGdT5iw==", - "type": "package", - "path": "microsoft.bcl.asyncinterfaces/1.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/net461/Microsoft.Bcl.AsyncInterfaces.xml", - "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", - "microsoft.bcl.asyncinterfaces.1.0.0.nupkg.sha512", - "microsoft.bcl.asyncinterfaces.nuspec", - "ref/net461/Microsoft.Bcl.AsyncInterfaces.dll", - "ref/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", - "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Microsoft.CSharp/4.0.1": { - "sha512": "17h8b5mXa87XYKrrVqdgZ38JefSUqLChUQpXgSnpzsM0nDOhE40FTeNWOJ/YmySGV6tG6T8+hjz6vxbknHJr6A==", - "type": "package", - "path": "microsoft.csharp/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/Microsoft.CSharp.dll", - "lib/netstandard1.3/Microsoft.CSharp.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "microsoft.csharp.4.0.1.nupkg.sha512", - "microsoft.csharp.nuspec", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/Microsoft.CSharp.dll", - "ref/netcore50/Microsoft.CSharp.xml", - "ref/netcore50/de/Microsoft.CSharp.xml", - "ref/netcore50/es/Microsoft.CSharp.xml", - "ref/netcore50/fr/Microsoft.CSharp.xml", - "ref/netcore50/it/Microsoft.CSharp.xml", - "ref/netcore50/ja/Microsoft.CSharp.xml", - "ref/netcore50/ko/Microsoft.CSharp.xml", - "ref/netcore50/ru/Microsoft.CSharp.xml", - "ref/netcore50/zh-hans/Microsoft.CSharp.xml", - "ref/netcore50/zh-hant/Microsoft.CSharp.xml", - "ref/netstandard1.0/Microsoft.CSharp.dll", - "ref/netstandard1.0/Microsoft.CSharp.xml", - "ref/netstandard1.0/de/Microsoft.CSharp.xml", - "ref/netstandard1.0/es/Microsoft.CSharp.xml", - "ref/netstandard1.0/fr/Microsoft.CSharp.xml", - "ref/netstandard1.0/it/Microsoft.CSharp.xml", - "ref/netstandard1.0/ja/Microsoft.CSharp.xml", - "ref/netstandard1.0/ko/Microsoft.CSharp.xml", - "ref/netstandard1.0/ru/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "Microsoft.DotNet.PlatformAbstractions/2.0.4": { - "sha512": "2HjSGp63VCLQaeGadrLYR868g25mJHr+TFF81yWCaClzjUbU2vNDx6km7SUgPnoLVksE/1e7in88eh+oPtc4aQ==", - "type": "package", - "path": "microsoft.dotnet.platformabstractions/2.0.4", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net45/Microsoft.DotNet.PlatformAbstractions.dll", - "lib/netstandard1.3/Microsoft.DotNet.PlatformAbstractions.dll", - "microsoft.dotnet.platformabstractions.2.0.4.nupkg.sha512", - "microsoft.dotnet.platformabstractions.nuspec" - ] - }, - "Microsoft.Extensions.Configuration/2.1.1": { - "sha512": "LjVKO6P2y52c5ZhTLX/w8zc5H4Y3J/LJsgqTBj49TtFq/hAtVNue/WA0F6/7GMY90xhD7K0MDZ4qpOeWXbLvzg==", - "type": "package", - "path": "microsoft.extensions.configuration/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", - "microsoft.extensions.configuration.2.1.1.nupkg.sha512", - "microsoft.extensions.configuration.nuspec" - ] - }, - "Microsoft.Extensions.Configuration.Abstractions/2.1.1": { - "sha512": "VfuZJNa0WUshZ/+8BFZAhwFKiKuu/qOUCFntfdLpHj7vcRnsGHqd3G2Hse78DM+pgozczGM63lGPRLmy+uhUOA==", - "type": "package", - "path": "microsoft.extensions.configuration.abstractions/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "microsoft.extensions.configuration.abstractions.2.1.1.nupkg.sha512", - "microsoft.extensions.configuration.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.Configuration.Binder/2.1.1": { - "sha512": "fcLCTS03poWE4v9tSNBr3pWn0QwGgAn1vzqHXlXgvqZeOc7LvQNzaWcKRQZTdEc3+YhQKwMsOtm3VKSA2aWQ8w==", - "type": "package", - "path": "microsoft.extensions.configuration.binder/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml", - "microsoft.extensions.configuration.binder.2.1.1.nupkg.sha512", - "microsoft.extensions.configuration.binder.nuspec" - ] - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables/2.1.1": { - "sha512": "6xMxFIfKL+7J/jwlk8zV8I61sF3+DRG19iKQxnSfYQU+iMMjGbcWNCHFF/3MHf3o4sTZPZ8D6Io+GwKFc3TIZA==", - "type": "package", - "path": "microsoft.extensions.configuration.environmentvariables/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", - "microsoft.extensions.configuration.environmentvariables.2.1.1.nupkg.sha512", - "microsoft.extensions.configuration.environmentvariables.nuspec" - ] - }, - "Microsoft.Extensions.Configuration.FileExtensions/2.1.1": { - "sha512": "CDk5CwG0YzlRgvl65J0iK6ahrX12yMRrEat3yVTXjWC+GN9Jg9zHZu2IE4cQIPAMA/IiAI5KjgL08fhP3fPCkw==", - "type": "package", - "path": "microsoft.extensions.configuration.fileextensions/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.xml", - "microsoft.extensions.configuration.fileextensions.2.1.1.nupkg.sha512", - "microsoft.extensions.configuration.fileextensions.nuspec" - ] - }, - "Microsoft.Extensions.DependencyInjection/2.1.1": { - "sha512": "RVdgNWT/73M0eCpreGpWv5NmbHFGQzzW+G7nChK8ej84m+d1nzeWrtqcRYnEpKNx3B8V/Uek4tNP0WCaCNjYnQ==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net461/Microsoft.Extensions.DependencyInjection.dll", - "lib/net461/Microsoft.Extensions.DependencyInjection.xml", - "lib/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", - "microsoft.extensions.dependencyinjection.2.1.1.nupkg.sha512", - "microsoft.extensions.dependencyinjection.nuspec" - ] - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/2.1.1": { - "sha512": "MgYpU5cwZohUMKKg3sbPhvGG+eAZ/59E9UwPwlrUkyXU+PGzqwZg9yyQNjhxuAWmoNoFReoemeCku50prYSGzA==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection.abstractions/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "microsoft.extensions.dependencyinjection.abstractions.2.1.1.nupkg.sha512", - "microsoft.extensions.dependencyinjection.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.DependencyModel/2.0.4": { - "sha512": "jnHAeijsfJFQXdXmnYK/NhQIkgBUeth//RZZkf0ldIKC+jARbf7YxbA9uTrs/EPhuQxHXaDxVuMyscgmL+UqfA==", - "type": "package", - "path": "microsoft.extensions.dependencymodel/2.0.4", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net451/Microsoft.Extensions.DependencyModel.dll", - "lib/netstandard1.3/Microsoft.Extensions.DependencyModel.dll", - "lib/netstandard1.6/Microsoft.Extensions.DependencyModel.dll", - "microsoft.extensions.dependencymodel.2.0.4.nupkg.sha512", - "microsoft.extensions.dependencymodel.nuspec" - ] - }, - "Microsoft.Extensions.FileProviders.Abstractions/2.1.1": { - "sha512": "UEQB5/QPuLYaCvScZQ9llhcks5xyEUKh41D615FoehRAF9UgGVmXHcCSOH8idHHLRoKm+OJJjEy1oywvuaL33w==", - "type": "package", - "path": "microsoft.extensions.fileproviders.abstractions/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.xml", - "microsoft.extensions.fileproviders.abstractions.2.1.1.nupkg.sha512", - "microsoft.extensions.fileproviders.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.FileProviders.Physical/2.1.1": { - "sha512": "kVCvLm1ePchUgRrQZrno07Mn6knDAzR7vl6eRaI/fem0u6ODg+RTwOYLs4XL39Ttuu+BzEwqzHu3DtDgXT8+vQ==", - "type": "package", - "path": "microsoft.extensions.fileproviders.physical/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll", - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.xml", - "microsoft.extensions.fileproviders.physical.2.1.1.nupkg.sha512", - "microsoft.extensions.fileproviders.physical.nuspec" - ] - }, - "Microsoft.Extensions.FileSystemGlobbing/2.1.1": { - "sha512": "4QDzyCN8cJnThY6mK9SnzovyCZ8KCG9jmC9KqHfFGtazJvmNZP1gcyBkPmqMjP0qwbmEUUyqyA9LLn3FrYXTGw==", - "type": "package", - "path": "microsoft.extensions.filesystemglobbing/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll", - "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.xml", - "microsoft.extensions.filesystemglobbing.2.1.1.nupkg.sha512", - "microsoft.extensions.filesystemglobbing.nuspec" - ] - }, - "Microsoft.Extensions.Hosting.Abstractions/2.1.1": { - "sha512": "kVVdHnOFJbcXxgZzrT6nwkrWZTHL+47LT59S9J2Jp0BNO3EQWNEZHUUZMb/kKFV7LtW+bp+EuAOPNUqEcqI++Q==", - "type": "package", - "path": "microsoft.extensions.hosting.abstractions/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.xml", - "microsoft.extensions.hosting.abstractions.2.1.1.nupkg.sha512", - "microsoft.extensions.hosting.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.Logging/2.1.1": { - "sha512": "hh+mkOAQDTp6XH80xJt3+wwYVzkbwYQl9XZRCz4Um0JjP/o7N9vHM3rZ6wwwtr+BBe/L6iBO2sz0px6OWBzqZQ==", - "type": "package", - "path": "microsoft.extensions.logging/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", - "microsoft.extensions.logging.2.1.1.nupkg.sha512", - "microsoft.extensions.logging.nuspec" - ] - }, - "Microsoft.Extensions.Logging.Abstractions/2.1.1": { - "sha512": "XRzK7ZF+O6FzdfWrlFTi1Rgj2080ZDsd46vzOjadHUB0Cz5kOvDG8vI7caa5YFrsHQpcfn0DxtjS4E46N4FZsA==", - "type": "package", - "path": "microsoft.extensions.logging.abstractions/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", - "microsoft.extensions.logging.abstractions.2.1.1.nupkg.sha512", - "microsoft.extensions.logging.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.ObjectPool/2.1.1": { - "sha512": "SErON45qh4ogDp6lr6UvVmFYW0FERihW+IQ+2JyFv1PUyWktcJytFaWH5zarufJvZwhci7Rf1IyGXr9pVEadTw==", - "type": "package", - "path": "microsoft.extensions.objectpool/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll", - "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.xml", - "microsoft.extensions.objectpool.2.1.1.nupkg.sha512", - "microsoft.extensions.objectpool.nuspec" - ] - }, - "Microsoft.Extensions.Options/2.1.1": { - "sha512": "V7lXCU78lAbzaulCGFKojcCyG8RTJicEbiBkPJjFqiqXwndEBBIehdXRMWEVU3UtzQ1yDvphiWUL9th6/4gJ7w==", - "type": "package", - "path": "microsoft.extensions.options/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Options.dll", - "lib/netstandard2.0/Microsoft.Extensions.Options.xml", - "microsoft.extensions.options.2.1.1.nupkg.sha512", - "microsoft.extensions.options.nuspec" - ] - }, - "Microsoft.Extensions.Options.ConfigurationExtensions/2.0.0": { - "sha512": "Y/lGICwO27fCkQRK3tZseVzFjZaxfGmui990E67sB4MuiPzdJHnJDS/BeYWrHShSSBgCl4KyKRx4ux686fftPg==", - "type": "package", - "path": "microsoft.extensions.options.configurationextensions/2.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", - "microsoft.extensions.options.configurationextensions.2.0.0.nupkg.sha512", - "microsoft.extensions.options.configurationextensions.nuspec" - ] - }, - "Microsoft.Extensions.Primitives/2.1.1": { - "sha512": "scJ1GZNIxMmjpENh0UZ8XCQ6vzr/LzeF9WvEA51Ix2OQGAs9WPgPu8ABVUdvpKPLuor/t05gm6menJK3PwqOXg==", - "type": "package", - "path": "microsoft.extensions.primitives/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", - "microsoft.extensions.primitives.2.1.1.nupkg.sha512", - "microsoft.extensions.primitives.nuspec" - ] - }, - "Microsoft.Net.Http.Headers/2.1.1": { - "sha512": "lPNIphl8b2EuhOE9dMH6EZDmu7pS882O+HMi5BJNsigxHaWlBrYxZHFZgE18cyaPp6SSZcTkKkuzfjV/RRQKlA==", - "type": "package", - "path": "microsoft.net.http.headers/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll", - "lib/netstandard2.0/Microsoft.Net.Http.Headers.xml", - "microsoft.net.http.headers.2.1.1.nupkg.sha512", - "microsoft.net.http.headers.nuspec" - ] - }, - "Microsoft.NETCore.Platforms/3.1.0": { - "sha512": "z7aeg8oHln2CuNulfhiLYxCVMPEwBl3rzicjvIX+4sUuCwvXw5oXQEtbiU2c0z4qYL5L3Kmx0mMA/+t/SbY67w==", - "type": "package", - "path": "microsoft.netcore.platforms/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netstandard1.0/_._", - "microsoft.netcore.platforms.3.1.0.nupkg.sha512", - "microsoft.netcore.platforms.nuspec", - "runtime.json", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Microsoft.NETCore.Targets/1.1.0": { - "sha512": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", - "type": "package", - "path": "microsoft.netcore.targets/1.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "microsoft.netcore.targets.1.1.0.nupkg.sha512", - "microsoft.netcore.targets.nuspec", - "runtime.json" - ] - }, - "Microsoft.Win32.Registry/4.5.0": { - "sha512": "+FWlwd//+Tt56316p00hVePBCouXyEzT86Jb3+AuRotTND0IYn0OO3obs1gnQEs/txEnt+rF2JBGLItTG+Be6A==", - "type": "package", - "path": "microsoft.win32.registry/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net46/Microsoft.Win32.Registry.dll", - "lib/net461/Microsoft.Win32.Registry.dll", - "lib/netstandard1.3/Microsoft.Win32.Registry.dll", - "lib/netstandard2.0/Microsoft.Win32.Registry.dll", - "microsoft.win32.registry.4.5.0.nupkg.sha512", - "microsoft.win32.registry.nuspec", - "ref/net46/Microsoft.Win32.Registry.dll", - "ref/net461/Microsoft.Win32.Registry.dll", - "ref/net461/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/Microsoft.Win32.Registry.dll", - "ref/netstandard1.3/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml", - "ref/netstandard2.0/Microsoft.Win32.Registry.dll", - "ref/netstandard2.0/Microsoft.Win32.Registry.xml", - "runtimes/unix/lib/netstandard2.0/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/net46/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/net461/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Newtonsoft.Json/12.0.3": { - "sha512": "6mgjfnRB4jKMlzHSl+VD+oUc1IebOZabkbyWj2RiTgWwYPPuaK1H97G1sHqGwPlS5npiF5Q0OrxN1wni2n5QWg==", - "type": "package", - "path": "newtonsoft.json/12.0.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "lib/net20/Newtonsoft.Json.dll", - "lib/net20/Newtonsoft.Json.xml", - "lib/net35/Newtonsoft.Json.dll", - "lib/net35/Newtonsoft.Json.xml", - "lib/net40/Newtonsoft.Json.dll", - "lib/net40/Newtonsoft.Json.xml", - "lib/net45/Newtonsoft.Json.dll", - "lib/net45/Newtonsoft.Json.xml", - "lib/netstandard1.0/Newtonsoft.Json.dll", - "lib/netstandard1.0/Newtonsoft.Json.xml", - "lib/netstandard1.3/Newtonsoft.Json.dll", - "lib/netstandard1.3/Newtonsoft.Json.xml", - "lib/netstandard2.0/Newtonsoft.Json.dll", - "lib/netstandard2.0/Newtonsoft.Json.xml", - "lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.dll", - "lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.xml", - "lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.dll", - "lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.xml", - "newtonsoft.json.12.0.3.nupkg.sha512", - "newtonsoft.json.nuspec", - "packageIcon.png" - ] - }, - "runtime.native.System/4.3.0": { - "sha512": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", - "type": "package", - "path": "runtime.native.system/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.4.3.0.nupkg.sha512", - "runtime.native.system.nuspec" - ] - }, - "Serilog/2.6.0": { - "sha512": "hxHgHkza8ZowrvQ+jTEF2ypDWGP8NbNtxPQIx7ogTAM9fisDFo2+6kOaxCkleZLO8hiyq0kW5tDLkgm/dbj9uA==", - "type": "package", - "path": "serilog/2.6.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/Serilog.dll", - "lib/net45/Serilog.xml", - "lib/net46/Serilog.dll", - "lib/net46/Serilog.xml", - "lib/netstandard1.0/Serilog.dll", - "lib/netstandard1.0/Serilog.xml", - "lib/netstandard1.3/Serilog.dll", - "lib/netstandard1.3/Serilog.xml", - "serilog.2.6.0.nupkg.sha512", - "serilog.nuspec" - ] - }, - "Serilog.AspNetCore/2.1.1": { - "sha512": "euuzaDEF8RuTszbqZnYYOm15bGKm0ID3Vaj++sDhmxeL79a8yRemhv2Y8knjvqoOatIpN7Cqd6Jma0A+Pk+V7g==", - "type": "package", - "path": "serilog.aspnetcore/2.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Serilog.AspNetCore.dll", - "lib/netstandard2.0/Serilog.AspNetCore.xml", - "serilog.aspnetcore.2.1.1.nupkg.sha512", - "serilog.aspnetcore.nuspec" - ] - }, - "Serilog.Extensions.Logging/2.0.0": { - "sha512": "JAh1vHmbiwDAjA9VmUQjAXvlGm+vDv8usarajlkx7Arm6Zai+CPY4naE4N9M3Eh520wY5GmIWpM+7zmfMbdTOw==", - "type": "package", - "path": "serilog.extensions.logging/2.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/Serilog.Extensions.Logging.dll", - "lib/net45/Serilog.Extensions.Logging.xml", - "lib/net46/Serilog.Extensions.Logging.dll", - "lib/net46/Serilog.Extensions.Logging.xml", - "lib/net461/Serilog.Extensions.Logging.dll", - "lib/net461/Serilog.Extensions.Logging.xml", - "lib/netstandard1.3/Serilog.Extensions.Logging.dll", - "lib/netstandard1.3/Serilog.Extensions.Logging.xml", - "lib/netstandard2.0/Serilog.Extensions.Logging.dll", - "lib/netstandard2.0/Serilog.Extensions.Logging.xml", - "serilog.extensions.logging.2.0.0.nupkg.sha512", - "serilog.extensions.logging.nuspec" - ] - }, - "Serilog.Formatting.Compact/1.0.0": { - "sha512": "r3QYz02y7+B7Ng30hyJM929OJhem7SsJ4XDUE0Zfptj2MRiQfpPUb5f58juAFjp/TnNeSX2QNzZEnHwLeoJfHQ==", - "type": "package", - "path": "serilog.formatting.compact/1.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/Serilog.Formatting.Compact.dll", - "lib/net45/Serilog.Formatting.Compact.xml", - "lib/netstandard1.1/Serilog.Formatting.Compact.dll", - "lib/netstandard1.1/Serilog.Formatting.Compact.xml", - "serilog.formatting.compact.1.0.0.nupkg.sha512", - "serilog.formatting.compact.nuspec" - ] - }, - "Serilog.Settings.Configuration/3.0.1": { - "sha512": "c9W5OWJgyDWIfewzzSOBUve7XKRyXTt+A8McIBKY/lydI478JnxZUTbbigAtzEIq+FecZGQ5QgA8oUBFi40odA==", - "type": "package", - "path": "serilog.settings.configuration/3.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net451/Serilog.Settings.Configuration.dll", - "lib/net451/Serilog.Settings.Configuration.xml", - "lib/net461/Serilog.Settings.Configuration.dll", - "lib/net461/Serilog.Settings.Configuration.xml", - "lib/netstandard2.0/Serilog.Settings.Configuration.dll", - "lib/netstandard2.0/Serilog.Settings.Configuration.xml", - "serilog.settings.configuration.3.0.1.nupkg.sha512", - "serilog.settings.configuration.nuspec" - ] - }, - "Serilog.Sinks.Console/3.1.1": { - "sha512": "56mI5AqvyF/i/c2451nvV71kq370XOCE4Uu5qiaJ295sOhMb9q3BWwG7mWLOVSnmpWiq0SBT3SXfgRXGNP6vzA==", - "type": "package", - "path": "serilog.sinks.console/3.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/Serilog.Sinks.Console.dll", - "lib/net45/Serilog.Sinks.Console.xml", - "lib/netcoreapp1.1/Serilog.Sinks.Console.dll", - "lib/netcoreapp1.1/Serilog.Sinks.Console.xml", - "lib/netstandard1.3/Serilog.Sinks.Console.dll", - "lib/netstandard1.3/Serilog.Sinks.Console.xml", - "serilog.sinks.console.3.1.1.nupkg.sha512", - "serilog.sinks.console.nuspec" - ] - }, - "Serilog.Sinks.EventLog/3.1.0": { - "sha512": "NZukSBsuyGqcA8h6VI4SC84vmwjw08OKJUEXFktSx7wPokWIwx/Mk9cdqSvadwLIC+2Stmpz1vG6EP5OZ5indQ==", - "type": "package", - "path": "serilog.sinks.eventlog/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/Serilog.Sinks.EventLog.dll", - "lib/net45/Serilog.Sinks.EventLog.xml", - "lib/netstandard2.0/Serilog.Sinks.EventLog.dll", - "lib/netstandard2.0/Serilog.Sinks.EventLog.xml", - "serilog.sinks.eventlog.3.1.0.nupkg.sha512", - "serilog.sinks.eventlog.nuspec" - ] - }, - "Serilog.Sinks.File/4.0.0": { - "sha512": "vBj43RkAbeP1dzoPFR2+LfV5GevDRPDq6265JJBv223lMvT9rfdwe/S/I9ow7aZSLYKfw4qPDw6NW8YwjbDbvg==", - "type": "package", - "path": "serilog.sinks.file/4.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/Serilog.Sinks.File.dll", - "lib/net45/Serilog.Sinks.File.xml", - "lib/netstandard1.3/Serilog.Sinks.File.dll", - "lib/netstandard1.3/Serilog.Sinks.File.xml", - "serilog.sinks.file.4.0.0.nupkg.sha512", - "serilog.sinks.file.nuspec" - ] - }, - "System.AppContext/4.1.0": { - "sha512": "3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==", - "type": "package", - "path": "system.appcontext/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.AppContext.dll", - "lib/net463/System.AppContext.dll", - "lib/netcore50/System.AppContext.dll", - "lib/netstandard1.6/System.AppContext.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.AppContext.dll", - "ref/net463/System.AppContext.dll", - "ref/netstandard/_._", - "ref/netstandard1.3/System.AppContext.dll", - "ref/netstandard1.3/System.AppContext.xml", - "ref/netstandard1.3/de/System.AppContext.xml", - "ref/netstandard1.3/es/System.AppContext.xml", - "ref/netstandard1.3/fr/System.AppContext.xml", - "ref/netstandard1.3/it/System.AppContext.xml", - "ref/netstandard1.3/ja/System.AppContext.xml", - "ref/netstandard1.3/ko/System.AppContext.xml", - "ref/netstandard1.3/ru/System.AppContext.xml", - "ref/netstandard1.3/zh-hans/System.AppContext.xml", - "ref/netstandard1.3/zh-hant/System.AppContext.xml", - "ref/netstandard1.6/System.AppContext.dll", - "ref/netstandard1.6/System.AppContext.xml", - "ref/netstandard1.6/de/System.AppContext.xml", - "ref/netstandard1.6/es/System.AppContext.xml", - "ref/netstandard1.6/fr/System.AppContext.xml", - "ref/netstandard1.6/it/System.AppContext.xml", - "ref/netstandard1.6/ja/System.AppContext.xml", - "ref/netstandard1.6/ko/System.AppContext.xml", - "ref/netstandard1.6/ru/System.AppContext.xml", - "ref/netstandard1.6/zh-hans/System.AppContext.xml", - "ref/netstandard1.6/zh-hant/System.AppContext.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.AppContext.dll", - "system.appcontext.4.1.0.nupkg.sha512", - "system.appcontext.nuspec" - ] - }, - "System.Buffers/4.5.0": { - "sha512": "pL2ChpaRRWI/p4LXyy4RgeWlYF2sgfj/pnVMvBqwNFr5cXg7CXNnWZWxrOONLg8VGdFB8oB+EG2Qw4MLgTOe+A==", - "type": "package", - "path": "system.buffers/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.0/_._", - "lib/netstandard1.1/System.Buffers.dll", - "lib/netstandard1.1/System.Buffers.xml", - "lib/netstandard2.0/System.Buffers.dll", - "lib/netstandard2.0/System.Buffers.xml", - "lib/uap10.0.16299/_._", - "ref/net45/System.Buffers.dll", - "ref/net45/System.Buffers.xml", - "ref/netcoreapp2.0/_._", - "ref/netstandard1.1/System.Buffers.dll", - "ref/netstandard1.1/System.Buffers.xml", - "ref/netstandard2.0/System.Buffers.dll", - "ref/netstandard2.0/System.Buffers.xml", - "ref/uap10.0.16299/_._", - "system.buffers.4.5.0.nupkg.sha512", - "system.buffers.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Collections/4.0.11": { - "sha512": "YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==", - "type": "package", - "path": "system.collections/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.dll", - "ref/netcore50/System.Collections.xml", - "ref/netcore50/de/System.Collections.xml", - "ref/netcore50/es/System.Collections.xml", - "ref/netcore50/fr/System.Collections.xml", - "ref/netcore50/it/System.Collections.xml", - "ref/netcore50/ja/System.Collections.xml", - "ref/netcore50/ko/System.Collections.xml", - "ref/netcore50/ru/System.Collections.xml", - "ref/netcore50/zh-hans/System.Collections.xml", - "ref/netcore50/zh-hant/System.Collections.xml", - "ref/netstandard1.0/System.Collections.dll", - "ref/netstandard1.0/System.Collections.xml", - "ref/netstandard1.0/de/System.Collections.xml", - "ref/netstandard1.0/es/System.Collections.xml", - "ref/netstandard1.0/fr/System.Collections.xml", - "ref/netstandard1.0/it/System.Collections.xml", - "ref/netstandard1.0/ja/System.Collections.xml", - "ref/netstandard1.0/ko/System.Collections.xml", - "ref/netstandard1.0/ru/System.Collections.xml", - "ref/netstandard1.0/zh-hans/System.Collections.xml", - "ref/netstandard1.0/zh-hant/System.Collections.xml", - "ref/netstandard1.3/System.Collections.dll", - "ref/netstandard1.3/System.Collections.xml", - "ref/netstandard1.3/de/System.Collections.xml", - "ref/netstandard1.3/es/System.Collections.xml", - "ref/netstandard1.3/fr/System.Collections.xml", - "ref/netstandard1.3/it/System.Collections.xml", - "ref/netstandard1.3/ja/System.Collections.xml", - "ref/netstandard1.3/ko/System.Collections.xml", - "ref/netstandard1.3/ru/System.Collections.xml", - "ref/netstandard1.3/zh-hans/System.Collections.xml", - "ref/netstandard1.3/zh-hant/System.Collections.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.collections.4.0.11.nupkg.sha512", - "system.collections.nuspec" - ] - }, - "System.Collections.NonGeneric/4.0.1": { - "sha512": "hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==", - "type": "package", - "path": "system.collections.nongeneric/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Collections.NonGeneric.dll", - "lib/netstandard1.3/System.Collections.NonGeneric.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Collections.NonGeneric.dll", - "ref/netstandard1.3/System.Collections.NonGeneric.dll", - "ref/netstandard1.3/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/de/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/es/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/fr/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/it/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ja/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ko/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ru/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/zh-hans/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/zh-hant/System.Collections.NonGeneric.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.collections.nongeneric.4.0.1.nupkg.sha512", - "system.collections.nongeneric.nuspec" - ] - }, - "System.Console/4.3.0": { - "sha512": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", - "type": "package", - "path": "system.console/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Console.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Console.dll", - "ref/netstandard1.3/System.Console.dll", - "ref/netstandard1.3/System.Console.xml", - "ref/netstandard1.3/de/System.Console.xml", - "ref/netstandard1.3/es/System.Console.xml", - "ref/netstandard1.3/fr/System.Console.xml", - "ref/netstandard1.3/it/System.Console.xml", - "ref/netstandard1.3/ja/System.Console.xml", - "ref/netstandard1.3/ko/System.Console.xml", - "ref/netstandard1.3/ru/System.Console.xml", - "ref/netstandard1.3/zh-hans/System.Console.xml", - "ref/netstandard1.3/zh-hant/System.Console.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.console.4.3.0.nupkg.sha512", - "system.console.nuspec" - ] - }, - "System.Diagnostics.Debug/4.0.11": { - "sha512": "w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==", - "type": "package", - "path": "system.diagnostics.debug/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Debug.dll", - "ref/netcore50/System.Diagnostics.Debug.xml", - "ref/netcore50/de/System.Diagnostics.Debug.xml", - "ref/netcore50/es/System.Diagnostics.Debug.xml", - "ref/netcore50/fr/System.Diagnostics.Debug.xml", - "ref/netcore50/it/System.Diagnostics.Debug.xml", - "ref/netcore50/ja/System.Diagnostics.Debug.xml", - "ref/netcore50/ko/System.Diagnostics.Debug.xml", - "ref/netcore50/ru/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/System.Diagnostics.Debug.dll", - "ref/netstandard1.0/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/System.Diagnostics.Debug.dll", - "ref/netstandard1.3/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.diagnostics.debug.4.0.11.nupkg.sha512", - "system.diagnostics.debug.nuspec" - ] - }, - "System.Diagnostics.DiagnosticSource/4.5.0": { - "sha512": "eIHRELiYDQvsMToML81QFkXEEYXUSUT2F28t1SGrevWqP+epFdw80SyAXIKTXOHrIEXReFOEnEr7XlGiC2GgOg==", - "type": "package", - "path": "system.diagnostics.diagnosticsource/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net45/System.Diagnostics.DiagnosticSource.dll", - "lib/net45/System.Diagnostics.DiagnosticSource.xml", - "lib/net46/System.Diagnostics.DiagnosticSource.dll", - "lib/net46/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml", - "system.diagnostics.diagnosticsource.4.5.0.nupkg.sha512", - "system.diagnostics.diagnosticsource.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Diagnostics.EventLog/4.5.0": { - "sha512": "QaQAhEk18QSBPSu4VjXcznvjlg45IoXcJJNS5hcoqyyLj58g/SzQwpYXUrdzo+UtHV0grmOzFwABxhCYSTTp5Q==", - "type": "package", - "path": "system.diagnostics.eventlog/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/System.Diagnostics.EventLog.dll", - "lib/netstandard2.0/System.Diagnostics.EventLog.dll", - "ref/net461/System.Diagnostics.EventLog.dll", - "ref/netstandard2.0/System.Diagnostics.EventLog.dll", - "runtimes/win/lib/netcoreapp2.0/System.Diagnostics.EventLog.dll", - "system.diagnostics.eventlog.4.5.0.nupkg.sha512", - "system.diagnostics.eventlog.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Dynamic.Runtime/4.0.11": { - "sha512": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", - "type": "package", - "path": "system.dynamic.runtime/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Dynamic.Runtime.dll", - "lib/netstandard1.3/System.Dynamic.Runtime.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Dynamic.Runtime.dll", - "ref/netcore50/System.Dynamic.Runtime.xml", - "ref/netcore50/de/System.Dynamic.Runtime.xml", - "ref/netcore50/es/System.Dynamic.Runtime.xml", - "ref/netcore50/fr/System.Dynamic.Runtime.xml", - "ref/netcore50/it/System.Dynamic.Runtime.xml", - "ref/netcore50/ja/System.Dynamic.Runtime.xml", - "ref/netcore50/ko/System.Dynamic.Runtime.xml", - "ref/netcore50/ru/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hans/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/System.Dynamic.Runtime.dll", - "ref/netstandard1.0/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/System.Dynamic.Runtime.dll", - "ref/netstandard1.3/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll", - "system.dynamic.runtime.4.0.11.nupkg.sha512", - "system.dynamic.runtime.nuspec" - ] - }, - "System.Globalization/4.3.0": { - "sha512": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", - "type": "package", - "path": "system.globalization/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Globalization.dll", - "ref/netcore50/System.Globalization.xml", - "ref/netcore50/de/System.Globalization.xml", - "ref/netcore50/es/System.Globalization.xml", - "ref/netcore50/fr/System.Globalization.xml", - "ref/netcore50/it/System.Globalization.xml", - "ref/netcore50/ja/System.Globalization.xml", - "ref/netcore50/ko/System.Globalization.xml", - "ref/netcore50/ru/System.Globalization.xml", - "ref/netcore50/zh-hans/System.Globalization.xml", - "ref/netcore50/zh-hant/System.Globalization.xml", - "ref/netstandard1.0/System.Globalization.dll", - "ref/netstandard1.0/System.Globalization.xml", - "ref/netstandard1.0/de/System.Globalization.xml", - "ref/netstandard1.0/es/System.Globalization.xml", - "ref/netstandard1.0/fr/System.Globalization.xml", - "ref/netstandard1.0/it/System.Globalization.xml", - "ref/netstandard1.0/ja/System.Globalization.xml", - "ref/netstandard1.0/ko/System.Globalization.xml", - "ref/netstandard1.0/ru/System.Globalization.xml", - "ref/netstandard1.0/zh-hans/System.Globalization.xml", - "ref/netstandard1.0/zh-hant/System.Globalization.xml", - "ref/netstandard1.3/System.Globalization.dll", - "ref/netstandard1.3/System.Globalization.xml", - "ref/netstandard1.3/de/System.Globalization.xml", - "ref/netstandard1.3/es/System.Globalization.xml", - "ref/netstandard1.3/fr/System.Globalization.xml", - "ref/netstandard1.3/it/System.Globalization.xml", - "ref/netstandard1.3/ja/System.Globalization.xml", - "ref/netstandard1.3/ko/System.Globalization.xml", - "ref/netstandard1.3/ru/System.Globalization.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.globalization.4.3.0.nupkg.sha512", - "system.globalization.nuspec" - ] - }, - "System.IO/4.3.0": { - "sha512": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", - "type": "package", - "path": "system.io/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.IO.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.IO.dll", - "ref/netcore50/System.IO.dll", - "ref/netcore50/System.IO.xml", - "ref/netcore50/de/System.IO.xml", - "ref/netcore50/es/System.IO.xml", - "ref/netcore50/fr/System.IO.xml", - "ref/netcore50/it/System.IO.xml", - "ref/netcore50/ja/System.IO.xml", - "ref/netcore50/ko/System.IO.xml", - "ref/netcore50/ru/System.IO.xml", - "ref/netcore50/zh-hans/System.IO.xml", - "ref/netcore50/zh-hant/System.IO.xml", - "ref/netstandard1.0/System.IO.dll", - "ref/netstandard1.0/System.IO.xml", - "ref/netstandard1.0/de/System.IO.xml", - "ref/netstandard1.0/es/System.IO.xml", - "ref/netstandard1.0/fr/System.IO.xml", - "ref/netstandard1.0/it/System.IO.xml", - "ref/netstandard1.0/ja/System.IO.xml", - "ref/netstandard1.0/ko/System.IO.xml", - "ref/netstandard1.0/ru/System.IO.xml", - "ref/netstandard1.0/zh-hans/System.IO.xml", - "ref/netstandard1.0/zh-hant/System.IO.xml", - "ref/netstandard1.3/System.IO.dll", - "ref/netstandard1.3/System.IO.xml", - "ref/netstandard1.3/de/System.IO.xml", - "ref/netstandard1.3/es/System.IO.xml", - "ref/netstandard1.3/fr/System.IO.xml", - "ref/netstandard1.3/it/System.IO.xml", - "ref/netstandard1.3/ja/System.IO.xml", - "ref/netstandard1.3/ko/System.IO.xml", - "ref/netstandard1.3/ru/System.IO.xml", - "ref/netstandard1.3/zh-hans/System.IO.xml", - "ref/netstandard1.3/zh-hant/System.IO.xml", - "ref/netstandard1.5/System.IO.dll", - "ref/netstandard1.5/System.IO.xml", - "ref/netstandard1.5/de/System.IO.xml", - "ref/netstandard1.5/es/System.IO.xml", - "ref/netstandard1.5/fr/System.IO.xml", - "ref/netstandard1.5/it/System.IO.xml", - "ref/netstandard1.5/ja/System.IO.xml", - "ref/netstandard1.5/ko/System.IO.xml", - "ref/netstandard1.5/ru/System.IO.xml", - "ref/netstandard1.5/zh-hans/System.IO.xml", - "ref/netstandard1.5/zh-hant/System.IO.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.4.3.0.nupkg.sha512", - "system.io.nuspec" - ] - }, - "System.IO.FileSystem/4.0.1": { - "sha512": "IBErlVq5jOggAD69bg1t0pJcHaDbJbWNUZTPI96fkYWzwYbN6D9wRHMULLDd9dHsl7C2YsxXL31LMfPI1SWt8w==", - "type": "package", - "path": "system.io.filesystem/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.filesystem.4.0.1.nupkg.sha512", - "system.io.filesystem.nuspec" - ] - }, - "System.IO.FileSystem.AccessControl/4.7.0": { - "sha512": "vMToiarpU81LR1/KZtnT7VDPvqAZfw9oOS5nY6pPP78nGYz3COLsQH3OfzbR+SjTgltd31R6KmKklz/zDpTmzw==", - "type": "package", - "path": "system.io.filesystem.accesscontrol/4.7.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net46/System.IO.FileSystem.AccessControl.dll", - "lib/net461/System.IO.FileSystem.AccessControl.dll", - "lib/net461/System.IO.FileSystem.AccessControl.xml", - "lib/netstandard1.3/System.IO.FileSystem.AccessControl.dll", - "lib/netstandard2.0/System.IO.FileSystem.AccessControl.dll", - "lib/netstandard2.0/System.IO.FileSystem.AccessControl.xml", - "ref/net46/System.IO.FileSystem.AccessControl.dll", - "ref/net461/System.IO.FileSystem.AccessControl.dll", - "ref/net461/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/System.IO.FileSystem.AccessControl.dll", - "ref/netstandard1.3/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.AccessControl.xml", - "ref/netstandard2.0/System.IO.FileSystem.AccessControl.dll", - "ref/netstandard2.0/System.IO.FileSystem.AccessControl.xml", - "runtimes/win/lib/net46/System.IO.FileSystem.AccessControl.dll", - "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.dll", - "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.xml", - "runtimes/win/lib/netstandard1.3/System.IO.FileSystem.AccessControl.dll", - "runtimes/win/lib/netstandard2.0/System.IO.FileSystem.AccessControl.dll", - "runtimes/win/lib/netstandard2.0/System.IO.FileSystem.AccessControl.xml", - "system.io.filesystem.accesscontrol.4.7.0.nupkg.sha512", - "system.io.filesystem.accesscontrol.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.IO.FileSystem.Primitives/4.0.1": { - "sha512": "kWkKD203JJKxJeE74p8aF8y4Qc9r9WQx4C0cHzHPrY3fv/L/IhWnyCHaFJ3H1QPOH6A93whlQ2vG5nHlBDvzWQ==", - "type": "package", - "path": "system.io.filesystem.primitives/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.Primitives.dll", - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.filesystem.primitives.4.0.1.nupkg.sha512", - "system.io.filesystem.primitives.nuspec" - ] - }, - "System.Linq/4.1.0": { - "sha512": "bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==", - "type": "package", - "path": "system.linq/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.dll", - "lib/netcore50/System.Linq.dll", - "lib/netstandard1.6/System.Linq.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.dll", - "ref/netcore50/System.Linq.dll", - "ref/netcore50/System.Linq.xml", - "ref/netcore50/de/System.Linq.xml", - "ref/netcore50/es/System.Linq.xml", - "ref/netcore50/fr/System.Linq.xml", - "ref/netcore50/it/System.Linq.xml", - "ref/netcore50/ja/System.Linq.xml", - "ref/netcore50/ko/System.Linq.xml", - "ref/netcore50/ru/System.Linq.xml", - "ref/netcore50/zh-hans/System.Linq.xml", - "ref/netcore50/zh-hant/System.Linq.xml", - "ref/netstandard1.0/System.Linq.dll", - "ref/netstandard1.0/System.Linq.xml", - "ref/netstandard1.0/de/System.Linq.xml", - "ref/netstandard1.0/es/System.Linq.xml", - "ref/netstandard1.0/fr/System.Linq.xml", - "ref/netstandard1.0/it/System.Linq.xml", - "ref/netstandard1.0/ja/System.Linq.xml", - "ref/netstandard1.0/ko/System.Linq.xml", - "ref/netstandard1.0/ru/System.Linq.xml", - "ref/netstandard1.0/zh-hans/System.Linq.xml", - "ref/netstandard1.0/zh-hant/System.Linq.xml", - "ref/netstandard1.6/System.Linq.dll", - "ref/netstandard1.6/System.Linq.xml", - "ref/netstandard1.6/de/System.Linq.xml", - "ref/netstandard1.6/es/System.Linq.xml", - "ref/netstandard1.6/fr/System.Linq.xml", - "ref/netstandard1.6/it/System.Linq.xml", - "ref/netstandard1.6/ja/System.Linq.xml", - "ref/netstandard1.6/ko/System.Linq.xml", - "ref/netstandard1.6/ru/System.Linq.xml", - "ref/netstandard1.6/zh-hans/System.Linq.xml", - "ref/netstandard1.6/zh-hant/System.Linq.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.linq.4.1.0.nupkg.sha512", - "system.linq.nuspec" - ] - }, - "System.Linq.Expressions/4.1.0": { - "sha512": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==", - "type": "package", - "path": "system.linq.expressions/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.Expressions.dll", - "lib/netcore50/System.Linq.Expressions.dll", - "lib/netstandard1.6/System.Linq.Expressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.xml", - "ref/netcore50/de/System.Linq.Expressions.xml", - "ref/netcore50/es/System.Linq.Expressions.xml", - "ref/netcore50/fr/System.Linq.Expressions.xml", - "ref/netcore50/it/System.Linq.Expressions.xml", - "ref/netcore50/ja/System.Linq.Expressions.xml", - "ref/netcore50/ko/System.Linq.Expressions.xml", - "ref/netcore50/ru/System.Linq.Expressions.xml", - "ref/netcore50/zh-hans/System.Linq.Expressions.xml", - "ref/netcore50/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.0/System.Linq.Expressions.dll", - "ref/netstandard1.0/System.Linq.Expressions.xml", - "ref/netstandard1.0/de/System.Linq.Expressions.xml", - "ref/netstandard1.0/es/System.Linq.Expressions.xml", - "ref/netstandard1.0/fr/System.Linq.Expressions.xml", - "ref/netstandard1.0/it/System.Linq.Expressions.xml", - "ref/netstandard1.0/ja/System.Linq.Expressions.xml", - "ref/netstandard1.0/ko/System.Linq.Expressions.xml", - "ref/netstandard1.0/ru/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.3/System.Linq.Expressions.dll", - "ref/netstandard1.3/System.Linq.Expressions.xml", - "ref/netstandard1.3/de/System.Linq.Expressions.xml", - "ref/netstandard1.3/es/System.Linq.Expressions.xml", - "ref/netstandard1.3/fr/System.Linq.Expressions.xml", - "ref/netstandard1.3/it/System.Linq.Expressions.xml", - "ref/netstandard1.3/ja/System.Linq.Expressions.xml", - "ref/netstandard1.3/ko/System.Linq.Expressions.xml", - "ref/netstandard1.3/ru/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.6/System.Linq.Expressions.dll", - "ref/netstandard1.6/System.Linq.Expressions.xml", - "ref/netstandard1.6/de/System.Linq.Expressions.xml", - "ref/netstandard1.6/es/System.Linq.Expressions.xml", - "ref/netstandard1.6/fr/System.Linq.Expressions.xml", - "ref/netstandard1.6/it/System.Linq.Expressions.xml", - "ref/netstandard1.6/ja/System.Linq.Expressions.xml", - "ref/netstandard1.6/ko/System.Linq.Expressions.xml", - "ref/netstandard1.6/ru/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll", - "system.linq.expressions.4.1.0.nupkg.sha512", - "system.linq.expressions.nuspec" - ] - }, - "System.Memory/4.5.3": { - "sha512": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==", - "type": "package", - "path": "system.memory/4.5.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.1/_._", - "lib/netstandard1.1/System.Memory.dll", - "lib/netstandard1.1/System.Memory.xml", - "lib/netstandard2.0/System.Memory.dll", - "lib/netstandard2.0/System.Memory.xml", - "ref/netcoreapp2.1/_._", - "system.memory.4.5.3.nupkg.sha512", - "system.memory.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.ObjectModel/4.0.12": { - "sha512": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==", - "type": "package", - "path": "system.objectmodel/4.0.12", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ObjectModel.dll", - "lib/netstandard1.3/System.ObjectModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ObjectModel.dll", - "ref/netcore50/System.ObjectModel.xml", - "ref/netcore50/de/System.ObjectModel.xml", - "ref/netcore50/es/System.ObjectModel.xml", - "ref/netcore50/fr/System.ObjectModel.xml", - "ref/netcore50/it/System.ObjectModel.xml", - "ref/netcore50/ja/System.ObjectModel.xml", - "ref/netcore50/ko/System.ObjectModel.xml", - "ref/netcore50/ru/System.ObjectModel.xml", - "ref/netcore50/zh-hans/System.ObjectModel.xml", - "ref/netcore50/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.0/System.ObjectModel.dll", - "ref/netstandard1.0/System.ObjectModel.xml", - "ref/netstandard1.0/de/System.ObjectModel.xml", - "ref/netstandard1.0/es/System.ObjectModel.xml", - "ref/netstandard1.0/fr/System.ObjectModel.xml", - "ref/netstandard1.0/it/System.ObjectModel.xml", - "ref/netstandard1.0/ja/System.ObjectModel.xml", - "ref/netstandard1.0/ko/System.ObjectModel.xml", - "ref/netstandard1.0/ru/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.3/System.ObjectModel.dll", - "ref/netstandard1.3/System.ObjectModel.xml", - "ref/netstandard1.3/de/System.ObjectModel.xml", - "ref/netstandard1.3/es/System.ObjectModel.xml", - "ref/netstandard1.3/fr/System.ObjectModel.xml", - "ref/netstandard1.3/it/System.ObjectModel.xml", - "ref/netstandard1.3/ja/System.ObjectModel.xml", - "ref/netstandard1.3/ko/System.ObjectModel.xml", - "ref/netstandard1.3/ru/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.objectmodel.4.0.12.nupkg.sha512", - "system.objectmodel.nuspec" - ] - }, - "System.Reflection/4.3.0": { - "sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", - "type": "package", - "path": "system.reflection/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Reflection.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Reflection.dll", - "ref/netcore50/System.Reflection.dll", - "ref/netcore50/System.Reflection.xml", - "ref/netcore50/de/System.Reflection.xml", - "ref/netcore50/es/System.Reflection.xml", - "ref/netcore50/fr/System.Reflection.xml", - "ref/netcore50/it/System.Reflection.xml", - "ref/netcore50/ja/System.Reflection.xml", - "ref/netcore50/ko/System.Reflection.xml", - "ref/netcore50/ru/System.Reflection.xml", - "ref/netcore50/zh-hans/System.Reflection.xml", - "ref/netcore50/zh-hant/System.Reflection.xml", - "ref/netstandard1.0/System.Reflection.dll", - "ref/netstandard1.0/System.Reflection.xml", - "ref/netstandard1.0/de/System.Reflection.xml", - "ref/netstandard1.0/es/System.Reflection.xml", - "ref/netstandard1.0/fr/System.Reflection.xml", - "ref/netstandard1.0/it/System.Reflection.xml", - "ref/netstandard1.0/ja/System.Reflection.xml", - "ref/netstandard1.0/ko/System.Reflection.xml", - "ref/netstandard1.0/ru/System.Reflection.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.xml", - "ref/netstandard1.3/System.Reflection.dll", - "ref/netstandard1.3/System.Reflection.xml", - "ref/netstandard1.3/de/System.Reflection.xml", - "ref/netstandard1.3/es/System.Reflection.xml", - "ref/netstandard1.3/fr/System.Reflection.xml", - "ref/netstandard1.3/it/System.Reflection.xml", - "ref/netstandard1.3/ja/System.Reflection.xml", - "ref/netstandard1.3/ko/System.Reflection.xml", - "ref/netstandard1.3/ru/System.Reflection.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.xml", - "ref/netstandard1.5/System.Reflection.dll", - "ref/netstandard1.5/System.Reflection.xml", - "ref/netstandard1.5/de/System.Reflection.xml", - "ref/netstandard1.5/es/System.Reflection.xml", - "ref/netstandard1.5/fr/System.Reflection.xml", - "ref/netstandard1.5/it/System.Reflection.xml", - "ref/netstandard1.5/ja/System.Reflection.xml", - "ref/netstandard1.5/ko/System.Reflection.xml", - "ref/netstandard1.5/ru/System.Reflection.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.4.3.0.nupkg.sha512", - "system.reflection.nuspec" - ] - }, - "System.Reflection.Emit/4.0.1": { - "sha512": "P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==", - "type": "package", - "path": "system.reflection.emit/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.dll", - "lib/netstandard1.3/System.Reflection.Emit.dll", - "lib/xamarinmac20/_._", - "ref/MonoAndroid10/_._", - "ref/net45/_._", - "ref/netstandard1.1/System.Reflection.Emit.dll", - "ref/netstandard1.1/System.Reflection.Emit.xml", - "ref/netstandard1.1/de/System.Reflection.Emit.xml", - "ref/netstandard1.1/es/System.Reflection.Emit.xml", - "ref/netstandard1.1/fr/System.Reflection.Emit.xml", - "ref/netstandard1.1/it/System.Reflection.Emit.xml", - "ref/netstandard1.1/ja/System.Reflection.Emit.xml", - "ref/netstandard1.1/ko/System.Reflection.Emit.xml", - "ref/netstandard1.1/ru/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", - "ref/xamarinmac20/_._", - "system.reflection.emit.4.0.1.nupkg.sha512", - "system.reflection.emit.nuspec" - ] - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "sha512": "Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==", - "type": "package", - "path": "system.reflection.emit.ilgeneration/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "runtimes/aot/lib/netcore50/_._", - "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512", - "system.reflection.emit.ilgeneration.nuspec" - ] - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "sha512": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==", - "type": "package", - "path": "system.reflection.emit.lightweight/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.Lightweight.dll", - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "runtimes/aot/lib/netcore50/_._", - "system.reflection.emit.lightweight.4.0.1.nupkg.sha512", - "system.reflection.emit.lightweight.nuspec" - ] - }, - "System.Reflection.Extensions/4.3.0": { - "sha512": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", - "type": "package", - "path": "system.reflection.extensions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Extensions.dll", - "ref/netcore50/System.Reflection.Extensions.xml", - "ref/netcore50/de/System.Reflection.Extensions.xml", - "ref/netcore50/es/System.Reflection.Extensions.xml", - "ref/netcore50/fr/System.Reflection.Extensions.xml", - "ref/netcore50/it/System.Reflection.Extensions.xml", - "ref/netcore50/ja/System.Reflection.Extensions.xml", - "ref/netcore50/ko/System.Reflection.Extensions.xml", - "ref/netcore50/ru/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", - "ref/netstandard1.0/System.Reflection.Extensions.dll", - "ref/netstandard1.0/System.Reflection.Extensions.xml", - "ref/netstandard1.0/de/System.Reflection.Extensions.xml", - "ref/netstandard1.0/es/System.Reflection.Extensions.xml", - "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", - "ref/netstandard1.0/it/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.extensions.4.3.0.nupkg.sha512", - "system.reflection.extensions.nuspec" - ] - }, - "System.Reflection.Metadata/1.6.0": { - "sha512": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==", - "type": "package", - "path": "system.reflection.metadata/1.6.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netstandard1.1/System.Reflection.Metadata.dll", - "lib/netstandard1.1/System.Reflection.Metadata.xml", - "lib/netstandard2.0/System.Reflection.Metadata.dll", - "lib/netstandard2.0/System.Reflection.Metadata.xml", - "lib/portable-net45+win8/System.Reflection.Metadata.dll", - "lib/portable-net45+win8/System.Reflection.Metadata.xml", - "system.reflection.metadata.1.6.0.nupkg.sha512", - "system.reflection.metadata.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Reflection.Primitives/4.3.0": { - "sha512": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", - "type": "package", - "path": "system.reflection.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Primitives.dll", - "ref/netcore50/System.Reflection.Primitives.xml", - "ref/netcore50/de/System.Reflection.Primitives.xml", - "ref/netcore50/es/System.Reflection.Primitives.xml", - "ref/netcore50/fr/System.Reflection.Primitives.xml", - "ref/netcore50/it/System.Reflection.Primitives.xml", - "ref/netcore50/ja/System.Reflection.Primitives.xml", - "ref/netcore50/ko/System.Reflection.Primitives.xml", - "ref/netcore50/ru/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", - "ref/netstandard1.0/System.Reflection.Primitives.dll", - "ref/netstandard1.0/System.Reflection.Primitives.xml", - "ref/netstandard1.0/de/System.Reflection.Primitives.xml", - "ref/netstandard1.0/es/System.Reflection.Primitives.xml", - "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", - "ref/netstandard1.0/it/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.primitives.4.3.0.nupkg.sha512", - "system.reflection.primitives.nuspec" - ] - }, - "System.Reflection.TypeExtensions/4.1.0": { - "sha512": "tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==", - "type": "package", - "path": "system.reflection.typeextensions/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Reflection.TypeExtensions.dll", - "lib/net462/System.Reflection.TypeExtensions.dll", - "lib/netcore50/System.Reflection.TypeExtensions.dll", - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Reflection.TypeExtensions.dll", - "ref/net462/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll", - "system.reflection.typeextensions.4.1.0.nupkg.sha512", - "system.reflection.typeextensions.nuspec" - ] - }, - "System.Resources.ResourceManager/4.3.0": { - "sha512": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", - "type": "package", - "path": "system.resources.resourcemanager/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Resources.ResourceManager.dll", - "ref/netcore50/System.Resources.ResourceManager.xml", - "ref/netcore50/de/System.Resources.ResourceManager.xml", - "ref/netcore50/es/System.Resources.ResourceManager.xml", - "ref/netcore50/fr/System.Resources.ResourceManager.xml", - "ref/netcore50/it/System.Resources.ResourceManager.xml", - "ref/netcore50/ja/System.Resources.ResourceManager.xml", - "ref/netcore50/ko/System.Resources.ResourceManager.xml", - "ref/netcore50/ru/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/System.Resources.ResourceManager.dll", - "ref/netstandard1.0/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.resources.resourcemanager.4.3.0.nupkg.sha512", - "system.resources.resourcemanager.nuspec" - ] - }, - "System.Runtime/4.3.0": { - "sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", - "type": "package", - "path": "system.runtime/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.dll", - "lib/portable-net45+win8+wp80+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.dll", - "ref/netcore50/System.Runtime.dll", - "ref/netcore50/System.Runtime.xml", - "ref/netcore50/de/System.Runtime.xml", - "ref/netcore50/es/System.Runtime.xml", - "ref/netcore50/fr/System.Runtime.xml", - "ref/netcore50/it/System.Runtime.xml", - "ref/netcore50/ja/System.Runtime.xml", - "ref/netcore50/ko/System.Runtime.xml", - "ref/netcore50/ru/System.Runtime.xml", - "ref/netcore50/zh-hans/System.Runtime.xml", - "ref/netcore50/zh-hant/System.Runtime.xml", - "ref/netstandard1.0/System.Runtime.dll", - "ref/netstandard1.0/System.Runtime.xml", - "ref/netstandard1.0/de/System.Runtime.xml", - "ref/netstandard1.0/es/System.Runtime.xml", - "ref/netstandard1.0/fr/System.Runtime.xml", - "ref/netstandard1.0/it/System.Runtime.xml", - "ref/netstandard1.0/ja/System.Runtime.xml", - "ref/netstandard1.0/ko/System.Runtime.xml", - "ref/netstandard1.0/ru/System.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.xml", - "ref/netstandard1.2/System.Runtime.dll", - "ref/netstandard1.2/System.Runtime.xml", - "ref/netstandard1.2/de/System.Runtime.xml", - "ref/netstandard1.2/es/System.Runtime.xml", - "ref/netstandard1.2/fr/System.Runtime.xml", - "ref/netstandard1.2/it/System.Runtime.xml", - "ref/netstandard1.2/ja/System.Runtime.xml", - "ref/netstandard1.2/ko/System.Runtime.xml", - "ref/netstandard1.2/ru/System.Runtime.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.xml", - "ref/netstandard1.3/System.Runtime.dll", - "ref/netstandard1.3/System.Runtime.xml", - "ref/netstandard1.3/de/System.Runtime.xml", - "ref/netstandard1.3/es/System.Runtime.xml", - "ref/netstandard1.3/fr/System.Runtime.xml", - "ref/netstandard1.3/it/System.Runtime.xml", - "ref/netstandard1.3/ja/System.Runtime.xml", - "ref/netstandard1.3/ko/System.Runtime.xml", - "ref/netstandard1.3/ru/System.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.xml", - "ref/netstandard1.5/System.Runtime.dll", - "ref/netstandard1.5/System.Runtime.xml", - "ref/netstandard1.5/de/System.Runtime.xml", - "ref/netstandard1.5/es/System.Runtime.xml", - "ref/netstandard1.5/fr/System.Runtime.xml", - "ref/netstandard1.5/it/System.Runtime.xml", - "ref/netstandard1.5/ja/System.Runtime.xml", - "ref/netstandard1.5/ko/System.Runtime.xml", - "ref/netstandard1.5/ru/System.Runtime.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.xml", - "ref/portable-net45+win8+wp80+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.4.3.0.nupkg.sha512", - "system.runtime.nuspec" - ] - }, - "System.Runtime.CompilerServices.Unsafe/4.5.1": { - "sha512": "Zh8t8oqolRaFa9vmOZfdQm/qKejdqz0J9kr7o2Fu0vPeoH3BL1EOXipKWwkWtLT1JPzjByrF19fGuFlNbmPpiw==", - "type": "package", - "path": "system.runtime.compilerservices.unsafe/4.5.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.xml", - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml", - "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", - "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", - "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml", - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", - "system.runtime.compilerservices.unsafe.4.5.1.nupkg.sha512", - "system.runtime.compilerservices.unsafe.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Runtime.Extensions/4.1.0": { - "sha512": "CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==", - "type": "package", - "path": "system.runtime.extensions/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.xml", - "ref/netcore50/de/System.Runtime.Extensions.xml", - "ref/netcore50/es/System.Runtime.Extensions.xml", - "ref/netcore50/fr/System.Runtime.Extensions.xml", - "ref/netcore50/it/System.Runtime.Extensions.xml", - "ref/netcore50/ja/System.Runtime.Extensions.xml", - "ref/netcore50/ko/System.Runtime.Extensions.xml", - "ref/netcore50/ru/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.0/System.Runtime.Extensions.dll", - "ref/netstandard1.0/System.Runtime.Extensions.xml", - "ref/netstandard1.0/de/System.Runtime.Extensions.xml", - "ref/netstandard1.0/es/System.Runtime.Extensions.xml", - "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.0/it/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.3/System.Runtime.Extensions.dll", - "ref/netstandard1.3/System.Runtime.Extensions.xml", - "ref/netstandard1.3/de/System.Runtime.Extensions.xml", - "ref/netstandard1.3/es/System.Runtime.Extensions.xml", - "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.3/it/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.5/System.Runtime.Extensions.dll", - "ref/netstandard1.5/System.Runtime.Extensions.xml", - "ref/netstandard1.5/de/System.Runtime.Extensions.xml", - "ref/netstandard1.5/es/System.Runtime.Extensions.xml", - "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.5/it/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.extensions.4.1.0.nupkg.sha512", - "system.runtime.extensions.nuspec" - ] - }, - "System.Runtime.Handles/4.3.0": { - "sha512": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", - "type": "package", - "path": "system.runtime.handles/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/netstandard1.3/System.Runtime.Handles.dll", - "ref/netstandard1.3/System.Runtime.Handles.xml", - "ref/netstandard1.3/de/System.Runtime.Handles.xml", - "ref/netstandard1.3/es/System.Runtime.Handles.xml", - "ref/netstandard1.3/fr/System.Runtime.Handles.xml", - "ref/netstandard1.3/it/System.Runtime.Handles.xml", - "ref/netstandard1.3/ja/System.Runtime.Handles.xml", - "ref/netstandard1.3/ko/System.Runtime.Handles.xml", - "ref/netstandard1.3/ru/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.handles.4.3.0.nupkg.sha512", - "system.runtime.handles.nuspec" - ] - }, - "System.Runtime.InteropServices/4.3.0": { - "sha512": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", - "type": "package", - "path": "system.runtime.interopservices/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.InteropServices.dll", - "lib/net463/System.Runtime.InteropServices.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.InteropServices.dll", - "ref/net463/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.xml", - "ref/netcore50/de/System.Runtime.InteropServices.xml", - "ref/netcore50/es/System.Runtime.InteropServices.xml", - "ref/netcore50/fr/System.Runtime.InteropServices.xml", - "ref/netcore50/it/System.Runtime.InteropServices.xml", - "ref/netcore50/ja/System.Runtime.InteropServices.xml", - "ref/netcore50/ko/System.Runtime.InteropServices.xml", - "ref/netcore50/ru/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", - "ref/netcoreapp1.1/System.Runtime.InteropServices.dll", - "ref/netstandard1.1/System.Runtime.InteropServices.dll", - "ref/netstandard1.1/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/System.Runtime.InteropServices.dll", - "ref/netstandard1.2/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/System.Runtime.InteropServices.dll", - "ref/netstandard1.3/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/System.Runtime.InteropServices.dll", - "ref/netstandard1.5/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.interopservices.4.3.0.nupkg.sha512", - "system.runtime.interopservices.nuspec" - ] - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "sha512": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", - "type": "package", - "path": "system.runtime.interopservices.runtimeinformation/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", - "system.runtime.interopservices.runtimeinformation.nuspec" - ] - }, - "System.Security.AccessControl/4.7.0": { - "sha512": "JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==", - "type": "package", - "path": "system.security.accesscontrol/4.7.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net46/System.Security.AccessControl.dll", - "lib/net461/System.Security.AccessControl.dll", - "lib/net461/System.Security.AccessControl.xml", - "lib/netstandard1.3/System.Security.AccessControl.dll", - "lib/netstandard2.0/System.Security.AccessControl.dll", - "lib/netstandard2.0/System.Security.AccessControl.xml", - "lib/uap10.0.16299/_._", - "ref/net46/System.Security.AccessControl.dll", - "ref/net461/System.Security.AccessControl.dll", - "ref/net461/System.Security.AccessControl.xml", - "ref/netstandard1.3/System.Security.AccessControl.dll", - "ref/netstandard1.3/System.Security.AccessControl.xml", - "ref/netstandard1.3/de/System.Security.AccessControl.xml", - "ref/netstandard1.3/es/System.Security.AccessControl.xml", - "ref/netstandard1.3/fr/System.Security.AccessControl.xml", - "ref/netstandard1.3/it/System.Security.AccessControl.xml", - "ref/netstandard1.3/ja/System.Security.AccessControl.xml", - "ref/netstandard1.3/ko/System.Security.AccessControl.xml", - "ref/netstandard1.3/ru/System.Security.AccessControl.xml", - "ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml", - "ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml", - "ref/netstandard2.0/System.Security.AccessControl.dll", - "ref/netstandard2.0/System.Security.AccessControl.xml", - "ref/uap10.0.16299/_._", - "runtimes/win/lib/net46/System.Security.AccessControl.dll", - "runtimes/win/lib/net461/System.Security.AccessControl.dll", - "runtimes/win/lib/net461/System.Security.AccessControl.xml", - "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll", - "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml", - "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll", - "runtimes/win/lib/uap10.0.16299/_._", - "system.security.accesscontrol.4.7.0.nupkg.sha512", - "system.security.accesscontrol.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Security.Permissions/4.5.0": { - "sha512": "9gdyuARhUR7H+p5CjyUB/zPk7/Xut3wUSP8NJQB6iZr8L3XUXTMdoLeVAg9N4rqF8oIpE7MpdqHdDHQ7XgJe0g==", - "type": "package", - "path": "system.security.permissions/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/System.Security.Permissions.dll", - "lib/netstandard2.0/System.Security.Permissions.dll", - "ref/net461/System.Security.Permissions.dll", - "ref/net461/System.Security.Permissions.xml", - "ref/netstandard2.0/System.Security.Permissions.dll", - "ref/netstandard2.0/System.Security.Permissions.xml", - "system.security.permissions.4.5.0.nupkg.sha512", - "system.security.permissions.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Security.Principal.Windows/4.7.0": { - "sha512": "ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==", - "type": "package", - "path": "system.security.principal.windows/4.7.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net46/System.Security.Principal.Windows.dll", - "lib/net461/System.Security.Principal.Windows.dll", - "lib/net461/System.Security.Principal.Windows.xml", - "lib/netstandard1.3/System.Security.Principal.Windows.dll", - "lib/netstandard2.0/System.Security.Principal.Windows.dll", - "lib/netstandard2.0/System.Security.Principal.Windows.xml", - "lib/uap10.0.16299/_._", - "ref/net46/System.Security.Principal.Windows.dll", - "ref/net461/System.Security.Principal.Windows.dll", - "ref/net461/System.Security.Principal.Windows.xml", - "ref/netcoreapp3.0/System.Security.Principal.Windows.dll", - "ref/netcoreapp3.0/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/System.Security.Principal.Windows.dll", - "ref/netstandard1.3/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/de/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/es/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/it/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml", - "ref/netstandard2.0/System.Security.Principal.Windows.dll", - "ref/netstandard2.0/System.Security.Principal.Windows.xml", - "ref/uap10.0.16299/_._", - "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll", - "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.xml", - "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll", - "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.xml", - "runtimes/win/lib/net46/System.Security.Principal.Windows.dll", - "runtimes/win/lib/net461/System.Security.Principal.Windows.dll", - "runtimes/win/lib/net461/System.Security.Principal.Windows.xml", - "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll", - "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.xml", - "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll", - "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.xml", - "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll", - "runtimes/win/lib/uap10.0.16299/_._", - "system.security.principal.windows.4.7.0.nupkg.sha512", - "system.security.principal.windows.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.ServiceProcess.ServiceController/4.5.0": { - "sha512": "8DGUtcNHf9TlvSVemKMFiqcOWJ4OdGBgvpcGL/cYossGf5ApMQdPUQS8vXHTBmlbYAcG+JXsjMFGAHp2oJrr+Q==", - "type": "package", - "path": "system.serviceprocess.servicecontroller/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/System.ServiceProcess.ServiceController.dll", - "lib/netstandard1.4/System.ServiceProcess.ServiceController.dll", - "lib/netstandard2.0/System.ServiceProcess.ServiceController.dll", - "ref/net461/System.ServiceProcess.ServiceController.dll", - "ref/net461/System.ServiceProcess.ServiceController.xml", - "ref/netstandard1.4/System.ServiceProcess.ServiceController.dll", - "ref/netstandard1.4/System.ServiceProcess.ServiceController.xml", - "ref/netstandard1.4/de/System.ServiceProcess.ServiceController.xml", - "ref/netstandard1.4/es/System.ServiceProcess.ServiceController.xml", - "ref/netstandard1.4/fr/System.ServiceProcess.ServiceController.xml", - "ref/netstandard1.4/it/System.ServiceProcess.ServiceController.xml", - "ref/netstandard1.4/ja/System.ServiceProcess.ServiceController.xml", - "ref/netstandard1.4/ko/System.ServiceProcess.ServiceController.xml", - "ref/netstandard1.4/ru/System.ServiceProcess.ServiceController.xml", - "ref/netstandard1.4/zh-hans/System.ServiceProcess.ServiceController.xml", - "ref/netstandard1.4/zh-hant/System.ServiceProcess.ServiceController.xml", - "ref/netstandard2.0/System.ServiceProcess.ServiceController.dll", - "ref/netstandard2.0/System.ServiceProcess.ServiceController.xml", - "runtimes/win/lib/net461/System.ServiceProcess.ServiceController.dll", - "runtimes/win/lib/netstandard1.5/System.ServiceProcess.ServiceController.dll", - "runtimes/win/lib/netstandard2.0/System.ServiceProcess.ServiceController.dll", - "system.serviceprocess.servicecontroller.4.5.0.nupkg.sha512", - "system.serviceprocess.servicecontroller.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Text.Encoding/4.3.0": { - "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", - "type": "package", - "path": "system.text.encoding/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.dll", - "ref/netcore50/System.Text.Encoding.xml", - "ref/netcore50/de/System.Text.Encoding.xml", - "ref/netcore50/es/System.Text.Encoding.xml", - "ref/netcore50/fr/System.Text.Encoding.xml", - "ref/netcore50/it/System.Text.Encoding.xml", - "ref/netcore50/ja/System.Text.Encoding.xml", - "ref/netcore50/ko/System.Text.Encoding.xml", - "ref/netcore50/ru/System.Text.Encoding.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.0/System.Text.Encoding.dll", - "ref/netstandard1.0/System.Text.Encoding.xml", - "ref/netstandard1.0/de/System.Text.Encoding.xml", - "ref/netstandard1.0/es/System.Text.Encoding.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.xml", - "ref/netstandard1.0/it/System.Text.Encoding.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.3/System.Text.Encoding.dll", - "ref/netstandard1.3/System.Text.Encoding.xml", - "ref/netstandard1.3/de/System.Text.Encoding.xml", - "ref/netstandard1.3/es/System.Text.Encoding.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.xml", - "ref/netstandard1.3/it/System.Text.Encoding.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.encoding.4.3.0.nupkg.sha512", - "system.text.encoding.nuspec" - ] - }, - "System.Text.Encoding.Extensions/4.0.11": { - "sha512": "jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==", - "type": "package", - "path": "system.text.encoding.extensions/4.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.Extensions.dll", - "ref/netcore50/System.Text.Encoding.Extensions.xml", - "ref/netcore50/de/System.Text.Encoding.Extensions.xml", - "ref/netcore50/es/System.Text.Encoding.Extensions.xml", - "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", - "ref/netcore50/it/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.encoding.extensions.4.0.11.nupkg.sha512", - "system.text.encoding.extensions.nuspec" - ] - }, - "System.Text.Encodings.Web/4.5.0": { - "sha512": "Xg4G4Indi4dqP1iuAiMSwpiWS54ZghzR644OtsRCm/m/lBMG8dUBhLVN7hLm8NNrNTR+iGbshCPTwrvxZPlm4g==", - "type": "package", - "path": "system.text.encodings.web/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netstandard1.0/System.Text.Encodings.Web.dll", - "lib/netstandard1.0/System.Text.Encodings.Web.xml", - "lib/netstandard2.0/System.Text.Encodings.Web.dll", - "lib/netstandard2.0/System.Text.Encodings.Web.xml", - "system.text.encodings.web.4.5.0.nupkg.sha512", - "system.text.encodings.web.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Text.RegularExpressions/4.1.0": { - "sha512": "i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==", - "type": "package", - "path": "system.text.regularexpressions/4.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Text.RegularExpressions.dll", - "lib/netcore50/System.Text.RegularExpressions.dll", - "lib/netstandard1.6/System.Text.RegularExpressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.xml", - "ref/netcore50/de/System.Text.RegularExpressions.xml", - "ref/netcore50/es/System.Text.RegularExpressions.xml", - "ref/netcore50/fr/System.Text.RegularExpressions.xml", - "ref/netcore50/it/System.Text.RegularExpressions.xml", - "ref/netcore50/ja/System.Text.RegularExpressions.xml", - "ref/netcore50/ko/System.Text.RegularExpressions.xml", - "ref/netcore50/ru/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/System.Text.RegularExpressions.dll", - "ref/netstandard1.0/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/System.Text.RegularExpressions.dll", - "ref/netstandard1.3/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/System.Text.RegularExpressions.dll", - "ref/netstandard1.6/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.regularexpressions.4.1.0.nupkg.sha512", - "system.text.regularexpressions.nuspec" - ] - }, - "System.Threading/4.3.0": { - "sha512": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", - "type": "package", - "path": "system.threading/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Threading.dll", - "lib/netstandard1.3/System.Threading.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.dll", - "ref/netcore50/System.Threading.xml", - "ref/netcore50/de/System.Threading.xml", - "ref/netcore50/es/System.Threading.xml", - "ref/netcore50/fr/System.Threading.xml", - "ref/netcore50/it/System.Threading.xml", - "ref/netcore50/ja/System.Threading.xml", - "ref/netcore50/ko/System.Threading.xml", - "ref/netcore50/ru/System.Threading.xml", - "ref/netcore50/zh-hans/System.Threading.xml", - "ref/netcore50/zh-hant/System.Threading.xml", - "ref/netstandard1.0/System.Threading.dll", - "ref/netstandard1.0/System.Threading.xml", - "ref/netstandard1.0/de/System.Threading.xml", - "ref/netstandard1.0/es/System.Threading.xml", - "ref/netstandard1.0/fr/System.Threading.xml", - "ref/netstandard1.0/it/System.Threading.xml", - "ref/netstandard1.0/ja/System.Threading.xml", - "ref/netstandard1.0/ko/System.Threading.xml", - "ref/netstandard1.0/ru/System.Threading.xml", - "ref/netstandard1.0/zh-hans/System.Threading.xml", - "ref/netstandard1.0/zh-hant/System.Threading.xml", - "ref/netstandard1.3/System.Threading.dll", - "ref/netstandard1.3/System.Threading.xml", - "ref/netstandard1.3/de/System.Threading.xml", - "ref/netstandard1.3/es/System.Threading.xml", - "ref/netstandard1.3/fr/System.Threading.xml", - "ref/netstandard1.3/it/System.Threading.xml", - "ref/netstandard1.3/ja/System.Threading.xml", - "ref/netstandard1.3/ko/System.Threading.xml", - "ref/netstandard1.3/ru/System.Threading.xml", - "ref/netstandard1.3/zh-hans/System.Threading.xml", - "ref/netstandard1.3/zh-hant/System.Threading.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Threading.dll", - "system.threading.4.3.0.nupkg.sha512", - "system.threading.nuspec" - ] - }, - "System.Threading.AccessControl/4.5.0": { - "sha512": "ZU4JNV9eHPw3TAdIJCDH07u9EfGFGgNJnaga8aFjcdvIIZKq4A+ZqaQNvUMFIbdCMPceYzt8JT5MdYIXAOlJ9A==", - "type": "package", - "path": "system.threading.accesscontrol/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net46/System.Threading.AccessControl.dll", - "lib/net461/System.Threading.AccessControl.dll", - "lib/netstandard1.3/System.Threading.AccessControl.dll", - "lib/netstandard2.0/System.Threading.AccessControl.dll", - "ref/net46/System.Threading.AccessControl.dll", - "ref/net461/System.Threading.AccessControl.dll", - "ref/net461/System.Threading.AccessControl.xml", - "ref/netstandard1.3/System.Threading.AccessControl.dll", - "ref/netstandard1.3/System.Threading.AccessControl.xml", - "ref/netstandard1.3/de/System.Threading.AccessControl.xml", - "ref/netstandard1.3/es/System.Threading.AccessControl.xml", - "ref/netstandard1.3/fr/System.Threading.AccessControl.xml", - "ref/netstandard1.3/it/System.Threading.AccessControl.xml", - "ref/netstandard1.3/ja/System.Threading.AccessControl.xml", - "ref/netstandard1.3/ko/System.Threading.AccessControl.xml", - "ref/netstandard1.3/ru/System.Threading.AccessControl.xml", - "ref/netstandard1.3/zh-hans/System.Threading.AccessControl.xml", - "ref/netstandard1.3/zh-hant/System.Threading.AccessControl.xml", - "ref/netstandard2.0/System.Threading.AccessControl.dll", - "ref/netstandard2.0/System.Threading.AccessControl.xml", - "runtimes/win/lib/net46/System.Threading.AccessControl.dll", - "runtimes/win/lib/net461/System.Threading.AccessControl.dll", - "runtimes/win/lib/netstandard1.3/System.Threading.AccessControl.dll", - "runtimes/win/lib/netstandard2.0/System.Threading.AccessControl.dll", - "system.threading.accesscontrol.4.5.0.nupkg.sha512", - "system.threading.accesscontrol.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Threading.Tasks/4.3.0": { - "sha512": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", - "type": "package", - "path": "system.threading.tasks/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.dll", - "ref/netcore50/System.Threading.Tasks.xml", - "ref/netcore50/de/System.Threading.Tasks.xml", - "ref/netcore50/es/System.Threading.Tasks.xml", - "ref/netcore50/fr/System.Threading.Tasks.xml", - "ref/netcore50/it/System.Threading.Tasks.xml", - "ref/netcore50/ja/System.Threading.Tasks.xml", - "ref/netcore50/ko/System.Threading.Tasks.xml", - "ref/netcore50/ru/System.Threading.Tasks.xml", - "ref/netcore50/zh-hans/System.Threading.Tasks.xml", - "ref/netcore50/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.0/System.Threading.Tasks.dll", - "ref/netstandard1.0/System.Threading.Tasks.xml", - "ref/netstandard1.0/de/System.Threading.Tasks.xml", - "ref/netstandard1.0/es/System.Threading.Tasks.xml", - "ref/netstandard1.0/fr/System.Threading.Tasks.xml", - "ref/netstandard1.0/it/System.Threading.Tasks.xml", - "ref/netstandard1.0/ja/System.Threading.Tasks.xml", - "ref/netstandard1.0/ko/System.Threading.Tasks.xml", - "ref/netstandard1.0/ru/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.3/System.Threading.Tasks.dll", - "ref/netstandard1.3/System.Threading.Tasks.xml", - "ref/netstandard1.3/de/System.Threading.Tasks.xml", - "ref/netstandard1.3/es/System.Threading.Tasks.xml", - "ref/netstandard1.3/fr/System.Threading.Tasks.xml", - "ref/netstandard1.3/it/System.Threading.Tasks.xml", - "ref/netstandard1.3/ja/System.Threading.Tasks.xml", - "ref/netstandard1.3/ko/System.Threading.Tasks.xml", - "ref/netstandard1.3/ru/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.tasks.4.3.0.nupkg.sha512", - "system.threading.tasks.nuspec" - ] - }, - "System.Threading.Timer/4.0.1": { - "sha512": "saGfUV8uqVW6LeURiqxcGhZ24PzuRNaUBtbhVeuUAvky1naH395A/1nY0P2bWvrw/BreRtIB/EzTDkGBpqCwEw==", - "type": "package", - "path": "system.threading.timer/4.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net451/_._", - "lib/portable-net451+win81+wpa81/_._", - "lib/win81/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net451/_._", - "ref/netcore50/System.Threading.Timer.dll", - "ref/netcore50/System.Threading.Timer.xml", - "ref/netcore50/de/System.Threading.Timer.xml", - "ref/netcore50/es/System.Threading.Timer.xml", - "ref/netcore50/fr/System.Threading.Timer.xml", - "ref/netcore50/it/System.Threading.Timer.xml", - "ref/netcore50/ja/System.Threading.Timer.xml", - "ref/netcore50/ko/System.Threading.Timer.xml", - "ref/netcore50/ru/System.Threading.Timer.xml", - "ref/netcore50/zh-hans/System.Threading.Timer.xml", - "ref/netcore50/zh-hant/System.Threading.Timer.xml", - "ref/netstandard1.2/System.Threading.Timer.dll", - "ref/netstandard1.2/System.Threading.Timer.xml", - "ref/netstandard1.2/de/System.Threading.Timer.xml", - "ref/netstandard1.2/es/System.Threading.Timer.xml", - "ref/netstandard1.2/fr/System.Threading.Timer.xml", - "ref/netstandard1.2/it/System.Threading.Timer.xml", - "ref/netstandard1.2/ja/System.Threading.Timer.xml", - "ref/netstandard1.2/ko/System.Threading.Timer.xml", - "ref/netstandard1.2/ru/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", - "ref/portable-net451+win81+wpa81/_._", - "ref/win81/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.timer.4.0.1.nupkg.sha512", - "system.threading.timer.nuspec" - ] - }, - "ClassLibrary1/1.0.0": { - "type": "project", - "path": "../ClassLibrary1/ClassLibrary1.csproj", - "msbuildProject": "../ClassLibrary1/ClassLibrary1.csproj" - } - }, - "projectFileDependencyGroups": { - ".NETCoreApp,Version=v3.1": [ - "BouncyCastle >= 1.8.9", - "ClassLibrary1 >= 1.0.0", - "Google.Cloud.Kms.V1 >= 2.0.0", - "Microsoft.AspNetCore.Hosting >= 2.1.1", - "Microsoft.AspNetCore.Hosting.WindowsServices >= 2.1.1", - "Serilog.AspNetCore >= 2.1.1", - "Serilog.Formatting.Compact >= 1.0.0", - "Serilog.Settings.Configuration >= 3.0.1", - "Serilog.Sinks.Console >= 3.1.1", - "Serilog.Sinks.EventLog >= 3.1.0", - "Serilog.Sinks.File >= 4.0.0" - ] - }, - "packageFolders": { - "/Users/assafa/.nuget/packages/": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/TestApp1/TestApp1.csproj", - "projectName": "TestApp1", - "projectPath": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/TestApp1/TestApp1.csproj", - "packagesPath": "/Users/assafa/.nuget/packages/", - "outputPath": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/", - "projectStyle": "PackageReference", - "configFilePaths": [ - "/Users/assafa/.nuget/NuGet/NuGet.Config" - ], - "originalTargetFrameworks": [ - "netcoreapp3.1" - ], - "sources": { - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "netcoreapp3.1": { - "targetAlias": "netcoreapp3.1", - "projectReferences": { - "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/ClassLibrary1.csproj": { - "projectPath": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/ClassLibrary1/ClassLibrary1.csproj" - } - } - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - } - }, - "frameworks": { - "netcoreapp3.1": { - "targetAlias": "netcoreapp3.1", - "dependencies": { - "BouncyCastle": { - "target": "Package", - "version": "[1.8.9, )" - }, - "Google.Cloud.Kms.V1": { - "target": "Package", - "version": "[2.0.0, )" - }, - "Microsoft.AspNetCore.Hosting": { - "target": "Package", - "version": "[2.1.1, )" - }, - "Microsoft.AspNetCore.Hosting.WindowsServices": { - "target": "Package", - "version": "[2.1.1, )" - }, - "Serilog.AspNetCore": { - "target": "Package", - "version": "[2.1.1, )" - }, - "Serilog.Formatting.Compact": { - "target": "Package", - "version": "[1.0.0, )" - }, - "Serilog.Settings.Configuration": { - "target": "Package", - "version": "[3.0.1, )" - }, - "Serilog.Sinks.Console": { - "target": "Package", - "version": "[3.1.1, )" - }, - "Serilog.Sinks.EventLog": { - "target": "Package", - "version": "[3.1.0, )" - }, - "Serilog.Sinks.File": { - "target": "Package", - "version": "[4.0.0, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "downloadDependencies": [ - { - "name": "Microsoft.AspNetCore.App.Ref", - "version": "[3.1.10, 3.1.10]" - }, - { - "name": "Microsoft.NETCore.App.Host.osx-x64", - "version": "[3.1.32, 3.1.32]" - }, - { - "name": "Microsoft.NETCore.App.Ref", - "version": "[3.1.0, 3.1.0]" - } - ], - "frameworkReferences": { - "Microsoft.AspNetCore.App": { - "privateAssets": "none" - }, - "Microsoft.NETCore.App": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "/Users/assafa/.dotnet/sdk/8.0.418/RuntimeIdentifierGraph.json" - } - } - }, - "logs": [ - { - "code": "NU1902", - "level": "Warning", - "warningLevel": 1, - "message": "Package 'BouncyCastle' 1.8.9 has a known moderate severity vulnerability, https://github.com/advisories/GHSA-8xfc-gm6g-vgpv", - "libraryId": "BouncyCastle", - "targetGraphs": [ - ".NETCoreApp,Version=v3.1" - ] - }, - { - "code": "NU1902", - "level": "Warning", - "warningLevel": 1, - "message": "Package 'BouncyCastle' 1.8.9 has a known moderate severity vulnerability, https://github.com/advisories/GHSA-m44j-cfrm-g8qc", - "libraryId": "BouncyCastle", - "targetGraphs": [ - ".NETCoreApp,Version=v3.1" - ] - }, - { - "code": "NU1902", - "level": "Warning", - "warningLevel": 1, - "message": "Package 'BouncyCastle' 1.8.9 has a known moderate severity vulnerability, https://github.com/advisories/GHSA-v435-xc8x-wvr9", - "libraryId": "BouncyCastle", - "targetGraphs": [ - ".NETCoreApp,Version=v3.1" - ] - }, - { - "code": "NU1701", - "level": "Warning", - "warningLevel": 1, - "message": "Package 'BouncyCastle 1.8.9' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8, .NETFramework,Version=v4.8.1' instead of the project target framework '.NETCoreApp,Version=v3.1'. This package may not be fully compatible with your project.", - "libraryId": "BouncyCastle", - "targetGraphs": [ - ".NETCoreApp,Version=v3.1" - ] - } - ] -} \ No newline at end of file diff --git a/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/project.nuget.cache b/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/project.nuget.cache deleted file mode 100644 index ee2f9b7b7..000000000 --- a/tests/testdata/projects/package-managers/nuget/multi/TestApp1/obj/project.nuget.cache +++ /dev/null @@ -1,156 +0,0 @@ -{ - "version": 2, - "dgSpecHash": "s6RFy5Qr/bg=", - "success": true, - "projectFilePath": "/Users/assafa/code/jfrog/jfrog-cli-security/tests/testdata/projects/package-managers/nuget/multi/TestApp1/TestApp1.csproj", - "expectedPackageFiles": [ - "/Users/assafa/.nuget/packages/bouncycastle/1.8.9/bouncycastle.1.8.9.nupkg.sha512", - "/Users/assafa/.nuget/packages/google.api.commonprotos/2.0.0/google.api.commonprotos.2.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/google.api.gax/3.0.0/google.api.gax.3.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/google.api.gax.grpc/3.0.0/google.api.gax.grpc.3.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/google.api.gax.grpc.grpccore/3.0.0/google.api.gax.grpc.grpccore.3.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/google.apis/1.44.1/google.apis.1.44.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/google.apis.auth/1.44.1/google.apis.auth.1.44.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/google.apis.core/1.44.1/google.apis.core.1.44.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/google.cloud.iam.v1/2.0.0/google.cloud.iam.v1.2.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/google.cloud.kms.v1/2.0.0/google.cloud.kms.v1.2.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/google.protobuf/3.11.4/google.protobuf.3.11.4.nupkg.sha512", - "/Users/assafa/.nuget/packages/grpc.auth/2.27.0/grpc.auth.2.27.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/grpc.core/2.27.0/grpc.core.2.27.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/grpc.core.api/2.27.0/grpc.core.api.2.27.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.hosting/2.1.1/microsoft.aspnetcore.hosting.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.hosting.abstractions/2.1.1/microsoft.aspnetcore.hosting.abstractions.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.hosting.server.abstractions/2.1.1/microsoft.aspnetcore.hosting.server.abstractions.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.hosting.windowsservices/2.1.1/microsoft.aspnetcore.hosting.windowsservices.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.http/2.1.1/microsoft.aspnetcore.http.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.http.abstractions/2.1.1/microsoft.aspnetcore.http.abstractions.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.http.extensions/2.1.1/microsoft.aspnetcore.http.extensions.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.http.features/2.1.1/microsoft.aspnetcore.http.features.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.webutilities/2.1.1/microsoft.aspnetcore.webutilities.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.bcl.asyncinterfaces/1.0.0/microsoft.bcl.asyncinterfaces.1.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.csharp/4.0.1/microsoft.csharp.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.dotnet.platformabstractions/2.0.4/microsoft.dotnet.platformabstractions.2.0.4.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.configuration/2.1.1/microsoft.extensions.configuration.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.configuration.abstractions/2.1.1/microsoft.extensions.configuration.abstractions.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.configuration.binder/2.1.1/microsoft.extensions.configuration.binder.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.configuration.environmentvariables/2.1.1/microsoft.extensions.configuration.environmentvariables.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.configuration.fileextensions/2.1.1/microsoft.extensions.configuration.fileextensions.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.dependencyinjection/2.1.1/microsoft.extensions.dependencyinjection.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.dependencyinjection.abstractions/2.1.1/microsoft.extensions.dependencyinjection.abstractions.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.dependencymodel/2.0.4/microsoft.extensions.dependencymodel.2.0.4.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.fileproviders.abstractions/2.1.1/microsoft.extensions.fileproviders.abstractions.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.fileproviders.physical/2.1.1/microsoft.extensions.fileproviders.physical.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.filesystemglobbing/2.1.1/microsoft.extensions.filesystemglobbing.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.hosting.abstractions/2.1.1/microsoft.extensions.hosting.abstractions.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.logging/2.1.1/microsoft.extensions.logging.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.logging.abstractions/2.1.1/microsoft.extensions.logging.abstractions.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.objectpool/2.1.1/microsoft.extensions.objectpool.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.options/2.1.1/microsoft.extensions.options.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.options.configurationextensions/2.0.0/microsoft.extensions.options.configurationextensions.2.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.extensions.primitives/2.1.1/microsoft.extensions.primitives.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.net.http.headers/2.1.1/microsoft.net.http.headers.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.netcore.platforms/3.1.0/microsoft.netcore.platforms.3.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.netcore.targets/1.1.0/microsoft.netcore.targets.1.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.win32.registry/4.5.0/microsoft.win32.registry.4.5.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/newtonsoft.json/12.0.3/newtonsoft.json.12.0.3.nupkg.sha512", - "/Users/assafa/.nuget/packages/runtime.native.system/4.3.0/runtime.native.system.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog/2.6.0/serilog.2.6.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog.aspnetcore/2.1.1/serilog.aspnetcore.2.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog.extensions.logging/2.0.0/serilog.extensions.logging.2.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog.formatting.compact/1.0.0/serilog.formatting.compact.1.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog.settings.configuration/3.0.1/serilog.settings.configuration.3.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog.sinks.console/3.1.1/serilog.sinks.console.3.1.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog.sinks.eventlog/3.1.0/serilog.sinks.eventlog.3.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/serilog.sinks.file/4.0.0/serilog.sinks.file.4.0.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.appcontext/4.1.0/system.appcontext.4.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.buffers/4.5.0/system.buffers.4.5.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.collections/4.0.11/system.collections.4.0.11.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.collections.nongeneric/4.0.1/system.collections.nongeneric.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.console/4.3.0/system.console.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.diagnostics.debug/4.0.11/system.diagnostics.debug.4.0.11.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.diagnostics.diagnosticsource/4.5.0/system.diagnostics.diagnosticsource.4.5.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.diagnostics.eventlog/4.5.0/system.diagnostics.eventlog.4.5.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.dynamic.runtime/4.0.11/system.dynamic.runtime.4.0.11.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.globalization/4.3.0/system.globalization.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.io/4.3.0/system.io.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.io.filesystem/4.0.1/system.io.filesystem.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.io.filesystem.accesscontrol/4.7.0/system.io.filesystem.accesscontrol.4.7.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.io.filesystem.primitives/4.0.1/system.io.filesystem.primitives.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.linq/4.1.0/system.linq.4.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.linq.expressions/4.1.0/system.linq.expressions.4.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.memory/4.5.3/system.memory.4.5.3.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.objectmodel/4.0.12/system.objectmodel.4.0.12.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection/4.3.0/system.reflection.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection.emit/4.0.1/system.reflection.emit.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection.emit.ilgeneration/4.0.1/system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection.emit.lightweight/4.0.1/system.reflection.emit.lightweight.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection.extensions/4.3.0/system.reflection.extensions.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection.metadata/1.6.0/system.reflection.metadata.1.6.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection.primitives/4.3.0/system.reflection.primitives.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.reflection.typeextensions/4.1.0/system.reflection.typeextensions.4.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.resources.resourcemanager/4.3.0/system.resources.resourcemanager.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.runtime/4.3.0/system.runtime.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.runtime.compilerservices.unsafe/4.5.1/system.runtime.compilerservices.unsafe.4.5.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.runtime.extensions/4.1.0/system.runtime.extensions.4.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.runtime.handles/4.3.0/system.runtime.handles.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.runtime.interopservices/4.3.0/system.runtime.interopservices.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.runtime.interopservices.runtimeinformation/4.3.0/system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.security.accesscontrol/4.7.0/system.security.accesscontrol.4.7.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.security.permissions/4.5.0/system.security.permissions.4.5.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.security.principal.windows/4.7.0/system.security.principal.windows.4.7.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.serviceprocess.servicecontroller/4.5.0/system.serviceprocess.servicecontroller.4.5.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.text.encoding/4.3.0/system.text.encoding.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.text.encoding.extensions/4.0.11/system.text.encoding.extensions.4.0.11.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.text.encodings.web/4.5.0/system.text.encodings.web.4.5.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.text.regularexpressions/4.1.0/system.text.regularexpressions.4.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.threading/4.3.0/system.threading.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.threading.accesscontrol/4.5.0/system.threading.accesscontrol.4.5.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.threading.tasks/4.3.0/system.threading.tasks.4.3.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/system.threading.timer/4.0.1/system.threading.timer.4.0.1.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.netcore.app.ref/3.1.0/microsoft.netcore.app.ref.3.1.0.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.aspnetcore.app.ref/3.1.10/microsoft.aspnetcore.app.ref.3.1.10.nupkg.sha512", - "/Users/assafa/.nuget/packages/microsoft.netcore.app.host.osx-x64/3.1.32/microsoft.netcore.app.host.osx-x64.3.1.32.nupkg.sha512" - ], - "logs": [ - { - "code": "NU1902", - "level": "Warning", - "warningLevel": 1, - "message": "Package 'BouncyCastle' 1.8.9 has a known moderate severity vulnerability, https://github.com/advisories/GHSA-8xfc-gm6g-vgpv", - "libraryId": "BouncyCastle", - "targetGraphs": [ - ".NETCoreApp,Version=v3.1" - ] - }, - { - "code": "NU1902", - "level": "Warning", - "warningLevel": 1, - "message": "Package 'BouncyCastle' 1.8.9 has a known moderate severity vulnerability, https://github.com/advisories/GHSA-m44j-cfrm-g8qc", - "libraryId": "BouncyCastle", - "targetGraphs": [ - ".NETCoreApp,Version=v3.1" - ] - }, - { - "code": "NU1902", - "level": "Warning", - "warningLevel": 1, - "message": "Package 'BouncyCastle' 1.8.9 has a known moderate severity vulnerability, https://github.com/advisories/GHSA-v435-xc8x-wvr9", - "libraryId": "BouncyCastle", - "targetGraphs": [ - ".NETCoreApp,Version=v3.1" - ] - }, - { - "code": "NU1701", - "level": "Warning", - "warningLevel": 1, - "message": "Package 'BouncyCastle 1.8.9' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8, .NETFramework,Version=v4.8.1' instead of the project target framework '.NETCoreApp,Version=v3.1'. This package may not be fully compatible with your project.", - "libraryId": "BouncyCastle", - "targetGraphs": [ - ".NETCoreApp,Version=v3.1" - ] - } - ] -} \ No newline at end of file