mirror of
https://github.com/ncblakely/GiantsTools
synced 2024-12-22 07:17:22 +01:00
Support updating version information.
This commit is contained in:
parent
24e547fde2
commit
79e5e42527
1
.gitignore
vendored
1
.gitignore
vendored
@ -13,6 +13,7 @@ vcpkg_installed
|
|||||||
*.userosscache
|
*.userosscache
|
||||||
*.sln.docstates
|
*.sln.docstates
|
||||||
appsettings.Development.json
|
appsettings.Development.json
|
||||||
|
appsettings.Production.json
|
||||||
profile.arm.json
|
profile.arm.json
|
||||||
|
|
||||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
@ -35,5 +35,15 @@
|
|||||||
{
|
{
|
||||||
return new Version(this.Major, this.Minor, this.Build, this.Revision);
|
return new Version(this.Major, this.Minor, this.Build, this.Revision);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool operator<(AppVersion a, AppVersion b)
|
||||||
|
{
|
||||||
|
return a.ToVersion() < b.ToVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool operator>(AppVersion a, AppVersion b)
|
||||||
|
{
|
||||||
|
return a.ToVersion() > b.ToVersion();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
6
Giants.DataContract/Contracts/V1/VersionInfoUpdate.cs
Normal file
6
Giants.DataContract/Contracts/V1/VersionInfoUpdate.cs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
using Giants.DataContract.V1;
|
||||||
|
|
||||||
|
namespace Giants.DataContract.Contracts.V1
|
||||||
|
{
|
||||||
|
public record VersionInfoUpdate(string AppName, AppVersion AppVersion, string FileName);
|
||||||
|
}
|
@ -17,8 +17,8 @@
|
|||||||
services.AddSingleton<IServerRegistryStore, CosmosDbServerRegistryStore>();
|
services.AddSingleton<IServerRegistryStore, CosmosDbServerRegistryStore>();
|
||||||
services.AddSingleton<IDateTimeProvider, DefaultDateTimeProvider>();
|
services.AddSingleton<IDateTimeProvider, DefaultDateTimeProvider>();
|
||||||
services.AddSingleton<IMemoryCache, MemoryCache>();
|
services.AddSingleton<IMemoryCache, MemoryCache>();
|
||||||
services.AddSingleton<IUpdaterStore, CosmosDbUpdaterStore>();
|
services.AddSingleton<IVersioningStore, CosmosDbVersioningStore>();
|
||||||
services.AddSingleton<IUpdaterService, UpdaterService>();
|
services.AddSingleton<IVersioningService, VersioningService>();
|
||||||
services.AddSingleton<ICommunityService, CommunityService>();
|
services.AddSingleton<ICommunityService, CommunityService>();
|
||||||
services.AddSingleton<ICrashReportService, CrashReportService>();
|
services.AddSingleton<ICrashReportService, CrashReportService>();
|
||||||
|
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
namespace Giants.Services
|
|
||||||
{
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
public interface IUpdaterService
|
|
||||||
{
|
|
||||||
Task<VersionInfo> GetVersionInfo(string gameName);
|
|
||||||
}
|
|
||||||
}
|
|
12
Giants.Services/Services/IVersioningService.cs
Normal file
12
Giants.Services/Services/IVersioningService.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
namespace Giants.Services
|
||||||
|
{
|
||||||
|
using Giants.DataContract.V1;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
public interface IVersioningService
|
||||||
|
{
|
||||||
|
Task<VersionInfo> GetVersionInfo(string appName);
|
||||||
|
|
||||||
|
Task UpdateVersionInfo(string appName, AppVersion appVersion, string fileName);
|
||||||
|
}
|
||||||
|
}
|
@ -6,11 +6,11 @@
|
|||||||
|
|
||||||
public class InitializerService : IHostedService
|
public class InitializerService : IHostedService
|
||||||
{
|
{
|
||||||
private readonly IUpdaterStore updaterStore;
|
private readonly IVersioningStore updaterStore;
|
||||||
private readonly IServerRegistryStore serverRegistryStore;
|
private readonly IServerRegistryStore serverRegistryStore;
|
||||||
|
|
||||||
public InitializerService(
|
public InitializerService(
|
||||||
IUpdaterStore updaterStore,
|
IVersioningStore updaterStore,
|
||||||
IServerRegistryStore serverRegistryStore)
|
IServerRegistryStore serverRegistryStore)
|
||||||
{
|
{
|
||||||
// TODO: Pick these up from reflection and auto initialize
|
// TODO: Pick these up from reflection and auto initialize
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Giants.Services
|
|
||||||
{
|
|
||||||
public class UpdaterService : IUpdaterService
|
|
||||||
{
|
|
||||||
private readonly IUpdaterStore updaterStore;
|
|
||||||
|
|
||||||
public UpdaterService(IUpdaterStore updaterStore)
|
|
||||||
{
|
|
||||||
this.updaterStore = updaterStore;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<VersionInfo> GetVersionInfo(string appName)
|
|
||||||
{
|
|
||||||
ArgumentUtility.CheckStringForNullOrEmpty(appName, nameof(appName));
|
|
||||||
|
|
||||||
return await this.updaterStore.GetVersionInfo(appName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
71
Giants.Services/Services/VersioningService.cs
Normal file
71
Giants.Services/Services/VersioningService.cs
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
using Giants.DataContract.V1;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Giants.Services
|
||||||
|
{
|
||||||
|
public class VersioningService : IVersioningService
|
||||||
|
{
|
||||||
|
private readonly IVersioningStore versioningStore;
|
||||||
|
private readonly IConfiguration configuration;
|
||||||
|
private readonly ILogger<VersioningService> logger;
|
||||||
|
private const string InstallerContainerName = "public";
|
||||||
|
|
||||||
|
public VersioningService(
|
||||||
|
IVersioningStore updaterStore,
|
||||||
|
IConfiguration configuration,
|
||||||
|
ILogger<VersioningService> logger)
|
||||||
|
{
|
||||||
|
this.versioningStore = updaterStore;
|
||||||
|
this.configuration = configuration;
|
||||||
|
this.logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<VersionInfo> GetVersionInfo(string appName)
|
||||||
|
{
|
||||||
|
ArgumentUtility.CheckStringForNullOrEmpty(appName);
|
||||||
|
|
||||||
|
return this.versioningStore.GetVersionInfo(appName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task UpdateVersionInfo(string appName, AppVersion appVersion, string fileName)
|
||||||
|
{
|
||||||
|
ArgumentUtility.CheckStringForNullOrEmpty(appName);
|
||||||
|
ArgumentUtility.CheckForNull(appVersion);
|
||||||
|
ArgumentUtility.CheckStringForNullOrEmpty(fileName);
|
||||||
|
|
||||||
|
Uri storageAccountUri = new Uri(this.configuration["StorageAccountUri"]);
|
||||||
|
|
||||||
|
VersionInfo versionInfo = await this.GetVersionInfo(appName);
|
||||||
|
if (versionInfo == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentException($"No version information for {appName} found.", nameof(appName));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (appVersion < versionInfo.Version)
|
||||||
|
{
|
||||||
|
throw new ArgumentException($"Version {appVersion.SerializeToJson()} is less than current version {versionInfo.Version.SerializeToJson()}", nameof(appVersion));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fileName.Contains('/') || fileName.Contains('\\'))
|
||||||
|
{
|
||||||
|
throw new ArgumentException("File name must be relative to configured storage account.", nameof(fileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
var installerUri = new Uri(storageAccountUri, $"{InstallerContainerName}/{fileName}");
|
||||||
|
var newVersionInfo = new VersionInfo()
|
||||||
|
{
|
||||||
|
AppName = appName,
|
||||||
|
Version = appVersion,
|
||||||
|
InstallerUri = installerUri,
|
||||||
|
};
|
||||||
|
|
||||||
|
this.logger.LogInformation("Updating version info for {appName}: {versionInfo}", appName, newVersionInfo.SerializeToJson());
|
||||||
|
|
||||||
|
await this.versioningStore.UpdateVersionInfo(newVersionInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -6,14 +6,14 @@
|
|||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
public class CosmosDbUpdaterStore : IUpdaterStore
|
public class CosmosDbVersioningStore : IVersioningStore
|
||||||
{
|
{
|
||||||
private readonly ILogger<CosmosDbServerRegistryStore> logger;
|
private readonly ILogger<CosmosDbServerRegistryStore> logger;
|
||||||
private readonly IMemoryCache memoryCache;
|
private readonly IMemoryCache memoryCache;
|
||||||
private readonly IConfiguration configuration;
|
private readonly IConfiguration configuration;
|
||||||
private CosmosDbClient client;
|
private CosmosDbClient client;
|
||||||
|
|
||||||
public CosmosDbUpdaterStore(
|
public CosmosDbVersioningStore(
|
||||||
ILogger<CosmosDbServerRegistryStore> logger,
|
ILogger<CosmosDbServerRegistryStore> logger,
|
||||||
IMemoryCache memoryCache,
|
IMemoryCache memoryCache,
|
||||||
IConfiguration configuration)
|
IConfiguration configuration)
|
||||||
@ -39,6 +39,11 @@
|
|||||||
return versionInfo;
|
return versionInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task UpdateVersionInfo(VersionInfo versionInfo)
|
||||||
|
{
|
||||||
|
await this.client.UpsertItem(versionInfo);
|
||||||
|
}
|
||||||
|
|
||||||
public async Task Initialize()
|
public async Task Initialize()
|
||||||
{
|
{
|
||||||
this.client = new CosmosDbClient(
|
this.client = new CosmosDbClient(
|
@ -3,13 +3,18 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
public class FileUpdaterStore : IUpdaterStore
|
public class FileVersioningStore : IVersioningStore
|
||||||
{
|
{
|
||||||
public Task<VersionInfo> GetVersionInfo(string appName)
|
public Task<VersionInfo> GetVersionInfo(string appName)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task UpdateVersionInfo(VersionInfo versionInfo)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
public Task Initialize()
|
public Task Initialize()
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
@ -2,10 +2,12 @@
|
|||||||
{
|
{
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
public interface IUpdaterStore
|
public interface IVersioningStore
|
||||||
{
|
{
|
||||||
Task<VersionInfo> GetVersionInfo(string appName);
|
Task<VersionInfo> GetVersionInfo(string appName);
|
||||||
|
|
||||||
|
Task UpdateVersionInfo(VersionInfo versionInfo);
|
||||||
|
|
||||||
Task Initialize();
|
Task Initialize();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,10 +1,5 @@
|
|||||||
namespace Giants.Services
|
namespace Giants.Services
|
||||||
{
|
{
|
||||||
// Decompiled with JetBrains decompiler
|
|
||||||
// Type: Microsoft.VisualStudio.Services.Common.ArgumentUtility
|
|
||||||
// Assembly: Microsoft.VisualStudio.Services.Common, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
|
|
||||||
// MVID: 8C174B92-2E1F-4F71-9E6B-FC8D9F2C517A
|
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
@ -14,7 +9,7 @@
|
|||||||
public static class ArgumentUtility
|
public static class ArgumentUtility
|
||||||
{
|
{
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static void CheckForNull(object var, string varName)
|
public static void CheckForNull(object var, [CallerArgumentExpression("var")] string varName = null)
|
||||||
{
|
{
|
||||||
if (var == null)
|
if (var == null)
|
||||||
throw new ArgumentNullException(varName);
|
throw new ArgumentNullException(varName);
|
||||||
@ -23,18 +18,18 @@
|
|||||||
|
|
||||||
public static void CheckStringForNullOrEmpty(
|
public static void CheckStringForNullOrEmpty(
|
||||||
string stringVar,
|
string stringVar,
|
||||||
string stringVarName)
|
[CallerArgumentExpression("stringVar")] string stringVarName = null)
|
||||||
{
|
{
|
||||||
ArgumentUtility.CheckStringForNullOrEmpty(stringVar, stringVarName, false);
|
ArgumentUtility.CheckStringForNullOrEmpty(stringVar, false, stringVarName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CheckForNonnegativeInt(int var, string varName)
|
public static void CheckForNonnegativeInt(int var, [CallerArgumentExpression("var")] string varName = null)
|
||||||
{
|
{
|
||||||
if (var < 0)
|
if (var < 0)
|
||||||
throw new ArgumentOutOfRangeException(varName);
|
throw new ArgumentOutOfRangeException(varName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CheckForNonPositiveInt(int var, string varName)
|
public static void CheckForNonPositiveInt(int var, [CallerArgumentExpression("var")] string varName = null)
|
||||||
{
|
{
|
||||||
if (var <= 0)
|
if (var <= 0)
|
||||||
throw new ArgumentOutOfRangeException(varName);
|
throw new ArgumentOutOfRangeException(varName);
|
||||||
@ -42,8 +37,8 @@
|
|||||||
|
|
||||||
public static void CheckStringForNullOrEmpty(
|
public static void CheckStringForNullOrEmpty(
|
||||||
string stringVar,
|
string stringVar,
|
||||||
string stringVarName,
|
bool trim,
|
||||||
bool trim)
|
[CallerArgumentExpression("stringVar")] string stringVarName = null)
|
||||||
{
|
{
|
||||||
ArgumentUtility.CheckForNull((object)stringVar, stringVarName);
|
ArgumentUtility.CheckForNull((object)stringVar, stringVarName);
|
||||||
if (trim)
|
if (trim)
|
||||||
@ -54,9 +49,9 @@
|
|||||||
|
|
||||||
public static void CheckStringLength(
|
public static void CheckStringLength(
|
||||||
string stringVar,
|
string stringVar,
|
||||||
string stringVarName,
|
|
||||||
int maxLength,
|
int maxLength,
|
||||||
int minLength = 0)
|
int minLength = 0,
|
||||||
|
[CallerArgumentExpression("stringVar")] string stringVarName = null)
|
||||||
{
|
{
|
||||||
ArgumentUtility.CheckForNull((object)stringVar, stringVarName);
|
ArgumentUtility.CheckForNull((object)stringVar, stringVarName);
|
||||||
if (stringVar.Length < minLength || stringVar.Length > maxLength)
|
if (stringVar.Length < minLength || stringVar.Length > maxLength)
|
||||||
@ -65,7 +60,7 @@
|
|||||||
|
|
||||||
public static void CheckEnumerableForNullOrEmpty(
|
public static void CheckEnumerableForNullOrEmpty(
|
||||||
IEnumerable enumerable,
|
IEnumerable enumerable,
|
||||||
string enumerableName)
|
[CallerArgumentExpression("enumerable")] string enumerableName = null)
|
||||||
{
|
{
|
||||||
ArgumentUtility.CheckForNull((object)enumerable, enumerableName);
|
ArgumentUtility.CheckForNull((object)enumerable, enumerableName);
|
||||||
if (!enumerable.GetEnumerator().MoveNext())
|
if (!enumerable.GetEnumerator().MoveNext())
|
||||||
@ -74,7 +69,7 @@
|
|||||||
|
|
||||||
public static void CheckEnumerableForNullElement(
|
public static void CheckEnumerableForNullElement(
|
||||||
IEnumerable enumerable,
|
IEnumerable enumerable,
|
||||||
string enumerableName)
|
[CallerArgumentExpression("enumerable")] string enumerableName = null)
|
||||||
{
|
{
|
||||||
ArgumentUtility.CheckForNull((object)enumerable, enumerableName);
|
ArgumentUtility.CheckForNull((object)enumerable, enumerableName);
|
||||||
foreach (object obj in enumerable)
|
foreach (object obj in enumerable)
|
||||||
@ -84,7 +79,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CheckForEmptyGuid(Guid guid, string varName)
|
public static void CheckForEmptyGuid(Guid guid, [CallerArgumentExpression("guid")] string varName = null)
|
||||||
{
|
{
|
||||||
if (guid.Equals(Guid.Empty))
|
if (guid.Equals(Guid.Empty))
|
||||||
throw new ArgumentException("EmptyGuidNotAllowed", varName);
|
throw new ArgumentException("EmptyGuidNotAllowed", varName);
|
||||||
@ -94,7 +89,7 @@
|
|||||||
int value,
|
int value,
|
||||||
int minValue,
|
int minValue,
|
||||||
int maxValue,
|
int maxValue,
|
||||||
string varName)
|
[CallerArgumentExpression("value")] string varName = null)
|
||||||
{
|
{
|
||||||
if (value < minValue || value > maxValue)
|
if (value < minValue || value > maxValue)
|
||||||
throw new ArgumentOutOfRangeException(varName, "ValueOutOfRange");
|
throw new ArgumentOutOfRangeException(varName, "ValueOutOfRange");
|
||||||
@ -103,8 +98,8 @@
|
|||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static void CheckForOutOfRange<T>(
|
public static void CheckForOutOfRange<T>(
|
||||||
T var,
|
T var,
|
||||||
string varName,
|
T minimum,
|
||||||
T minimum)
|
[CallerArgumentExpression("var")] string varName = null)
|
||||||
where T : IComparable<T>
|
where T : IComparable<T>
|
||||||
{
|
{
|
||||||
ArgumentUtility.CheckForNull((object)var, varName);
|
ArgumentUtility.CheckForNull((object)var, varName);
|
||||||
@ -115,9 +110,9 @@
|
|||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static void CheckForOutOfRange(
|
public static void CheckForOutOfRange(
|
||||||
int var,
|
int var,
|
||||||
string varName,
|
|
||||||
int minimum,
|
int minimum,
|
||||||
int maximum)
|
int maximum,
|
||||||
|
[CallerArgumentExpression("var")] string varName = null)
|
||||||
{
|
{
|
||||||
if (var < minimum || var > maximum)
|
if (var < minimum || var > maximum)
|
||||||
throw new ArgumentOutOfRangeException(varName, (object)var, "OutOfRange");
|
throw new ArgumentOutOfRangeException(varName, (object)var, "OutOfRange");
|
||||||
@ -126,9 +121,9 @@
|
|||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static void CheckForOutOfRange(
|
public static void CheckForOutOfRange(
|
||||||
long var,
|
long var,
|
||||||
string varName,
|
|
||||||
long minimum,
|
long minimum,
|
||||||
long maximum)
|
long maximum,
|
||||||
|
[CallerArgumentExpression("var")] string varName = null)
|
||||||
{
|
{
|
||||||
if (var < minimum || var > maximum)
|
if (var < minimum || var > maximum)
|
||||||
throw new ArgumentOutOfRangeException(varName, (object)var, "OutOfRange");
|
throw new ArgumentOutOfRangeException(varName, (object)var, "OutOfRange");
|
||||||
@ -136,18 +131,12 @@
|
|||||||
|
|
||||||
public static void CheckForDateTimeRange(
|
public static void CheckForDateTimeRange(
|
||||||
DateTime var,
|
DateTime var,
|
||||||
string varName,
|
|
||||||
DateTime minimum,
|
DateTime minimum,
|
||||||
DateTime maximum)
|
DateTime maximum,
|
||||||
|
[CallerArgumentExpression("var")] string varName = null)
|
||||||
{
|
{
|
||||||
if (var < minimum || var > maximum)
|
if (var < minimum || var > maximum)
|
||||||
throw new ArgumentOutOfRangeException(varName, (object)var, "OutOfRange");
|
throw new ArgumentOutOfRangeException(varName, (object)var, "OutOfRange");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void EnsureIsNull(object var, string varName)
|
|
||||||
{
|
|
||||||
if (var != null)
|
|
||||||
throw new ArgumentException("NullValueNecessary");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
12
Giants.Services/Utility/ObjectExtensions.cs
Normal file
12
Giants.Services/Utility/ObjectExtensions.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
using System.Text.Json;
|
||||||
|
|
||||||
|
namespace Giants.Services
|
||||||
|
{
|
||||||
|
public static class ObjectExtensions
|
||||||
|
{
|
||||||
|
public static string SerializeToJson(this object obj)
|
||||||
|
{
|
||||||
|
return JsonSerializer.Serialize(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,10 @@
|
|||||||
using System.Threading.Tasks;
|
using AutoMapper;
|
||||||
using AutoMapper;
|
using Giants.DataContract.Contracts.V1;
|
||||||
using Giants.Services;
|
using Giants.Services;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.Identity.Web.Resource;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Giants.WebApi.Controllers
|
namespace Giants.WebApi.Controllers
|
||||||
{
|
{
|
||||||
@ -12,22 +15,36 @@ namespace Giants.WebApi.Controllers
|
|||||||
public class VersionController : ControllerBase
|
public class VersionController : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly IMapper mapper;
|
private readonly IMapper mapper;
|
||||||
private readonly IUpdaterService updaterService;
|
private readonly IVersioningService versioningService;
|
||||||
|
private const string VersionWriteScope = "App.Write";
|
||||||
|
|
||||||
public VersionController(
|
public VersionController(
|
||||||
IMapper mapper,
|
IMapper mapper,
|
||||||
IUpdaterService updaterService)
|
IVersioningService versioningService)
|
||||||
{
|
{
|
||||||
this.mapper = mapper;
|
this.mapper = mapper;
|
||||||
this.updaterService = updaterService;
|
this.versioningService = versioningService;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public async Task<DataContract.V1.VersionInfo> GetVersionInfo(string appName)
|
public async Task<DataContract.V1.VersionInfo> GetVersionInfo(string appName)
|
||||||
{
|
{
|
||||||
Services.VersionInfo versionInfo = await this.updaterService.GetVersionInfo(appName);
|
ArgumentUtility.CheckStringForNullOrEmpty(appName);
|
||||||
|
|
||||||
|
Services.VersionInfo versionInfo = await this.versioningService.GetVersionInfo(appName);
|
||||||
|
|
||||||
return this.mapper.Map<DataContract.V1.VersionInfo>(versionInfo);
|
return this.mapper.Map<DataContract.V1.VersionInfo>(versionInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Authorize]
|
||||||
|
[RequiredScopeOrAppPermission(
|
||||||
|
AcceptedAppPermission = new[] { VersionWriteScope }) ]
|
||||||
|
[HttpPost]
|
||||||
|
public async Task UpdateVersionInfo([FromBody] VersionInfoUpdate versionInfoUpdate)
|
||||||
|
{
|
||||||
|
ArgumentUtility.CheckForNull(versionInfoUpdate);
|
||||||
|
|
||||||
|
await this.versioningService.UpdateVersionInfo(versionInfoUpdate.AppName, versionInfoUpdate.AppVersion, versionInfoUpdate.FileName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,8 +11,9 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AutoMapper" Version="10.0.0" />
|
<PackageReference Include="AutoMapper" Version="10.0.0" />
|
||||||
<PackageReference Include="Microsoft.ApplicationInsights" Version="2.14.0" />
|
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.21.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="4.1.1" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="4.1.1" />
|
||||||
|
<PackageReference Include="Microsoft.Identity.Web" Version="1.25.2" />
|
||||||
<PackageReference Include="NSwag.AspNetCore" Version="13.7.0" />
|
<PackageReference Include="NSwag.AspNetCore" Version="13.7.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using Giants.Services;
|
using Giants.Services;
|
||||||
|
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
@ -8,6 +9,12 @@ using Microsoft.Extensions.Configuration;
|
|||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
|
using Microsoft.Identity.Web;
|
||||||
|
using Microsoft.IdentityModel.Logging;
|
||||||
|
using System;
|
||||||
|
using System.IdentityModel.Tokens.Jwt;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Giants.Web
|
namespace Giants.Web
|
||||||
{
|
{
|
||||||
@ -32,6 +39,47 @@ namespace Giants.Web
|
|||||||
|
|
||||||
services.AddOpenApiDocument();
|
services.AddOpenApiDocument();
|
||||||
|
|
||||||
|
services.AddApplicationInsightsTelemetry();
|
||||||
|
|
||||||
|
IdentityModelEventSource.ShowPII = true;
|
||||||
|
|
||||||
|
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
|
||||||
|
.AddMicrosoftIdentityWebApi(options =>
|
||||||
|
{
|
||||||
|
Configuration.Bind("AzureAd", options);
|
||||||
|
options.Events = new JwtBearerEvents();
|
||||||
|
options.Events.OnAuthenticationFailed = async context =>
|
||||||
|
{
|
||||||
|
await Task.CompletedTask;
|
||||||
|
};
|
||||||
|
options.Events.OnForbidden = async context =>
|
||||||
|
{
|
||||||
|
await Task.CompletedTask;
|
||||||
|
};
|
||||||
|
options.Events.OnChallenge = async context =>
|
||||||
|
{
|
||||||
|
await Task.CompletedTask;
|
||||||
|
};
|
||||||
|
options.Events.OnTokenValidated = async context =>
|
||||||
|
{
|
||||||
|
string[] allowedClientApps = this.Configuration.GetValue<string>("AllowedClientIds").Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
|
||||||
|
string clientAppId = context?.Principal?.Claims
|
||||||
|
.FirstOrDefault(x => x.Type == "azp" || x.Type == "appid")?.Value;
|
||||||
|
|
||||||
|
if (clientAppId == null || !allowedClientApps.Contains(clientAppId))
|
||||||
|
{
|
||||||
|
throw new UnauthorizedAccessException("The client app is not permitted to access this API");
|
||||||
|
}
|
||||||
|
|
||||||
|
await Task.CompletedTask;
|
||||||
|
};
|
||||||
|
|
||||||
|
}, options =>
|
||||||
|
{
|
||||||
|
Configuration.Bind("AzureAd", options);
|
||||||
|
});
|
||||||
|
|
||||||
services.AddHttpContextAccessor();
|
services.AddHttpContextAccessor();
|
||||||
services.TryAddSingleton<IActionContextAccessor, ActionContextAccessor>();
|
services.TryAddSingleton<IActionContextAccessor, ActionContextAccessor>();
|
||||||
|
|
||||||
@ -46,6 +94,7 @@ namespace Giants.Web
|
|||||||
{
|
{
|
||||||
if (env.IsDevelopment())
|
if (env.IsDevelopment())
|
||||||
{
|
{
|
||||||
|
Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;
|
||||||
app.UseDeveloperExceptionPage();
|
app.UseDeveloperExceptionPage();
|
||||||
app.UseOpenApi();
|
app.UseOpenApi();
|
||||||
}
|
}
|
||||||
@ -54,8 +103,10 @@ namespace Giants.Web
|
|||||||
|
|
||||||
app.UseRouting();
|
app.UseRouting();
|
||||||
|
|
||||||
|
app.UseAuthentication();
|
||||||
app.UseAuthorization();
|
app.UseAuthorization();
|
||||||
|
|
||||||
|
|
||||||
app.UseEndpoints(endpoints =>
|
app.UseEndpoints(endpoints =>
|
||||||
{
|
{
|
||||||
endpoints.MapControllers();
|
endpoints.MapControllers();
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
"ServerTimeoutPeriodInMinutes": "7",
|
"ServerTimeoutPeriodInMinutes": "7",
|
||||||
"ServerCleanupIntervalInMinutes": "1",
|
"ServerCleanupIntervalInMinutes": "1",
|
||||||
"MaxServerCount": 1000,
|
"MaxServerCount": 1000,
|
||||||
"MaxServersPerIp": 5,
|
"MaxServersPerIp": 5,
|
||||||
"DiscordUri": "https://discord.gg/Avj4azU",
|
"DiscordUri": "https://discord.gg/Avj4azU",
|
||||||
"BlobConnectionString": "",
|
"BlobConnectionString": "",
|
||||||
"CrashBlobContainerName": "crashes"
|
"CrashBlobContainerName": "crashes"
|
||||||
|
@ -12,14 +12,23 @@
|
|||||||
"System.Reflection.Emit": "4.7.0"
|
"System.Reflection.Emit": "4.7.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.ApplicationInsights": {
|
"Microsoft.ApplicationInsights.AspNetCore": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[2.14.0, )",
|
"requested": "[2.21.0, )",
|
||||||
"resolved": "2.14.0",
|
"resolved": "2.21.0",
|
||||||
"contentHash": "j66/uh1Mb5Px/nvMwDWx73Wd9MdO2X+zsDw9JScgm5Siz5r4Cw8sTW+VCrjurFkpFqrNkj+0wbfRHDBD9b+elA==",
|
"contentHash": "d+7MB4YdUMc9Mtq2u6C7TritzC0eKfHkhGmlnNckDDQiOQuk9IHMPxUmPBRMm/tn+db8fI/BYno9jGxLhI+SZw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"System.Diagnostics.DiagnosticSource": "4.6.0",
|
"Microsoft.ApplicationInsights": "2.21.0",
|
||||||
"System.Memory": "4.5.4"
|
"Microsoft.ApplicationInsights.DependencyCollector": "2.21.0",
|
||||||
|
"Microsoft.ApplicationInsights.EventCounterCollector": "2.21.0",
|
||||||
|
"Microsoft.ApplicationInsights.PerfCounterCollector": "2.21.0",
|
||||||
|
"Microsoft.ApplicationInsights.WindowsServer": "2.21.0",
|
||||||
|
"Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel": "2.21.0",
|
||||||
|
"Microsoft.AspNetCore.Hosting": "2.1.1",
|
||||||
|
"Microsoft.AspNetCore.Http": "2.1.22",
|
||||||
|
"Microsoft.Extensions.Configuration.Json": "3.1.0",
|
||||||
|
"Microsoft.Extensions.Logging.ApplicationInsights": "2.21.0",
|
||||||
|
"System.Text.Encodings.Web": "4.7.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.AspNetCore.Mvc.Versioning": {
|
"Microsoft.AspNetCore.Mvc.Versioning": {
|
||||||
@ -28,6 +37,25 @@
|
|||||||
"resolved": "4.1.1",
|
"resolved": "4.1.1",
|
||||||
"contentHash": "ioFhRz5gm2Ny+t758Jab638eTG8Uui++klcH00EgBuU/BQbjkbFY+9xw/CkoAChIcrJsoQP2NKDYJ09zN5jR0g=="
|
"contentHash": "ioFhRz5gm2Ny+t758Jab638eTG8Uui++klcH00EgBuU/BQbjkbFY+9xw/CkoAChIcrJsoQP2NKDYJ09zN5jR0g=="
|
||||||
},
|
},
|
||||||
|
"Microsoft.Identity.Web": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.25.2, )",
|
||||||
|
"resolved": "1.25.2",
|
||||||
|
"contentHash": "AMKPBr5ldwZhv74Ks1ZmO8JHaT438pfLX2yxE00R+MhU9ZJm0VyozD0RW7kTy8U5su9pMKXQk438rI/PJ4PFpA==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Authentication.JwtBearer": "5.0.12",
|
||||||
|
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "5.0.12",
|
||||||
|
"Microsoft.Identity.Web.Certificate": "1.25.2",
|
||||||
|
"Microsoft.Identity.Web.Certificateless": "1.25.2",
|
||||||
|
"Microsoft.Identity.Web.TokenCache": "1.25.2",
|
||||||
|
"Microsoft.IdentityModel.Logging": "6.20.0",
|
||||||
|
"Microsoft.IdentityModel.LoggingExtensions": "6.20.0",
|
||||||
|
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.20.0",
|
||||||
|
"Microsoft.IdentityModel.Validators": "6.20.0",
|
||||||
|
"System.IdentityModel.Tokens.Jwt": "6.20.0",
|
||||||
|
"System.Text.Encodings.Web": "5.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"NSwag.AspNetCore": {
|
"NSwag.AspNetCore": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[13.7.0, )",
|
"requested": "[13.7.0, )",
|
||||||
@ -49,8 +77,8 @@
|
|||||||
},
|
},
|
||||||
"Azure.Core": {
|
"Azure.Core": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.4.1",
|
"resolved": "1.6.0",
|
||||||
"contentHash": "6LbGLiZwlU6SfOaINCfrQ+f91bRWZ8XvB90Qfm69x1t3z+5D4jmXnQiuPYPZcgtxFjPKA3IwyHGuDZRkSo1Urg==",
|
"contentHash": "kI4m2NsODPOrxo0OoKjk6B3ADbdovhDQIEmI4039upjjZKRaewVLx/Uz4DfRa/NtnIRZQPUALe1yvdHWAoRt4w==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Bcl.AsyncInterfaces": "1.0.0",
|
"Microsoft.Bcl.AsyncInterfaces": "1.0.0",
|
||||||
"System.Buffers": "4.5.0",
|
"System.Buffers": "4.5.0",
|
||||||
@ -61,6 +89,42 @@
|
|||||||
"System.Threading.Tasks.Extensions": "4.5.2"
|
"System.Threading.Tasks.Extensions": "4.5.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Azure.Identity": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "1.3.0",
|
||||||
|
"contentHash": "l1SYfZKOFBuUFG7C2SWHmJcrQQaiXgBdVCycx4vcZQkC6efDVt7mzZ5pfJAFEJDBUq7mjRQ0RPq9ZDGdSswqMg==",
|
||||||
|
"dependencies": {
|
||||||
|
"Azure.Core": "1.6.0",
|
||||||
|
"Microsoft.Identity.Client": "4.22.0",
|
||||||
|
"Microsoft.Identity.Client.Extensions.Msal": "2.16.5",
|
||||||
|
"System.Memory": "4.5.3",
|
||||||
|
"System.Security.Cryptography.ProtectedData": "4.5.0",
|
||||||
|
"System.Text.Json": "4.6.0",
|
||||||
|
"System.Threading.Tasks.Extensions": "4.5.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Azure.Security.KeyVault.Certificates": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "4.1.0",
|
||||||
|
"contentHash": "I+irkjO1JBzJWYBLhW835/b7GllxkjMbQwrirhxUJsf6FQnH+eIGin4T/jBLgyuu1zPsn2AxiUFju6Shb/uiNA==",
|
||||||
|
"dependencies": {
|
||||||
|
"Azure.Core": "1.0.2",
|
||||||
|
"System.Memory": "4.5.3",
|
||||||
|
"System.Text.Json": "4.6.0",
|
||||||
|
"System.Threading.Tasks.Extensions": "4.5.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Azure.Security.KeyVault.Secrets": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "4.1.0",
|
||||||
|
"contentHash": "SK4XTPEaXI5UTdtSkr8TN4ZKnvazNHhybnnkxHgOyRAhV9ObcIjbrNlhS4ZeR8XtI+HidL+v/WIIVfR1+jKB8Q==",
|
||||||
|
"dependencies": {
|
||||||
|
"Azure.Core": "1.0.2",
|
||||||
|
"System.Memory": "4.5.3",
|
||||||
|
"System.Text.Json": "4.6.0",
|
||||||
|
"System.Threading.Tasks.Extensions": "4.5.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Azure.Storage.Blobs": {
|
"Azure.Storage.Blobs": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "12.5.1",
|
"resolved": "12.5.1",
|
||||||
@ -79,6 +143,78 @@
|
|||||||
"Azure.Core": "1.4.1"
|
"Azure.Core": "1.4.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Microsoft.ApplicationInsights": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "2.21.0",
|
||||||
|
"contentHash": "btZEDWAFNo9CoYliMCriSMTX3ruRGZTtYw4mo2XyyfLlowFicYVM2Xszi5evDG95QRYV7MbbH3D2RqVwfZlJHw==",
|
||||||
|
"dependencies": {
|
||||||
|
"System.Diagnostics.DiagnosticSource": "5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.ApplicationInsights.DependencyCollector": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "2.21.0",
|
||||||
|
"contentHash": "XArm5tBEUdWs05eDKxnsUUQBduJ45DEQOMnpL7wNWxBpgxn+dbl8nObA2jzExbQhbw6P74lc/1f+RdV4iPaOgg==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.ApplicationInsights": "2.21.0",
|
||||||
|
"System.Diagnostics.DiagnosticSource": "5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.ApplicationInsights.EventCounterCollector": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "2.21.0",
|
||||||
|
"contentHash": "MfF9IKxx9UhaYHVFQ1VKw0LYvBhkjZtPNUmCTYlGws0N7D2EaupmeIj/EWalqP47sQRedR9+VzARsONcwH8OCA==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.ApplicationInsights": "2.21.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.ApplicationInsights.PerfCounterCollector": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "2.21.0",
|
||||||
|
"contentHash": "RcckSVkfu+NkDie6/HyM6AVLHmTMVZrUrYnDeJdvRByOc2a+DqTM6KXMtsTHW/5+K7DT9QK5ZrZdi0YbBW8PVA==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.ApplicationInsights": "2.21.0",
|
||||||
|
"Microsoft.Extensions.Caching.Memory": "1.0.0",
|
||||||
|
"System.Diagnostics.PerformanceCounter": "4.7.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.ApplicationInsights.WindowsServer": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "2.21.0",
|
||||||
|
"contentHash": "Xbhss7dqbKyE5PENm1lRA9oxzhKEouKGMzgNqJ9xTHPZiogDwKVMK02qdbVhvaXKf9zG8RvvIpM5tnGR5o+Onw==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.ApplicationInsights": "2.21.0",
|
||||||
|
"Microsoft.ApplicationInsights.DependencyCollector": "2.21.0",
|
||||||
|
"Microsoft.ApplicationInsights.PerfCounterCollector": "2.21.0",
|
||||||
|
"Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel": "2.21.0",
|
||||||
|
"System.Diagnostics.DiagnosticSource": "5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "2.21.0",
|
||||||
|
"contentHash": "7D4oq+9YyagEPx+0kNNOXdG6c7IDM/2d+637nAYKFqdWhNN0IqHZEed0DuG28waj7hBSLM9lBO+B8qQqgfE4rw==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.ApplicationInsights": "2.21.0",
|
||||||
|
"System.IO.FileSystem.AccessControl": "4.7.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Authentication.JwtBearer": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "5.0.12",
|
||||||
|
"contentHash": "3JwsAApGFKFBVvlV8vMNdF04Mb8zPuHT5q8sunwNTbaN4JtjXLVGKAyUCy+I1JeqP+3EKfZxe3wMj4fVEOLKlA==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.7.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Authentication.OpenIdConnect": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "5.0.12",
|
||||||
|
"contentHash": "YtPrKHTie1TZeqnlbIKAEU51alFD+SCvTIu2L2no+UGStU5RzEqRuJvVfe+aP9tSrJE+Wyy+YdUqZLtA9QfkHg==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.7.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.Authorization": {
|
"Microsoft.AspNetCore.Authorization": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.0.2",
|
"resolved": "1.0.2",
|
||||||
@ -89,82 +225,108 @@
|
|||||||
"System.Security.Claims": "4.0.1"
|
"System.Security.Claims": "4.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Cryptography.Internal": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "5.0.8",
|
||||||
|
"contentHash": "giHheyNLOb+cAHpb8b0GhaS0xJ+hAIIDSyWPe5aOPwpgctsjOPRKFyn/268xv+zBVuEtyRJJEnBUlkOVzyIpZA=="
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.DataProtection": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "5.0.8",
|
||||||
|
"contentHash": "wCMdfuKA+ePcB4nEDau5tNhhhC5NFa2LEXoRhk2Xaot13FFlyKA4t5UzIyV/OnAfB/bqbAIvChJD+biWY7u5SA==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Cryptography.Internal": "5.0.8",
|
||||||
|
"Microsoft.AspNetCore.DataProtection.Abstractions": "5.0.8",
|
||||||
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
||||||
|
"Microsoft.Extensions.Hosting.Abstractions": "5.0.0",
|
||||||
|
"Microsoft.Extensions.Logging.Abstractions": "5.0.0",
|
||||||
|
"Microsoft.Extensions.Options": "5.0.0",
|
||||||
|
"Microsoft.Win32.Registry": "5.0.0",
|
||||||
|
"System.Security.Cryptography.Xml": "5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.DataProtection.Abstractions": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "5.0.8",
|
||||||
|
"contentHash": "ZI9S2NGjuOKXN3PxJcF8EKVwd1cqpWyUSqiVoH8gqq5tlHaXULwPmoR0DBOFON4sEFETRWI69f5RQ3tJWw205A=="
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Hosting": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "2.1.1",
|
||||||
|
"contentHash": "MqYc0DUxrhAPnb5b4HFspxsoJT+gJlLsliSxIgovf4BsbmpaXQId0/pDiVzLuEbmks2w1/lRfY8w0lQOuK1jQQ==",
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.Hosting.Abstractions": {
|
"Microsoft.AspNetCore.Hosting.Abstractions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.0.2",
|
"resolved": "2.1.1",
|
||||||
"contentHash": "CSVd9h1TdWDT2lt62C4FcgaF285J4O3MaOqTVvc7xP+3bFiwXcdp6qEd+u1CQrdJ+xJuslR+tvDW7vWQ/OH5Qw==",
|
"contentHash": "76cKcp2pWhvdV2TXTqMg/DyW7N6cDzTEhtL8vVWFShQN+Ylwv3eO/vUQr2BS3Hz4IZHEpL+FOo2T+MtymHDqDQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.AspNetCore.Hosting.Server.Abstractions": "1.0.2",
|
"Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.1.1",
|
||||||
"Microsoft.AspNetCore.Http.Abstractions": "1.0.2",
|
"Microsoft.AspNetCore.Http.Abstractions": "2.1.1",
|
||||||
"Microsoft.Extensions.Configuration.Abstractions": "1.0.2",
|
"Microsoft.Extensions.Hosting.Abstractions": "2.1.1"
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.2",
|
|
||||||
"Microsoft.Extensions.FileProviders.Abstractions": "1.0.1",
|
|
||||||
"Microsoft.Extensions.Logging.Abstractions": "1.0.2"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.AspNetCore.Hosting.Server.Abstractions": {
|
"Microsoft.AspNetCore.Hosting.Server.Abstractions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.0.2",
|
"resolved": "2.1.1",
|
||||||
"contentHash": "6ZtFh0huTlrUl72u9Vic0icCVIQiEx7ULFDx3P7BpOI97wjb0GAXf8B4m9uSpSGf0vqLEKFlkPbvXF0MXXEzhw==",
|
"contentHash": "+vD7HJYzAXNq17t+NgRkpS38cxuAyOBu8ixruOiA3nWsybozolUdALWiZ5QFtGRzajSLPFA2YsbO3NPcqoUwcw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.AspNetCore.Http.Features": "1.0.2",
|
"Microsoft.AspNetCore.Http.Features": "2.1.1",
|
||||||
"Microsoft.Extensions.Configuration.Abstractions": "1.0.2"
|
"Microsoft.Extensions.Configuration.Abstractions": "2.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.AspNetCore.Http": {
|
"Microsoft.AspNetCore.Http": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.0.2",
|
"resolved": "2.1.22",
|
||||||
"contentHash": "w9AJMakVIuP0KhLe3pdwWNDSWhwDEjfRyai907iGmia0a5O3OBJw9JMhpenVHHeXAARwLi/zVn9oVwd1RFKzTA==",
|
"contentHash": "+Blk++1JWqghbl8+3azQmKhiNZA5wAepL9dY2I6KVmu2Ri07MAcvAVC888qUvO7yd7xgRgZOMfihezKg14O/2A==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.AspNetCore.Http.Abstractions": "1.0.2",
|
"Microsoft.AspNetCore.Http.Abstractions": "2.1.1",
|
||||||
"Microsoft.AspNetCore.WebUtilities": "1.0.2",
|
"Microsoft.AspNetCore.WebUtilities": "2.1.1",
|
||||||
"Microsoft.Extensions.ObjectPool": "1.0.1",
|
"Microsoft.Extensions.ObjectPool": "2.1.1",
|
||||||
"Microsoft.Extensions.Options": "1.0.2",
|
"Microsoft.Extensions.Options": "2.1.1",
|
||||||
"Microsoft.Net.Http.Headers": "1.0.2",
|
"Microsoft.Net.Http.Headers": "2.1.1"
|
||||||
"System.Buffers": "4.0.0",
|
|
||||||
"System.Threading": "4.0.11"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.AspNetCore.Http.Abstractions": {
|
"Microsoft.AspNetCore.Http.Abstractions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.0.2",
|
"resolved": "2.1.1",
|
||||||
"contentHash": "peJqc7BgYwhTzOIfFHX3/esV6iOXf17Afekh6mCYuUD3aWyaBwQuWYaKLR+RnjBEWaSzpCDgfCMMp5Y3LUXsiA==",
|
"contentHash": "kQUEVOU4loc8CPSb2WoHFTESqwIa8Ik7ysCBfTwzHAd0moWovc9JQLmhDIHlYLjHbyexqZAlkq/FPRUZqokebw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.AspNetCore.Http.Features": "1.0.2",
|
"Microsoft.AspNetCore.Http.Features": "2.1.1",
|
||||||
"System.Globalization.Extensions": "4.0.1",
|
"System.Text.Encodings.Web": "4.5.0"
|
||||||
"System.Linq.Expressions": "4.1.1",
|
|
||||||
"System.Reflection.TypeExtensions": "4.1.0",
|
|
||||||
"System.Runtime.InteropServices": "4.1.0",
|
|
||||||
"System.Text.Encodings.Web": "4.0.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.AspNetCore.Http.Extensions": {
|
"Microsoft.AspNetCore.Http.Extensions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.0.2",
|
"resolved": "2.1.1",
|
||||||
"contentHash": "itaTI4YSVsLjvmpInhQ3b6Xs1q+CxJT/3z3q5G6hLuLkq30vvWEbM40NfzUzvwzPCEiXXlp+nJTEK2wgoJa70Q==",
|
"contentHash": "ncAgV+cqsWSqjLXFUTyObGh4Tr7ShYYs3uW8Q/YpRwZn7eLV7dux5Z6GLY+rsdzmIHiia3Q2NWbLULQi7aziHw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.AspNetCore.Http.Abstractions": "1.0.2",
|
"Microsoft.AspNetCore.Http.Abstractions": "2.1.1",
|
||||||
"Microsoft.Extensions.FileProviders.Abstractions": "1.0.1",
|
"Microsoft.Extensions.FileProviders.Abstractions": "2.1.1",
|
||||||
"Microsoft.Net.Http.Headers": "1.0.2",
|
"Microsoft.Net.Http.Headers": "2.1.1",
|
||||||
"System.Buffers": "4.0.0",
|
"System.Buffers": "4.5.0"
|
||||||
"System.IO.FileSystem": "4.0.1"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.AspNetCore.Http.Features": {
|
"Microsoft.AspNetCore.Http.Features": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.0.2",
|
"resolved": "2.1.1",
|
||||||
"contentHash": "9l/Y/CO3q8tET3w+dDiByREH8lRtpd14cMevwMV5nw2a/avJ5qcE3VVIE5U5hesec2phTT6udQEgwjHmdRRbig==",
|
"contentHash": "VklZ7hWgSvHBcDtwYYkdMdI/adlf7ebxTZ9kdzAhX+gUs5jSHE9mZlTamdgf9miSsxc1QjNazHXTDJdVPZKKTw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Primitives": "1.0.1",
|
"Microsoft.Extensions.Primitives": "2.1.1"
|
||||||
"System.Collections": "4.0.11",
|
|
||||||
"System.ComponentModel": "4.0.1",
|
|
||||||
"System.Linq": "4.1.0",
|
|
||||||
"System.Net.Primitives": "4.0.11",
|
|
||||||
"System.Net.WebSockets": "4.0.0",
|
|
||||||
"System.Runtime.Extensions": "4.1.0",
|
|
||||||
"System.Security.Claims": "4.0.1",
|
|
||||||
"System.Security.Cryptography.X509Certificates": "4.1.0",
|
|
||||||
"System.Security.Principal": "4.0.1"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.AspNetCore.JsonPatch": {
|
"Microsoft.AspNetCore.JsonPatch": {
|
||||||
@ -274,15 +436,11 @@
|
|||||||
},
|
},
|
||||||
"Microsoft.AspNetCore.WebUtilities": {
|
"Microsoft.AspNetCore.WebUtilities": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.0.2",
|
"resolved": "2.1.1",
|
||||||
"contentHash": "xWCqsnZLt0nSoiyw3x250k7PzV/ub1dtjZfLUCy89gTdAHF3jWivnzN+Mw5+LB8EYwEA4WY+u5l5s6innImJTw==",
|
"contentHash": "PGKIZt4+412Z/XPoSjvYu/QIbTxcAQuEFNoA1Pw8a9mgmO0ZhNBmfaNyhgXFf7Rq62kP0tT/2WXpxdcQhkFUPA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Primitives": "1.0.1",
|
"Microsoft.Net.Http.Headers": "2.1.1",
|
||||||
"System.Buffers": "4.0.0",
|
"System.Text.Encodings.Web": "4.5.0"
|
||||||
"System.Collections": "4.0.11",
|
|
||||||
"System.IO": "4.1.0",
|
|
||||||
"System.IO.FileSystem": "4.0.1",
|
|
||||||
"System.Text.Encodings.Web": "4.0.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Azure.Cosmos": {
|
"Microsoft.Azure.Cosmos": {
|
||||||
@ -332,21 +490,22 @@
|
|||||||
},
|
},
|
||||||
"Microsoft.Extensions.Caching.Abstractions": {
|
"Microsoft.Extensions.Caching.Abstractions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.7",
|
"resolved": "5.0.0",
|
||||||
"contentHash": "Uj/0fmq7FWi7B7RfLkn2UJE1SThJ60mOlChx9P5nRjP/EbeYNm+LoyiOr6yPhDsArwHttKyun18TXXJ2C9EE/g==",
|
"contentHash": "bu8As90/SBAouMZ6fJ+qRNo1X+KgHGrVueFhhYi+E5WqEhcnp2HoWRFnMzXQ6g4RdZbvPowFerSbKNH4Dtg5yg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Primitives": "3.1.7"
|
"Microsoft.Extensions.Primitives": "5.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Caching.Memory": {
|
"Microsoft.Extensions.Caching.Memory": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.7",
|
"resolved": "5.0.0",
|
||||||
"contentHash": "EvNcJWk0KKSqyXefiUTgF5D94r40rmmtAvo5/yhy7u5/CtRjqyN7wQBSKz2ezWlu5vbuMGyaMktANgkk4kEkaw==",
|
"contentHash": "/1qPCleFOkJe0O+xmFqCNLFYQZTJz965sVw8CUB/BQgsApBwzAUsL2BUkDvQW+geRUVTXUS9zLa0pBjC2VJ1gA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Caching.Abstractions": "3.1.7",
|
"Microsoft.Extensions.Caching.Abstractions": "5.0.0",
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.7",
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
||||||
"Microsoft.Extensions.Logging.Abstractions": "3.1.7",
|
"Microsoft.Extensions.Logging.Abstractions": "5.0.0",
|
||||||
"Microsoft.Extensions.Options": "3.1.7"
|
"Microsoft.Extensions.Options": "5.0.0",
|
||||||
|
"Microsoft.Extensions.Primitives": "5.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Configuration": {
|
"Microsoft.Extensions.Configuration": {
|
||||||
@ -359,32 +518,50 @@
|
|||||||
},
|
},
|
||||||
"Microsoft.Extensions.Configuration.Abstractions": {
|
"Microsoft.Extensions.Configuration.Abstractions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.7",
|
"resolved": "5.0.0",
|
||||||
"contentHash": "WJEbrrIgly95D9rM8Gwr4w8sbYla6/iOcCZ0UE7+Qg/Q8NnQJwAJ60Lq1A26zbNE8Fm1fkbGU90LDl8e+BoRSQ==",
|
"contentHash": "ETjSBHMp3OAZ4HxGQYpwyGsD8Sw5FegQXphi0rpoGMT74S4+I2mm7XJEswwn59XAaKOzC15oDSOWEE8SzDCd6Q==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Primitives": "3.1.7"
|
"Microsoft.Extensions.Primitives": "5.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Configuration.Binder": {
|
"Microsoft.Extensions.Configuration.EnvironmentVariables": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.7",
|
"resolved": "2.1.1",
|
||||||
"contentHash": "FYQ64i7DwYO6XDdOFi+VkoRDDzel570I+X/vTYt6mVJWNj1SAstXwZ71P5d6P2Cei+cT950NiScOwj4F8EUeTA==",
|
"contentHash": "6xMxFIfKL+7J/jwlk8zV8I61sF3+DRG19iKQxnSfYQU+iMMjGbcWNCHFF/3MHf3o4sTZPZ8D6Io+GwKFc3TIZA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Configuration": "3.1.7"
|
"Microsoft.Extensions.Configuration": "2.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Configuration.FileExtensions": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "3.1.0",
|
||||||
|
"contentHash": "OjRJIkVxUFiVkr9a39AqVThft9QHoef4But5pDCydJOXJ4D/SkmzuW1tm6J2IXynxj6qfeAz9QTnzQAvOcGvzg==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Configuration": "3.1.0",
|
||||||
|
"Microsoft.Extensions.FileProviders.Physical": "3.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Configuration.Json": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "3.1.0",
|
||||||
|
"contentHash": "gBpBE1GoaCf1PKYC7u0Bd4mVZ/eR2bnOvn7u8GBXEy3JGar6sC3UVpVfTB9w+biLPtzcukZynBG9uchSBbLTNQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Configuration": "3.1.0",
|
||||||
|
"Microsoft.Extensions.Configuration.FileExtensions": "3.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.DependencyInjection": {
|
"Microsoft.Extensions.DependencyInjection": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.7",
|
"resolved": "5.0.0",
|
||||||
"contentHash": "yp38AFc5tJQZkjINjXBcxq+dANU06lo27D84duitZthtRPsgKJL87uf9RWRsDdRsWd+kXflmdMWFLKFjyKx6Pw==",
|
"contentHash": "Rc2kb/p3Ze6cP6rhFC3PJRdWGbLvSHZc0ev7YlyeU6FmHciDMLrhoVoTUEzKPhN5ZjFgKF1Cf5fOz8mCMIkvpA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.7"
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": {
|
"Microsoft.Extensions.DependencyInjection.Abstractions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.7",
|
"resolved": "5.0.0",
|
||||||
"contentHash": "oKL2yNtTN1/cOp+cbdyv5TeLzO+GkO9B3fvbcPzKWTNCkDoH3ccYS3FWC1p4KSYe9frW4WsyfSTeM8X+xftOig=="
|
"contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA=="
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.DependencyModel": {
|
"Microsoft.Extensions.DependencyModel": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -400,10 +577,10 @@
|
|||||||
},
|
},
|
||||||
"Microsoft.Extensions.FileProviders.Abstractions": {
|
"Microsoft.Extensions.FileProviders.Abstractions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.7",
|
"resolved": "5.0.0",
|
||||||
"contentHash": "nasMSdDlIIBcKgGVHoZdFSmfUY1bI0zkvfZTsWLlEFcMCVD0fzcgsVlkeZTzPLJV0w7Uwq3okOgMWpU1nFEhxg==",
|
"contentHash": "iuZIiZ3mteEb+nsUqpGXKx2cGF+cv6gWPd5jqQI4hzqdiJ6I94ddLjKhQOuRW1lueHwocIw30xbSHGhQj0zjdQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Primitives": "3.1.7"
|
"Microsoft.Extensions.Primitives": "5.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.FileProviders.Embedded": {
|
"Microsoft.Extensions.FileProviders.Embedded": {
|
||||||
@ -415,15 +592,28 @@
|
|||||||
"System.Runtime.Extensions": "4.1.0"
|
"System.Runtime.Extensions": "4.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Microsoft.Extensions.FileProviders.Physical": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "3.1.0",
|
||||||
|
"contentHash": "KsvgrYp2fhNXoD9gqSu8jPK9Sbvaa7SqNtsLqHugJkCwFmgRvdz76z6Jz2tlFlC7wyMTZxwwtRF8WAorRQWTEA==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.FileProviders.Abstractions": "3.1.0",
|
||||||
|
"Microsoft.Extensions.FileSystemGlobbing": "3.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.FileSystemGlobbing": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "3.1.0",
|
||||||
|
"contentHash": "tK5HZOmVv0kUYkonMjuSsxR0CBk+Rd/69QU3eOMv9FvODGZ2d0SR+7R+n8XIgBcCCoCHJBSsI4GPRaoN3Le4rA=="
|
||||||
|
},
|
||||||
"Microsoft.Extensions.Hosting.Abstractions": {
|
"Microsoft.Extensions.Hosting.Abstractions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.7",
|
"resolved": "5.0.0",
|
||||||
"contentHash": "4j6lSyPJF2emznd7Y4nZp8UbVyhe/defMPyFBV+YfINbAgJ3HgUPWp2QdsO87WOzWjlXTU4ZFwL2fuuMbwdR5g==",
|
"contentHash": "cbUOCePYBl1UhM+N2zmDSUyJ6cODulbtUd9gEzMFIK3RQDtP/gJsE08oLcBSXH3Q1RAQ0ex7OAB3HeTKB9bXpg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Configuration.Abstractions": "3.1.7",
|
"Microsoft.Extensions.Configuration.Abstractions": "5.0.0",
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.7",
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
||||||
"Microsoft.Extensions.FileProviders.Abstractions": "3.1.7",
|
"Microsoft.Extensions.FileProviders.Abstractions": "5.0.0"
|
||||||
"Microsoft.Extensions.Logging.Abstractions": "3.1.7"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Http": {
|
"Microsoft.Extensions.Http": {
|
||||||
@ -438,38 +628,41 @@
|
|||||||
},
|
},
|
||||||
"Microsoft.Extensions.Logging": {
|
"Microsoft.Extensions.Logging": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.7",
|
"resolved": "5.0.0",
|
||||||
"contentHash": "p68Hvr8S+t+bGUeXRX6wcjlkK961w0YRXWy8O6pkTsucdNpnzB8mwLIgcnQ7oj0biw8S1Ftv4PREzPIwo1UwpA==",
|
"contentHash": "MgOwK6tPzB6YNH21wssJcw/2MKwee8b2gI7SllYfn6rvTpIrVvVS5HAjSU2vqSku1fwqRvWP0MdIi14qjd93Aw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Configuration.Binder": "3.1.7",
|
"Microsoft.Extensions.DependencyInjection": "5.0.0",
|
||||||
"Microsoft.Extensions.DependencyInjection": "3.1.7",
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
||||||
"Microsoft.Extensions.Logging.Abstractions": "3.1.7",
|
"Microsoft.Extensions.Logging.Abstractions": "5.0.0",
|
||||||
"Microsoft.Extensions.Options": "3.1.7"
|
"Microsoft.Extensions.Options": "5.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Logging.Abstractions": {
|
"Microsoft.Extensions.Logging.Abstractions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.7",
|
"resolved": "5.0.0",
|
||||||
"contentHash": "oD7LQbMuaqq/yAz8PKX0hl4+H/vDFTQHo8rxbKB36P1/bG8FG7JUVKBoHkSt1MaJUtgyiHrH1AlAhaucKUKyEg=="
|
"contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w=="
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Logging.ApplicationInsights": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "2.21.0",
|
||||||
|
"contentHash": "tjzErt5oaLs1caaThu6AbtJuHH0oIGDG/rYCXDruHVGig3m8MyCDuwDsGQwzimY7g4aFyLOKfHc3unBN2G96gw==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.ApplicationInsights": "2.21.0",
|
||||||
|
"Microsoft.Extensions.Logging": "2.1.1"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.ObjectPool": {
|
"Microsoft.Extensions.ObjectPool": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.0.1",
|
"resolved": "2.1.1",
|
||||||
"contentHash": "pJMOnxuqmG37OjccfvtqVoo3bQGoN+0EJUzzp7+2uxSdioER82caAk6Yi/z5aysapn5XENNIIa7SaYnYKSS69A==",
|
"contentHash": "SErON45qh4ogDp6lr6UvVmFYW0FERihW+IQ+2JyFv1PUyWktcJytFaWH5zarufJvZwhci7Rf1IyGXr9pVEadTw=="
|
||||||
"dependencies": {
|
|
||||||
"System.Diagnostics.Debug": "4.0.11",
|
|
||||||
"System.Resources.ResourceManager": "4.0.1",
|
|
||||||
"System.Runtime.Extensions": "4.1.0",
|
|
||||||
"System.Threading": "4.0.11"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Options": {
|
"Microsoft.Extensions.Options": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.7",
|
"resolved": "5.0.0",
|
||||||
"contentHash": "O5TXu1D79hbaZuKCIK4mswSP86MtmiIQjuOZnVhPdbjOVILsoQwZUtnmU2xRfX1E0QWuFEI0umhw3mDDn6dNHw==",
|
"contentHash": "CBvR92TCJ5uBIdd9/HzDSrxYak+0W/3+yxrNg8Qm6Bmrkh5L+nu6m3WeazQehcZ5q1/6dDA7J5YdQjim0165zg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.7",
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
||||||
"Microsoft.Extensions.Primitives": "3.1.7"
|
"Microsoft.Extensions.Primitives": "5.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.PlatformAbstractions": {
|
"Microsoft.Extensions.PlatformAbstractions": {
|
||||||
@ -487,8 +680,8 @@
|
|||||||
},
|
},
|
||||||
"Microsoft.Extensions.Primitives": {
|
"Microsoft.Extensions.Primitives": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.7",
|
"resolved": "5.0.0",
|
||||||
"contentHash": "sa17s3vDAXTuIVGxuJcK713i0B0iaUoiwY4Sl2SLHhMqM8snznn0YVGiZAVkoKEUFWjvIg1Z/JNmAicBamI4mg=="
|
"contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ=="
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.WebEncoders": {
|
"Microsoft.Extensions.WebEncoders": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -500,19 +693,128 @@
|
|||||||
"System.Text.Encodings.Web": "4.0.0"
|
"System.Text.Encodings.Web": "4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Microsoft.Identity.Client": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "4.42.0",
|
||||||
|
"contentHash": "BQeEI4mKDJaludUZwZXfmAs7y1Lhkbm81KDg4Q3JWY8tXi5S7vFFJ4+xcrZtEEuqtDnyhP+Yx0u+1PeOALuTGA=="
|
||||||
|
},
|
||||||
|
"Microsoft.Identity.Client.Extensions.Msal": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "2.16.5",
|
||||||
|
"contentHash": "VlGUZEpF8KP/GCfFI59sdE0WA0o9quqwM1YQY0dSp6jpGy5EOBkureaybLfpwCuYUUjQbLkN2p7neUIcQCfbzA==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Identity.Client": "4.22.0",
|
||||||
|
"System.Security.Cryptography.ProtectedData": "4.5.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Identity.Web.Certificate": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "1.25.2",
|
||||||
|
"contentHash": "XAiRKbc7hmwOgxb7B5ufUKLJyP44tvXgFpSN5ppgdqZl+IGbaL+AOnjXGAhTq2MC1J379ArBrg+wCIXHzcpv5w==",
|
||||||
|
"dependencies": {
|
||||||
|
"Azure.Identity": "1.3.0",
|
||||||
|
"Azure.Security.KeyVault.Certificates": "4.1.0",
|
||||||
|
"Azure.Security.KeyVault.Secrets": "4.1.0",
|
||||||
|
"System.Text.Encodings.Web": "5.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Identity.Web.Certificateless": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "1.25.2",
|
||||||
|
"contentHash": "hqLe/10QqZr+/pByoOIPj3mAzAJDb5gKVvPdbfgNc+aYAr2Zff27LiOPG1XIEAKBzt12kt2LR7htDXv7eBQLiA==",
|
||||||
|
"dependencies": {
|
||||||
|
"Azure.Identity": "1.3.0",
|
||||||
|
"System.Text.Encodings.Web": "4.7.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Identity.Web.TokenCache": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "1.25.2",
|
||||||
|
"contentHash": "CkiQRFBNflNDpojiznQ2gybup/ZnieObi5kRrc0yfLgLvYU54AP6PD1yo8v6mzWJnf+/dEYeMJNcpaXm9C7fIg==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.DataProtection": "5.0.8",
|
||||||
|
"Microsoft.Extensions.Caching.Memory": "5.0.0",
|
||||||
|
"Microsoft.Extensions.Logging": "5.0.0",
|
||||||
|
"Microsoft.Identity.Client": "4.42.0",
|
||||||
|
"System.Security.Cryptography.Xml": "6.0.1",
|
||||||
|
"System.Text.Encodings.Web": "5.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.IdentityModel.Abstractions": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "6.20.0",
|
||||||
|
"contentHash": "FHBdt4gOc6UhrCXvzai0W0/n9ZKjdm/glMSBT145/N4f2HEYNvxgH+GBdmN2rRL4p3IwOyLAUaWiN8Ofomg8EQ=="
|
||||||
|
},
|
||||||
|
"Microsoft.IdentityModel.JsonWebTokens": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "6.20.0",
|
||||||
|
"contentHash": "ov/c3pdHerzipMDMc4zfPAYLeRmHjpnAFXufSsvZWDs9SsZmyMpcnnXBXBOa8MPnoKDOFzUGocyMs9EsJFQT4w==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.IdentityModel.Tokens": "6.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.IdentityModel.Logging": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "6.20.0",
|
||||||
|
"contentHash": "KQ8rcHvRO7bmByzO1VL8brSJQECpI6c7ktyQmGpF9YcxpkuMN2UqEkh7a2HnAHNksSsEq7T3CIXFF8p9OwLu5A==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.IdentityModel.Abstractions": "6.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.IdentityModel.LoggingExtensions": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "6.20.0",
|
||||||
|
"contentHash": "IcVgpXQW7w9xjimvoJFWavhUmI4aJXH71Wia5lMh72fLYZ3AnAmNtJjGW3Ue8bPYGHcvGum9dfJRHWA4XYHLiA==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Logging.Abstractions": "2.1.1",
|
||||||
|
"Microsoft.IdentityModel.Abstractions": "6.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.IdentityModel.Protocols": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "6.20.0",
|
||||||
|
"contentHash": "OSvIX92O69VZ8ONkDKf4/qBW3PsV09au3k9vD+4aSY2eLDD5fUvWlCZsUcZe6+L6e3qOVtk6h9+oBH77BlEKJg==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.IdentityModel.Logging": "6.20.0",
|
||||||
|
"Microsoft.IdentityModel.Tokens": "6.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.IdentityModel.Protocols.OpenIdConnect": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "6.20.0",
|
||||||
|
"contentHash": "vWzemekJ3ZacLl6CPCgL08OKX7tvnPmEW+WuhUzhab6TTJfyv4nnW9soY8TazjnZN45JS20Z05UwhS9nzbhSJg==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.IdentityModel.Protocols": "6.20.0",
|
||||||
|
"System.IdentityModel.Tokens.Jwt": "6.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.IdentityModel.Tokens": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "6.20.0",
|
||||||
|
"contentHash": "M0DEpe7298FTmISCjjzNHFwteYdFxYbjhR8TZmcKSlUCt3lfmIz8/RqzGH7hX6xmB2V8/7XkXpf7OXhvnoEfAg==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.CSharp": "4.5.0",
|
||||||
|
"Microsoft.IdentityModel.Logging": "6.20.0",
|
||||||
|
"System.Security.Cryptography.Cng": "4.5.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.IdentityModel.Validators": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "6.20.0",
|
||||||
|
"contentHash": "Njrn9lnGdVq26CtChr+VrEg9OypvluhM6JP6vOQHBL8DhTrx6B37/mHr65C5ozSroxyhnqRTnXeIRB0CCdjW7w==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.IdentityModel.Protocols": "6.20.0",
|
||||||
|
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.20.0",
|
||||||
|
"System.IdentityModel.Tokens.Jwt": "6.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Microsoft.Net.Http.Headers": {
|
"Microsoft.Net.Http.Headers": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.0.2",
|
"resolved": "2.1.1",
|
||||||
"contentHash": "Nym2m4l2kb5jQRl5YlP1nAxneqpRfknFLy5PBKMYiC4kR/gDIQ4fi4rU9u7UdjEXMVgfWDIPpijx9YnSDEbOHw==",
|
"contentHash": "lPNIphl8b2EuhOE9dMH6EZDmu7pS882O+HMi5BJNsigxHaWlBrYxZHFZgE18cyaPp6SSZcTkKkuzfjV/RRQKlA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"System.Buffers": "4.0.0",
|
"Microsoft.Extensions.Primitives": "2.1.1",
|
||||||
"System.Collections": "4.0.11",
|
"System.Buffers": "4.5.0"
|
||||||
"System.Diagnostics.Contracts": "4.0.1",
|
|
||||||
"System.Globalization": "4.0.11",
|
|
||||||
"System.Linq": "4.1.0",
|
|
||||||
"System.Resources.ResourceManager": "4.0.1",
|
|
||||||
"System.Runtime.Extensions": "4.1.0",
|
|
||||||
"System.Text.Encoding": "4.0.11"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.NETCore.Platforms": {
|
"Microsoft.NETCore.Platforms": {
|
||||||
@ -535,6 +837,15 @@
|
|||||||
"System.Runtime": "4.3.0"
|
"System.Runtime": "4.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Microsoft.Win32.Registry": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "5.0.0",
|
||||||
|
"contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
|
||||||
|
"dependencies": {
|
||||||
|
"System.Security.AccessControl": "5.0.0",
|
||||||
|
"System.Security.Principal.Windows": "5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Microsoft.Win32.SystemEvents": {
|
"Microsoft.Win32.SystemEvents": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.7.0",
|
"resolved": "4.7.0",
|
||||||
@ -895,14 +1206,6 @@
|
|||||||
"System.Text.Encoding": "4.3.0"
|
"System.Text.Encoding": "4.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"System.Diagnostics.Contracts": {
|
|
||||||
"type": "Transitive",
|
|
||||||
"resolved": "4.0.1",
|
|
||||||
"contentHash": "HvQQjy712vnlpPxaloZYkuE78Gn353L0SJLJVeLcNASeg9c4qla2a1Xq8I7B3jZoDzKPtHTkyVO7AZ5tpeQGuA==",
|
|
||||||
"dependencies": {
|
|
||||||
"System.Runtime": "4.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Diagnostics.Debug": {
|
"System.Diagnostics.Debug": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.3.0",
|
"resolved": "4.3.0",
|
||||||
@ -915,8 +1218,19 @@
|
|||||||
},
|
},
|
||||||
"System.Diagnostics.DiagnosticSource": {
|
"System.Diagnostics.DiagnosticSource": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.6.0",
|
"resolved": "5.0.0",
|
||||||
"contentHash": "mbBgoR0rRfl2uimsZ2avZY8g7Xnh1Mza0rJZLPcxqiMWlkGukjmRkuMJ/er+AhQuiRIh80CR/Hpeztr80seV5g=="
|
"contentHash": "tCQTzPsGZh/A9LhhA6zrqCRV4hOHsK90/G7q3Khxmn6tnB1PuNU0cRaKANP2AWcF9bn0zsuOoZOSrHuJk6oNBA=="
|
||||||
|
},
|
||||||
|
"System.Diagnostics.PerformanceCounter": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "4.7.0",
|
||||||
|
"contentHash": "kE9szT4i3TYT9bDE/BPfzg9/BL6enMiZlcUmnUEBrhRtxWvurKoa8qhXkLTRhrxMzBqaDleWlRfIPE02tulU+w==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "3.1.0",
|
||||||
|
"Microsoft.Win32.Registry": "4.7.0",
|
||||||
|
"System.Configuration.ConfigurationManager": "4.7.0",
|
||||||
|
"System.Security.Principal.Windows": "4.7.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"System.Diagnostics.Tools": {
|
"System.Diagnostics.Tools": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -969,6 +1283,11 @@
|
|||||||
"System.Threading": "4.0.11"
|
"System.Threading": "4.0.11"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"System.Formats.Asn1": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "6.0.0",
|
||||||
|
"contentHash": "T6fD00dQ3NTbPDy31m4eQUwKW84s03z0N2C8HpOklyeaDgaJPa/TexP4/SkORMSOwc7WhKifnA6Ya33AkzmafA=="
|
||||||
|
},
|
||||||
"System.Globalization": {
|
"System.Globalization": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.3.0",
|
"resolved": "4.3.0",
|
||||||
@ -1003,6 +1322,15 @@
|
|||||||
"System.Runtime.InteropServices": "4.3.0"
|
"System.Runtime.InteropServices": "4.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"System.IdentityModel.Tokens.Jwt": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "6.20.0",
|
||||||
|
"contentHash": "yallJBcQCF34rkf4Ebakou/gCT74XtlgvR8q3M96S1uP9X/XgLp9sjQ6wJRewYLeBYGgi4o5WSY/XaI9aQjRXw==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.IdentityModel.JsonWebTokens": "6.20.0",
|
||||||
|
"Microsoft.IdentityModel.Tokens": "6.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"System.IO": {
|
"System.IO": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.3.0",
|
"resolved": "4.3.0",
|
||||||
@ -1068,6 +1396,15 @@
|
|||||||
"System.Threading.Tasks": "4.3.0"
|
"System.Threading.Tasks": "4.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"System.IO.FileSystem.AccessControl": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "4.7.0",
|
||||||
|
"contentHash": "vMToiarpU81LR1/KZtnT7VDPvqAZfw9oOS5nY6pPP78nGYz3COLsQH3OfzbR+SjTgltd31R6KmKklz/zDpTmzw==",
|
||||||
|
"dependencies": {
|
||||||
|
"System.Security.AccessControl": "4.7.0",
|
||||||
|
"System.Security.Principal.Windows": "4.7.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"System.IO.FileSystem.Primitives": {
|
"System.IO.FileSystem.Primitives": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.3.0",
|
"resolved": "4.3.0",
|
||||||
@ -1114,8 +1451,8 @@
|
|||||||
},
|
},
|
||||||
"System.Memory": {
|
"System.Memory": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.5.4",
|
"resolved": "4.5.3",
|
||||||
"contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw=="
|
"contentHash": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA=="
|
||||||
},
|
},
|
||||||
"System.Net.Http": {
|
"System.Net.Http": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -1174,17 +1511,6 @@
|
|||||||
"System.Threading.Tasks": "4.3.0"
|
"System.Threading.Tasks": "4.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"System.Net.WebSockets": {
|
|
||||||
"type": "Transitive",
|
|
||||||
"resolved": "4.0.0",
|
|
||||||
"contentHash": "2KJo8hir6Edi9jnMDAMhiJoI691xRBmKcbNpwjrvpIMOCTYOtBpSsSEGBxBDV7PKbasJNaFp1+PZz1D7xS41Hg==",
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Win32.Primitives": "4.0.1",
|
|
||||||
"System.Resources.ResourceManager": "4.0.1",
|
|
||||||
"System.Runtime": "4.1.0",
|
|
||||||
"System.Threading.Tasks": "4.0.11"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Numerics.Vectors": {
|
"System.Numerics.Vectors": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.5.0",
|
"resolved": "4.5.0",
|
||||||
@ -1251,6 +1577,11 @@
|
|||||||
"System.Runtime": "4.3.0"
|
"System.Runtime": "4.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"System.Reflection.Metadata": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "1.6.0",
|
||||||
|
"contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ=="
|
||||||
|
},
|
||||||
"System.Reflection.Primitives": {
|
"System.Reflection.Primitives": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.3.0",
|
"resolved": "4.3.0",
|
||||||
@ -1385,12 +1716,8 @@
|
|||||||
},
|
},
|
||||||
"System.Security.AccessControl": {
|
"System.Security.AccessControl": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.7.0",
|
"resolved": "6.0.0",
|
||||||
"contentHash": "JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==",
|
"contentHash": "AUADIc0LIEQe7MzC+I0cl0rAT8RrTAKFHl53yHjEUzNVIaUlhFY11vc2ebiVJzVBuOzun6F7FBA+8KAbGTTedQ=="
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.NETCore.Platforms": "3.1.0",
|
|
||||||
"System.Security.Principal.Windows": "4.7.0"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"System.Security.Claims": {
|
"System.Security.Claims": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -1429,21 +1756,8 @@
|
|||||||
},
|
},
|
||||||
"System.Security.Cryptography.Cng": {
|
"System.Security.Cryptography.Cng": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.3.0",
|
"resolved": "4.5.0",
|
||||||
"contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
|
"contentHash": "WG3r7EyjUe9CMPFSs6bty5doUqT+q9pbI80hlNzo2SkPkZ4VTuZkGWjpp77JB8+uaL4DFPRdBsAY+DX3dBK92A=="
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.NETCore.Platforms": "1.1.0",
|
|
||||||
"System.IO": "4.3.0",
|
|
||||||
"System.Resources.ResourceManager": "4.3.0",
|
|
||||||
"System.Runtime": "4.3.0",
|
|
||||||
"System.Runtime.Extensions": "4.3.0",
|
|
||||||
"System.Runtime.Handles": "4.3.0",
|
|
||||||
"System.Runtime.InteropServices": "4.3.0",
|
|
||||||
"System.Security.Cryptography.Algorithms": "4.3.0",
|
|
||||||
"System.Security.Cryptography.Encoding": "4.3.0",
|
|
||||||
"System.Security.Cryptography.Primitives": "4.3.0",
|
|
||||||
"System.Text.Encoding": "4.3.0"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"System.Security.Cryptography.Csp": {
|
"System.Security.Cryptography.Csp": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -1504,6 +1818,14 @@
|
|||||||
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
|
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"System.Security.Cryptography.Pkcs": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "6.0.1",
|
||||||
|
"contentHash": "ynmbW2GjIGg9K1wXmVIRs4IlyDolf0JXNpzFQ8JCVgwM+myUC2JeUggl2PwQig2PNVMegKmN1aAx7WPQ8tI3vA==",
|
||||||
|
"dependencies": {
|
||||||
|
"System.Formats.Asn1": "6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"System.Security.Cryptography.Primitives": {
|
"System.Security.Cryptography.Primitives": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.3.0",
|
"resolved": "4.3.0",
|
||||||
@ -1555,6 +1877,15 @@
|
|||||||
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
|
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"System.Security.Cryptography.Xml": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "6.0.1",
|
||||||
|
"contentHash": "5e5bI28T0x73AwTsbuFP4qSRzthmU2C0Gqgg3AZ3KTxmSyA+Uhk31puA3srdaeWaacVnHhLdJywCzqOiEpbO/w==",
|
||||||
|
"dependencies": {
|
||||||
|
"System.Security.AccessControl": "6.0.0",
|
||||||
|
"System.Security.Cryptography.Pkcs": "6.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"System.Security.Permissions": {
|
"System.Security.Permissions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.7.0",
|
"resolved": "4.7.0",
|
||||||
@ -1574,8 +1905,8 @@
|
|||||||
},
|
},
|
||||||
"System.Security.Principal.Windows": {
|
"System.Security.Principal.Windows": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.7.0",
|
"resolved": "5.0.0",
|
||||||
"contentHash": "ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ=="
|
"contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA=="
|
||||||
},
|
},
|
||||||
"System.Text.Encoding": {
|
"System.Text.Encoding": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -1600,17 +1931,8 @@
|
|||||||
},
|
},
|
||||||
"System.Text.Encodings.Web": {
|
"System.Text.Encodings.Web": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.0.0",
|
"resolved": "5.0.1",
|
||||||
"contentHash": "TWZnuiJgPDAEEUfobD7njXvSVR2Toz+jvKWds6yL4oSztmKQfnWzucczjzA+6Dv1bktBdY71sZW1YN0X6m9chQ==",
|
"contentHash": "KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ=="
|
||||||
"dependencies": {
|
|
||||||
"System.Diagnostics.Debug": "4.0.11",
|
|
||||||
"System.IO": "4.1.0",
|
|
||||||
"System.Reflection": "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"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"System.Text.Json": {
|
"System.Text.Json": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
|
Loading…
Reference in New Issue
Block a user