From e0b4c538228864c314900affae08df72edc9cd60 Mon Sep 17 00:00:00 2001 From: crupest Date: Mon, 15 Jun 2020 00:05:02 +0800 Subject: refactor(back): Use generic host. --- Timeline.Tests/Helpers/TestApplication.cs | 35 +- .../IntegratedTests/AuthorizationTest.cs | 6 - Timeline.Tests/IntegratedTests/FrontEndTest.cs | 5 - .../IntegratedTests/IntegratedTestBase.cs | 18 +- Timeline.Tests/IntegratedTests/TimelineTest.cs | 6 +- Timeline.Tests/IntegratedTests/TokenTest.cs | 11 +- .../IntegratedTests/UnknownEndpointTest.cs | 5 - Timeline.Tests/IntegratedTests/UserAvatarTest.cs | 9 +- Timeline.Tests/IntegratedTests/UserTest.cs | 7 - Timeline.Tests/Timeline.Tests.csproj | 14 +- Timeline.Tests/packages.lock.json | 447 +++++++-------------- 11 files changed, 194 insertions(+), 369 deletions(-) (limited to 'Timeline.Tests') diff --git a/Timeline.Tests/Helpers/TestApplication.cs b/Timeline.Tests/Helpers/TestApplication.cs index abdb0a60..45807516 100644 --- a/Timeline.Tests/Helpers/TestApplication.cs +++ b/Timeline.Tests/Helpers/TestApplication.cs @@ -1,8 +1,10 @@ -using Microsoft.AspNetCore.Mvc.Testing; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.TestHost; using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; @@ -17,13 +19,13 @@ namespace Timeline.Tests.Helpers { public SqliteConnection DatabaseConnection { get; private set; } - public WebApplicationFactory Factory { get; private set; } + public IHost Host { get; private set; } public string WorkDir { get; private set; } - public TestApplication(WebApplicationFactory factory) + public TestApplication() { - Factory = factory; + } public async Task InitializeAsync() @@ -35,8 +37,7 @@ namespace Timeline.Tests.Helpers await DatabaseConnection.OpenAsync(); var options = new DbContextOptionsBuilder() - .UseSqlite(DatabaseConnection) - .Options; + .UseSqlite(DatabaseConnection).Options; using (var context = new DatabaseContext(options)) { @@ -48,28 +49,36 @@ namespace Timeline.Tests.Helpers await context.SaveChangesAsync(); } - Factory = Factory.WithWebHostBuilder(builder => - { - builder.ConfigureAppConfiguration((context, config) => + Host = await Microsoft.Extensions.Hosting.Host.CreateDefaultBuilder() + .ConfigureAppConfiguration((context, config) => { config.AddInMemoryCollection(new Dictionary { [ApplicationConfiguration.UseMockFrontEndKey] = "true", ["WorkDir"] = WorkDir }); - }); - builder.ConfigureServices(services => + }) + .ConfigureServices(services => { services.AddDbContext(options => { options.UseSqlite(DatabaseConnection); }); - }); - }); + }) + .ConfigureWebHost(webBuilder => + { + webBuilder + .UseTestServer() + .UseStartup(); + }) + .StartAsync(); } public async Task DisposeAsync() { + await Host.StopAsync(); + Host.Dispose(); + await DatabaseConnection.CloseAsync(); await DatabaseConnection.DisposeAsync(); Directory.Delete(WorkDir, true); diff --git a/Timeline.Tests/IntegratedTests/AuthorizationTest.cs b/Timeline.Tests/IntegratedTests/AuthorizationTest.cs index 4aa6b3ae..38071394 100644 --- a/Timeline.Tests/IntegratedTests/AuthorizationTest.cs +++ b/Timeline.Tests/IntegratedTests/AuthorizationTest.cs @@ -1,5 +1,4 @@ using FluentAssertions; -using Microsoft.AspNetCore.Mvc.Testing; using System.Net; using System.Threading.Tasks; using Timeline.Tests.Helpers; @@ -9,11 +8,6 @@ namespace Timeline.Tests.IntegratedTests { public class AuthorizationTest : IntegratedTestBase { - public AuthorizationTest(WebApplicationFactory factory) - : base(factory) - { - } - private const string BaseUrl = "testing/auth/"; private const string AuthorizeUrl = BaseUrl + "Authorize"; private const string UserUrl = BaseUrl + "User"; diff --git a/Timeline.Tests/IntegratedTests/FrontEndTest.cs b/Timeline.Tests/IntegratedTests/FrontEndTest.cs index a00d41b1..39a6e545 100644 --- a/Timeline.Tests/IntegratedTests/FrontEndTest.cs +++ b/Timeline.Tests/IntegratedTests/FrontEndTest.cs @@ -1,5 +1,4 @@ using FluentAssertions; -using Microsoft.AspNetCore.Mvc.Testing; using System.Net.Mime; using System.Threading.Tasks; using Timeline.Tests.Helpers; @@ -9,10 +8,6 @@ namespace Timeline.Tests.IntegratedTests { public class FrontEndTest : IntegratedTestBase { - public FrontEndTest(WebApplicationFactory factory) : base(factory) - { - } - [Fact] public async Task Index() { diff --git a/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs b/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs index 01544828..b5aec512 100644 --- a/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs +++ b/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Mvc.Testing; +using Microsoft.AspNetCore.TestHost; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; @@ -15,29 +15,27 @@ using Xunit; namespace Timeline.Tests.IntegratedTests { - public abstract class IntegratedTestBase : IClassFixture>, IAsyncLifetime + public abstract class IntegratedTestBase : IAsyncLifetime { protected TestApplication TestApp { get; } - protected WebApplicationFactory Factory => TestApp.Factory; - public IReadOnlyList UserInfos { get; private set; } private readonly int _userCount; - public IntegratedTestBase(WebApplicationFactory factory) : this(factory, 1) + public IntegratedTestBase() : this(1) { } - public IntegratedTestBase(WebApplicationFactory factory, int userCount) + public IntegratedTestBase(int userCount) { if (userCount < 0) throw new ArgumentOutOfRangeException(nameof(userCount), userCount, "User count can't be negative."); _userCount = userCount; - TestApp = new TestApplication(factory); + TestApp = new TestApplication(); } protected virtual Task OnInitializeAsync() @@ -59,7 +57,7 @@ namespace Timeline.Tests.IntegratedTests { await TestApp.InitializeAsync(); - using (var scope = Factory.Services.CreateScope()) + using (var scope = TestApp.Host.Services.CreateScope()) { var users = new List() { @@ -119,7 +117,7 @@ namespace Timeline.Tests.IntegratedTests public Task CreateDefaultClient(bool setApiBase = true) { - var client = Factory.CreateDefaultClient(); + var client = TestApp.Host.GetTestServer().CreateClient(); if (setApiBase) { client.BaseAddress = new Uri(client.BaseAddress, "api/"); @@ -129,7 +127,7 @@ namespace Timeline.Tests.IntegratedTests public async Task CreateClientWithCredential(string username, string password, bool setApiBase = true) { - var client = Factory.CreateDefaultClient(); + var client = TestApp.Host.GetTestServer().CreateClient(); if (setApiBase) { client.BaseAddress = new Uri(client.BaseAddress, "api/"); diff --git a/Timeline.Tests/IntegratedTests/TimelineTest.cs b/Timeline.Tests/IntegratedTests/TimelineTest.cs index d8017b8a..b6a56e94 100644 --- a/Timeline.Tests/IntegratedTests/TimelineTest.cs +++ b/Timeline.Tests/IntegratedTests/TimelineTest.cs @@ -1,5 +1,4 @@ using FluentAssertions; -using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using SixLabors.ImageSharp; @@ -45,8 +44,7 @@ namespace Timeline.Tests.IntegratedTests public class TimelineTest : IntegratedTestBase { - public TimelineTest(WebApplicationFactory factory) - : base(factory, 3) + public TimelineTest() : base(3) { } @@ -1112,7 +1110,7 @@ namespace Timeline.Tests.IntegratedTests } { - using var scope = TestApp.Factory.Services.CreateScope(); + using var scope = TestApp.Host.Services.CreateScope(); var database = scope.ServiceProvider.GetRequiredService(); var count = await database.Data.CountAsync(); count.Should().Be(0); diff --git a/Timeline.Tests/IntegratedTests/TokenTest.cs b/Timeline.Tests/IntegratedTests/TokenTest.cs index 7b28746f..d1c31606 100644 --- a/Timeline.Tests/IntegratedTests/TokenTest.cs +++ b/Timeline.Tests/IntegratedTests/TokenTest.cs @@ -1,5 +1,4 @@ using FluentAssertions; -using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.Extensions.DependencyInjection; using System.Collections.Generic; using System.Net.Http; @@ -17,12 +16,6 @@ namespace Timeline.Tests.IntegratedTests private const string CreateTokenUrl = "token/create"; private const string VerifyTokenUrl = "token/verify"; - public TokenTest(WebApplicationFactory factory) - : base(factory) - { - - } - private static async Task CreateUserTokenAsync(HttpClient client, string username, string password, int? expireOffset = null) { var response = await client.PostAsJsonAsync(CreateTokenUrl, new CreateTokenRequest { Username = username, Password = password, Expire = expireOffset }); @@ -106,7 +99,7 @@ namespace Timeline.Tests.IntegratedTests using var client = await CreateDefaultClient(); var token = (await CreateUserTokenAsync(client, "user1", "user1pw")).Token; - using (var scope = Factory.Services.CreateScope()) // UserService is scoped. + using (var scope = TestApp.Host.Services.CreateScope()) // UserService is scoped. { // create a user for test var userService = scope.ServiceProvider.GetRequiredService(); @@ -126,7 +119,7 @@ namespace Timeline.Tests.IntegratedTests using var client = await CreateDefaultClient(); var token = (await CreateUserTokenAsync(client, "user1", "user1pw")).Token; - using (var scope = Factory.Server.Host.Services.CreateScope()) // UserService is scoped. + using (var scope = TestApp.Host.Services.CreateScope()) // UserService is scoped. { var userService = scope.ServiceProvider.GetRequiredService(); await userService.DeleteUser("user1"); diff --git a/Timeline.Tests/IntegratedTests/UnknownEndpointTest.cs b/Timeline.Tests/IntegratedTests/UnknownEndpointTest.cs index 40f818a7..732232e2 100644 --- a/Timeline.Tests/IntegratedTests/UnknownEndpointTest.cs +++ b/Timeline.Tests/IntegratedTests/UnknownEndpointTest.cs @@ -1,5 +1,4 @@ using FluentAssertions; -using Microsoft.AspNetCore.Mvc.Testing; using System.Threading.Tasks; using Timeline.Models.Http; using Timeline.Tests.Helpers; @@ -9,10 +8,6 @@ namespace Timeline.Tests.IntegratedTests { public class UnknownEndpointTest : IntegratedTestBase { - public UnknownEndpointTest(WebApplicationFactory factory) : base(factory) - { - } - [Fact] public async Task UnknownEndpoint() { diff --git a/Timeline.Tests/IntegratedTests/UserAvatarTest.cs b/Timeline.Tests/IntegratedTests/UserAvatarTest.cs index fbf34490..91986cda 100644 --- a/Timeline.Tests/IntegratedTests/UserAvatarTest.cs +++ b/Timeline.Tests/IntegratedTests/UserAvatarTest.cs @@ -1,6 +1,5 @@ using FluentAssertions; using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.Extensions.DependencyInjection; using SixLabors.ImageSharp.Formats; using SixLabors.ImageSharp.Formats.Gif; @@ -21,12 +20,6 @@ namespace Timeline.Tests.IntegratedTests { public class UserAvatarTest : IntegratedTestBase { - public UserAvatarTest(WebApplicationFactory factory) - : base(factory) - { - - } - [Fact] public async Task Test() { @@ -45,7 +38,7 @@ namespace Timeline.Tests.IntegratedTests .Which.Code.Should().Be(ErrorCodes.UserCommon.NotExist); } - var env = Factory.Server.Host.Services.GetRequiredService(); + var env = TestApp.Host.Services.GetRequiredService(); var defaultAvatarData = await File.ReadAllBytesAsync(Path.Combine(env.ContentRootPath, "default-avatar.png")); async Task GetReturnDefault(string username = "user1") diff --git a/Timeline.Tests/IntegratedTests/UserTest.cs b/Timeline.Tests/IntegratedTests/UserTest.cs index e226d084..7fd78d0e 100644 --- a/Timeline.Tests/IntegratedTests/UserTest.cs +++ b/Timeline.Tests/IntegratedTests/UserTest.cs @@ -1,5 +1,4 @@ using FluentAssertions; -using Microsoft.AspNetCore.Mvc.Testing; using System.Collections.Generic; using System.Net; using System.Net.Http; @@ -12,12 +11,6 @@ namespace Timeline.Tests.IntegratedTests { public class UserTest : IntegratedTestBase { - public UserTest(WebApplicationFactory factory) - : base(factory) - { - - } - [Fact] public async Task GetList_NoAuth() { diff --git a/Timeline.Tests/Timeline.Tests.csproj b/Timeline.Tests/Timeline.Tests.csproj index 1f00cc6c..7a3c0ae6 100644 --- a/Timeline.Tests/Timeline.Tests.csproj +++ b/Timeline.Tests/Timeline.Tests.csproj @@ -7,21 +7,21 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + - + all runtime; build; native; contentfiles; analyzers diff --git a/Timeline.Tests/packages.lock.json b/Timeline.Tests/packages.lock.json index 000ea3bf..6d2a51a3 100644 --- a/Timeline.Tests/packages.lock.json +++ b/Timeline.Tests/packages.lock.json @@ -4,15 +4,15 @@ ".NETCoreApp,Version=v3.1": { "coverlet.collector": { "type": "Direct", - "requested": "[1.2.0, )", - "resolved": "1.2.0", - "contentHash": "ZB+EGXsVBIn8cew7D3S2c+rgIlokKv1dSwsXEoiFQaNXF/BSxp9Rlfz/jV1ehSWH5XpLitfRxFNW3ok7uPDOXA==" + "requested": "[1.3.0, )", + "resolved": "1.3.0", + "contentHash": "t8pnf5SX2ya0RX4vjoxsbhDMQCZJcpPun2neHKJ4FouMmObylo25FvoOydvf3Bl+l+IzWw7u2vjEeCBHnleB9g==" }, "FluentAssertions": { "type": "Direct", - "requested": "[5.10.2, )", - "resolved": "5.10.2", - "contentHash": "h+StwMRam3UiPBo7XddKcMGlyC0uDBN5Eg4ajn+h9J9fO3Z22pYQLDzSGEnYTjX/uY4+CjIWqqFxM054poQkYw==", + "requested": "[5.10.3, )", + "resolved": "5.10.3", + "contentHash": "gVPEVp1hLVqcv+7Q2wiDf7kqCNn7+bQcQ0jbJ2mcRT6CeRoZl1tNkqvzSIhvekyldDptk77j1b03MXTTRIqqpg==", "dependencies": { "System.Configuration.ConfigurationManager": "4.4.0" } @@ -27,44 +27,42 @@ "Newtonsoft.Json.Bson": "1.0.1" } }, - "Microsoft.AspNetCore.Mvc.Testing": { + "Microsoft.AspNetCore.TestHost": { "type": "Direct", - "requested": "[3.1.2, )", - "resolved": "3.1.2", - "contentHash": "XnqY0NqpkLA9wPfcfHsBXVWsNcXBZHv/tVYqWvh9ZRjuuYEfczKHrBE1+RUiAgEl5qs0Wz1HaMp3sKWJ+9PIlg==", + "requested": "[3.1.5, )", + "resolved": "3.1.5", + "contentHash": "o08GfbTytPirpwlNe/mIaGv7yyM+Qf0Ig0dM4Dxmzee4rPRXQl3QlhFGVW8WbtVamUXlskbTloi7lmUVwAihPw==", "dependencies": { - "Microsoft.AspNetCore.TestHost": "3.1.2", - "Microsoft.Extensions.DependencyModel": "3.1.2", - "Microsoft.Extensions.Hosting": "3.1.2" + "System.IO.Pipelines": "4.7.1" } }, "Microsoft.CodeAnalysis.FxCopAnalyzers": { "type": "Direct", - "requested": "[2.9.8, )", - "resolved": "2.9.8", - "contentHash": "FZhO7S+xinFrcRvPyIxPbFgY0Jg3X+KNkawhg7wwoVxnT/ySdoO162dyIMXfQQ6/qCmjNFHmTDXiNlpPNvKNyQ==", + "requested": "[3.0.0, )", + "resolved": "3.0.0", + "contentHash": "ea8bbNa4fzS/s55AUCAvYjb6Y3lFysFVfEwt9zIwR/NeFpOcUluIleOXSUPAyUtwBFugn01aWvNfMVmIwnvgqQ==", "dependencies": { - "Microsoft.CodeAnalysis.VersionCheckAnalyzer": "[2.9.8]", - "Microsoft.CodeQuality.Analyzers": "[2.9.8]", - "Microsoft.NetCore.Analyzers": "[2.9.8]", - "Microsoft.NetFramework.Analyzers": "[2.9.8]" + "Microsoft.CodeAnalysis.VersionCheckAnalyzer": "[3.0.0]", + "Microsoft.CodeQuality.Analyzers": "[3.0.0]", + "Microsoft.NetCore.Analyzers": "[3.0.0]", + "Microsoft.NetFramework.Analyzers": "[3.0.0]" } }, "Microsoft.NET.Test.Sdk": { "type": "Direct", - "requested": "[16.5.0, )", - "resolved": "16.5.0", - "contentHash": "yHZOhVSPuGqgHi+KhHiAZqNY08avkQraXKvgKgDU8c/ztmGzw7gmukkv49EaTq6T3xmp4XroWk3gAlbJHMxl8w==", + "requested": "[16.6.1, )", + "resolved": "16.6.1", + "contentHash": "zYAjfWzpxKb64P9ntReT1Xr8HdONZnpLVs12HIjXWo+UOCDpevP1UWRoaAgNysaD1/l3teBKvgbSeG9bRssfOQ==", "dependencies": { - "Microsoft.CodeCoverage": "16.5.0", - "Microsoft.TestPlatform.TestHost": "16.5.0" + "Microsoft.CodeCoverage": "16.6.1", + "Microsoft.TestPlatform.TestHost": "16.6.1" } }, "Moq": { "type": "Direct", - "requested": "[4.13.1, )", - "resolved": "4.13.1", - "contentHash": "ic4m9/b10tz9oRB1Oi5bW7E/FS6Pd2SH5OJFhlmhUJkQhiV5FyrIRxVUEaG5KOpSpcfSPGAVW4rRZt6OzrS5zg==", + "requested": "[4.14.1, )", + "resolved": "4.14.1", + "contentHash": "yRrU+cLNBtZpL9eLVyicOENMPUx7DjOOB+VPgDhrXaCjhfob661d4HJ82YJpPUBmlYoivNA8F4R+NIMfoKbD7g==", "dependencies": { "Castle.Core": "4.4.0", "System.Threading.Tasks.Extensions": "4.5.1" @@ -83,12 +81,9 @@ }, "xunit.runner.visualstudio": { "type": "Direct", - "requested": "[2.4.1, )", - "resolved": "2.4.1", - "contentHash": "mBXd1lp1TQr4to2nFv+c4Tf+RnPoQPKglzwLdbdirOUxRaJsCUNDUx2y7E6j9ajgISlTTp1CydFBZCRCUIrwDg==", - "dependencies": { - "Microsoft.NET.Test.Sdk": "15.0.0" - } + "requested": "[2.4.2, )", + "resolved": "2.4.2", + "contentHash": "Trt9multph2KE3U0p9oBt0k4Fq6lUv4btUcONaQEeuFnMCak2k/b7PAArbLtMFW7HO1jxlBHUgIPKEqci3Y1dg==" }, "AutoMapper": { "type": "Transitive", @@ -127,36 +122,28 @@ }, "Microsoft.AspNetCore.NodeServices": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "fdxZvP3I20MNMOLFM/gdN6Aie7GMDwe/sY1wZHL0Drn3wthCSB8hJmyNY2UXHQE/cj8lCzEW5dnGUenOxu7t0Q==", + "resolved": "3.1.5", + "contentHash": "WpDoV45BhN0mhc1+5+k29AKzn6suYfm3HynIYngdgBaS2pdXWZPNY/73m7btxbwqaQHup35oqNBVUGNWK2NMWg==", "dependencies": { - "Microsoft.Extensions.Logging.Console": "3.1.4", + "Microsoft.Extensions.Logging.Console": "3.1.5", "Newtonsoft.Json": "12.0.2" } }, "Microsoft.AspNetCore.SpaServices": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "Q37t6RZ6VYAvn9nHcFpTsrgBZ2fUZSwRuLsNCz20yMkTRDoNPfhzIwvbeB4SsGPyoAXV14xK2Um38qbCbT5ZUA==", + "resolved": "3.1.5", + "contentHash": "DE34f2Ne92p++7vnONcz869p+yKuHjWjBzfZj7ny2wFSwABzpb98l/x41MYB3zndQW322C5wPmnJbh3P2+AhRg==", "dependencies": { - "Microsoft.AspNetCore.NodeServices": "3.1.4" + "Microsoft.AspNetCore.NodeServices": "3.1.5" } }, "Microsoft.AspNetCore.SpaServices.Extensions": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "D3ebEuFB4UQDj+/vKWixWOKffUrB1Mq9PkUi/YN0XFpiQCjvnHjct2wc1DyAKdBpxES6ZssWcb1MrMzO0M91LQ==", - "dependencies": { - "Microsoft.AspNetCore.SpaServices": "3.1.4", - "Microsoft.Extensions.FileProviders.Physical": "3.1.4" - } - }, - "Microsoft.AspNetCore.TestHost": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "E472GDMNupTPDhuFXDsIhklBr1zixnvwsGrwxMvhbPCIOD1RlwJyErLyx9g21WBtreeIAIV12RWG2aD1jZGVrw==", + "resolved": "3.1.5", + "contentHash": "mWRSFYK+AxBMuB+PMIMaB9E2QaXaaiwMYhfavPLPZ8VolKIEeJsfcrBhtgAKroaLblkJL7zQJFIEZL0KGoWaYw==", "dependencies": { - "System.IO.Pipelines": "4.7.0" + "Microsoft.AspNetCore.SpaServices": "3.1.5", + "Microsoft.Extensions.FileProviders.Physical": "3.1.5" } }, "Microsoft.Bcl.AsyncInterfaces": { @@ -171,18 +158,18 @@ }, "Microsoft.CodeAnalysis.VersionCheckAnalyzer": { "type": "Transitive", - "resolved": "2.9.8", - "contentHash": "iSjqkECKpagJPjzc7sMjD6rQWSznVYqTfUZ96yR0r0jDzA45TymBof350tlOfGDRvn4OrU/KKJav21/oZDttrA==" + "resolved": "3.0.0", + "contentHash": "RL9OdvWLhtQXcvxK2EPbXM9LandLcDG14Ndz5baVH2aiyvEB11VrHfrzLNoEE5B2/zhRGqN+BHsBg21f75wG9g==" }, "Microsoft.CodeCoverage": { "type": "Transitive", - "resolved": "16.5.0", - "contentHash": "PM5YLtyN45EyUGePJpaNogndlaQPrMgQQXHKMhMESC6KfSVvt+j7+dxBi8NYC6X6dZVysf7ngwhSW3wwvPJRSQ==" + "resolved": "16.6.1", + "contentHash": "nBYXDgAZCfjsOVzlhMB5olGvX4dTDWB/gWaYS/MhgXBcCz8XJuVGqkfK8LmwlBR/eeUPE9Q/NFZNwlJyMZf0vg==" }, "Microsoft.CodeQuality.Analyzers": { "type": "Transitive", - "resolved": "2.9.8", - "contentHash": "KevAiJKuolGKK84jDHMVGJjBAigH/86xyCVtbOzh5avUYzW7jPErdJW708byKKMiVKTwv027mbKCNnnOgNQHsA==" + "resolved": "3.0.0", + "contentHash": "pOROTgdPa+15sYfEMvDlWlDEedCO1SuRLrRjX36Ltli3SmhZawC2Vgws4crz1XMs9WRzBo8WIJM5WRzGNsOSmQ==" }, "Microsoft.CSharp": { "type": "Transitive", @@ -191,29 +178,29 @@ }, "Microsoft.Data.Sqlite.Core": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "bicm19o4CBh1jH6MKRhpzlBsNvKL1sa19Q6vs4goIxKk0WVUXk/nljW6tdo5t6lVD54k6OJrfFqTJsaR6WqEug==", + "resolved": "3.1.5", + "contentHash": "97AVbafsZQVale8l04QmrOa1fEo8eCQ4oMK1XxdKc8JVYY4r9nMiYZiNwEDa9VHVY/Hug9YIawghzg6o+0E+fw==", "dependencies": { "SQLitePCLRaw.core": "2.0.2" } }, "Microsoft.DotNet.PlatformAbstractions": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "H0aQg1SVS2OsdWQ/x7SXpg+/9Ji0NLqLeQ8lJrVvNGgUkxiPcxv2COE94iZYhs0yabDRyyE60v5eGH1xnTre/Q==" + "resolved": "3.1.5", + "contentHash": "2jxam7bgOxELzk8m8iwRg+e42x7G6WigtWCk6d9MXQEiZSl5FZMGpEk/8AXvl4ybogu1OgBkT5G+g94O9/lelQ==" }, "Microsoft.EntityFrameworkCore": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "mxUv8ds1yMTHTabGWA81KQiFp8Rfz0+6vz1+hgG+ajzcbIG+h0UfO1vSWQLdAsDlz976+Spy1M84dJ8F1vxTnQ==", + "resolved": "3.1.5", + "contentHash": "1jYVmK8dMKGhtMMrtw0hicRjAJq8hnFSuXHdJTIGa04UVWFvsMFwWsdO3Y1ziCLgR2xM7u5AgUcFLGbV0t9cOg==", "dependencies": { "Microsoft.Bcl.AsyncInterfaces": "1.1.1", "Microsoft.Bcl.HashCode": "1.1.0", - "Microsoft.EntityFrameworkCore.Abstractions": "3.1.4", - "Microsoft.EntityFrameworkCore.Analyzers": "3.1.4", - "Microsoft.Extensions.Caching.Memory": "3.1.4", - "Microsoft.Extensions.DependencyInjection": "3.1.4", - "Microsoft.Extensions.Logging": "3.1.4", + "Microsoft.EntityFrameworkCore.Abstractions": "3.1.5", + "Microsoft.EntityFrameworkCore.Analyzers": "3.1.5", + "Microsoft.Extensions.Caching.Memory": "3.1.5", + "Microsoft.Extensions.DependencyInjection": "3.1.5", + "Microsoft.Extensions.Logging": "3.1.5", "System.Collections.Immutable": "1.7.1", "System.ComponentModel.Annotations": "4.7.0", "System.Diagnostics.DiagnosticSource": "4.7.1" @@ -221,284 +208,187 @@ }, "Microsoft.EntityFrameworkCore.Abstractions": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "eiseLLk5E3RT2x/c9C+3oBiJsMar/tvD3z8lCYaCWdJagIrTcz8AkpVJzGFsC3Q40DmEPSFYURMjNgpKMlxTsA==" + "resolved": "3.1.5", + "contentHash": "xZ3mUVu22p2h0ZKTWgoyK9YjA2H11cJcZssDcZYs8iLUVHPxMcb+ITOKpMdnV6SkEiQQ5pvjPXQ5J7VxiGSwDw==" }, "Microsoft.EntityFrameworkCore.Analyzers": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "u//p9rwaCSsZW0hBaNsd+/afoSwfMI3eBxX6u3ceHJS1kE0EfUCbjURql5Xt9/cHkginug0c7j/eYv4THULW6g==" + "resolved": "3.1.5", + "contentHash": "NhxlI6Qj/QUt79ApeBrpKo+a5TGt/UCddxd9rLHD7Zd6yLyfkDOMiyu4oPqhnMhpqmzo/gd79tW7BMwIxgEZCw==" }, "Microsoft.EntityFrameworkCore.Relational": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "EBLO/szy1MYxcoWOOsqG+u2L2Akofd7o1W2jlKTekF+l2ZSqqCV0WSTh7Eb/7o1RFSJON+I0PQBRBVAJFgFtBA==", + "resolved": "3.1.5", + "contentHash": "MNWF77Ekiu7Fe9BhgpwNft6MW0x5T+r7B43A/jtnEH+fQTjrfJrjBDgm+klxrQhha/8Jr/GxkRHmptXws0AAfA==", "dependencies": { - "Microsoft.EntityFrameworkCore": "3.1.4" + "Microsoft.EntityFrameworkCore": "3.1.5" } }, "Microsoft.EntityFrameworkCore.Sqlite": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "tA3enPOXq1Id+MMsJTXeP7iCLMO6qh9exzQhswnExAyNPXpoQLSPHZn97U3pPA6BC2g37Be/InnHtevzT9nRdQ==", + "resolved": "3.1.5", + "contentHash": "HZn8UjdzfrvAK3xoqj65PZKprMXXev6NVNDEe/PAU6dcW1KXuSxU8cg2LB68ltEI1dLx8JaiKF/yWAq7H4pUQQ==", "dependencies": { - "Microsoft.EntityFrameworkCore.Sqlite.Core": "3.1.4", + "Microsoft.EntityFrameworkCore.Sqlite.Core": "3.1.5", "SQLitePCLRaw.bundle_e_sqlite3": "2.0.2" } }, "Microsoft.EntityFrameworkCore.Sqlite.Core": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "ywyu2+qIVT1eIvj2iRwg7SkyACh/TtMTJjyUX1UUV/IH/QYe7csVZ2MQq3kcRJTaKHRPBFwNg61j8gvNItMG0g==", + "resolved": "3.1.5", + "contentHash": "Rb9It33lD2x6ODF4i0M3quadEPJOEHsANSNqctBnUnLbZX8HshGmEml3jQZELpJ1lhV0aEuATrFLDWT8EUdbiQ==", "dependencies": { - "Microsoft.Data.Sqlite.Core": "3.1.4", - "Microsoft.DotNet.PlatformAbstractions": "3.1.4", - "Microsoft.EntityFrameworkCore.Relational": "3.1.4", - "Microsoft.Extensions.DependencyModel": "3.1.4" + "Microsoft.Data.Sqlite.Core": "3.1.5", + "Microsoft.DotNet.PlatformAbstractions": "3.1.5", + "Microsoft.EntityFrameworkCore.Relational": "3.1.5", + "Microsoft.Extensions.DependencyModel": "3.1.5" } }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "gwJ44A/NSXC6GTqyBpIJU/nP0bRuKEL6WXMWV5bANWZUj/5nRs8CzdMpylK2K8Wc6cr87uvlNl7O5seU2WaclA==", + "resolved": "3.1.5", + "contentHash": "1HWdvlBNI4laVkx5oglv3Oaz5s8dO/dpkOep8FLv7+QAK2rm3ofBVv49aiDnijnwO+ZPJ/0iNctZWP0W2S07Rw==", "dependencies": { - "Microsoft.Extensions.Primitives": "3.1.4" + "Microsoft.Extensions.Primitives": "3.1.5" } }, "Microsoft.Extensions.Caching.Memory": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "VCLUu+xIJd+EPOHU3+owvQv9dZqU66iNlNdImGAGvLcuOzZorWuF/riGbaLcVJQsBhTF7/lG9j1VX2LuBq4Lbw==", + "resolved": "3.1.5", + "contentHash": "tqnVZ/tyXiBAEeLtcTvyb/poVp/gn6bbpdr12SAbO4TcfNkd1eNCEbyyABo0qhiQh6vVwba41aixklElx4grdw==", "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "3.1.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.4", - "Microsoft.Extensions.Logging.Abstractions": "3.1.4", - "Microsoft.Extensions.Options": "3.1.4" + "Microsoft.Extensions.Caching.Abstractions": "3.1.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.5", + "Microsoft.Extensions.Logging.Abstractions": "3.1.5", + "Microsoft.Extensions.Options": "3.1.5" } }, "Microsoft.Extensions.Configuration": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "+NsYvQ00h+9kSp4/60iCAhPUp9S6joS2rsEmfCVrUmVATCveTewcHdrMB+9pJDYkWzCEqPQoJuMfsxe/299Z0w==", + "resolved": "3.1.5", + "contentHash": "LZfdAP8flK4hkaniUv6TlstDX9FXLmJMX1A4mpLghAsZxTaJIgf+nzBNiPRdy/B5Vrs74gRONX3JrIUJQrebmA==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "3.1.4" + "Microsoft.Extensions.Configuration.Abstractions": "3.1.5" } }, "Microsoft.Extensions.Configuration.Abstractions": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "k7IJME4US5S5JFOGYaei5TLwutp8IqUvcBWtliKXETGn/JScmCgfej21xq5+ttxi0qZhiyJY06y9dw+cLh3kiQ==", + "resolved": "3.1.5", + "contentHash": "VBcAk6s9izZr04WCzNqOh1Sxz2RbVSh0G79MfpHSDv16cUJtSEYEHody9ZnF71LBEktzdu6cvDFBOFMh43q0iA==", "dependencies": { - "Microsoft.Extensions.Primitives": "3.1.4" + "Microsoft.Extensions.Primitives": "3.1.5" } }, "Microsoft.Extensions.Configuration.Binder": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "rN0FlUcOmHpGX1BFGZbtTgsXWwHO9pRTocynckXpqCvcMzqehS36aN+lfIlG3PriFulHF2kzwNVfhBakc072iw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.4" - } - }, - "Microsoft.Extensions.Configuration.CommandLine": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "voJoqXRGnfB4nw3LRL6QY/rnYdaZA2vFCMbRzPP2iE13XbZciJhGR0fvTsDKyFA9VfQJzPgIj+F/0S0Zqdxt4w==", - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.2" - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "AdpldFyx0PlwbgUatdj89jC/n5n2dqXP865NwM77bu9LcnEmWX37QTSAKeZT5a13c6G5MQ1v4lAGz2a9wpPf/g==", + "resolved": "3.1.5", + "contentHash": "ZR/zjBxkvdnnWhRoBHDT95uz1ZgJFhv1QazmKCIcDqy/RXqi+6dJ/PfxDhEnzPvk9HbkcGfFsPEu1vSIyxDqBQ==", "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.2" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "itZcJUf2IRa4e4NFTQgR4JUmwndEU5O0isQsKkZXHiHXwExgLkX9D09R7YIK272w3jpKaYw/DejntAC7zzsNWg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.2", - "Microsoft.Extensions.FileProviders.Physical": "3.1.2" - } - }, - "Microsoft.Extensions.Configuration.Json": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "AQ64UCqGXP2UTfkVE1fdUJdlKEEiFZIOXpt6lkIz+tunuJWh1m+/eIppY+ITgjoKsfFc2W8ldNonIntHx5ybNQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.2", - "Microsoft.Extensions.Configuration.FileExtensions": "3.1.2" - } - }, - "Microsoft.Extensions.Configuration.UserSecrets": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "1YOSOCsOUPVbcTDU+bifeT1z5dtMdwaZywWdKYocDBHwoILmxRsIKYS8CWVYPIggliHPEwjonNZfpdIktJkNiw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Json": "3.1.2" + "Microsoft.Extensions.Configuration": "3.1.5" } }, "Microsoft.Extensions.DependencyInjection": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "dAWhz6BEjUFIVLUPbT1s1sUrPTwbUWdw2iBRRe3ej3xXcKS+oo64dKrIWFxRjYP6TWyESpGFNY5NGeA5FcHVlg==", + "resolved": "3.1.5", + "contentHash": "I+RTJQi7TtenIHZqL2zr6523PYXfL88Ruu4UIVmspIxdw14GHd8zZ+2dGLSdwX7fn41Hth4d42S1e1iHWVOJyQ==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.4" + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.5" } }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "AceHamXNKDMDwIoZqEoApLp8s3935wSC3VXrPaRWa0wWOaEcYdDlo1nWQ1zLiezoDmpJzV7FqDm53E0Ty/hEMg==" + "resolved": "3.1.5", + "contentHash": "2VSCj2TZPMdeEi279Lawi6qJQu4+sEWizSOYrhY6hapyS1jxn1jVUZT1Ugv68bya+x8+3lD4+RqhUZql9PhISQ==" }, "Microsoft.Extensions.DependencyModel": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "X6R8tuo45siW+VJCmIOLcPEExS9x+eKssk8YFKZUKjKmAKoCT+oG4eTV1HVRU4hG4KLYvTCgY8BQotNxRF474w==", + "resolved": "3.1.5", + "contentHash": "u1RWQS0ym1USOoRji6MKcka/F/Br18/+1kiUvAcqWeG7v95SejSBXWRuS5eFfk6gCr3ppRxYyfnwUpmXa91ZsA==", "dependencies": { "System.Text.Json": "4.7.2" } }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "NNJA8JAoIaxlnb/bdQ8N0kA4T9ZaBAaUFM79pnT7j/x61Wne6K4lznU9u+NDgSAB3wrSx94mz169jNtle7KrSA==", + "resolved": "3.1.5", + "contentHash": "LrEQ97jhSWw84Y1m+CJfvh9qTUUswt27au54QYn2x5PCMPPgR+yAv/4VTJKMGSSI9T4scSLBXZ/fVhT4fPTCtA==", "dependencies": { - "Microsoft.Extensions.Primitives": "3.1.4" + "Microsoft.Extensions.Primitives": "3.1.5" } }, "Microsoft.Extensions.FileProviders.Physical": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "vxBVwWxczp+5dnZ6FoulhxCLYzRjp5tu64iAlGMJtN0w7XLBZoY+6FvAnCRZDdwCbhVbz5VUPsbYVlL+l3sDxQ==", + "resolved": "3.1.5", + "contentHash": "JemaaSSQosZ59flEfNzqvQRHDt1u4aEwV/pR4eFQEXpaX7lHI13gSbQbQ7TMGDdmY9F2t2+6RPp44Mmf9O1DsQ==", "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "3.1.4", - "Microsoft.Extensions.FileSystemGlobbing": "3.1.4" + "Microsoft.Extensions.FileProviders.Abstractions": "3.1.5", + "Microsoft.Extensions.FileSystemGlobbing": "3.1.5" } }, "Microsoft.Extensions.FileSystemGlobbing": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "PGbPg8h8cUYXEovoeNvpHgdFhKnx/539E14zF1vxFz2V6cc1QmQGONbfVHEJcjbuyGyyiNyqgpPInymsVup7ow==" - }, - "Microsoft.Extensions.Hosting": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "v/7IgJwnb/eRVz7rH7nGrsFkDm9nLFmfqwzcjzTb1ZYC4ktF+rcNZN3zMEBqKk4fa6yLvWf/fdc4JNKosZbeCQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.2", - "Microsoft.Extensions.Configuration.CommandLine": "3.1.2", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "3.1.2", - "Microsoft.Extensions.Configuration.UserSecrets": "3.1.2", - "Microsoft.Extensions.DependencyInjection": "3.1.2", - "Microsoft.Extensions.FileProviders.Physical": "3.1.2", - "Microsoft.Extensions.Hosting.Abstractions": "3.1.2", - "Microsoft.Extensions.Logging": "3.1.2", - "Microsoft.Extensions.Logging.Console": "3.1.2", - "Microsoft.Extensions.Logging.Debug": "3.1.2", - "Microsoft.Extensions.Logging.EventLog": "3.1.2", - "Microsoft.Extensions.Logging.EventSource": "3.1.2" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "oafEsTwy1ed4zycyjzgFet58IW3I/aC1uUJTWpFAs3mjkQzW52LqVlE/9AAW2IVk4q8EPw+GPsiFB17qYksNXQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "3.1.2", - "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.2", - "Microsoft.Extensions.FileProviders.Abstractions": "3.1.2", - "Microsoft.Extensions.Logging.Abstractions": "3.1.2" - } + "resolved": "3.1.5", + "contentHash": "ObdbZ/L3X89KOHI0K/zlwufnlHESYSp2L/Z1XgYp3Odekmzevl06iffrtIBP9Qgw2RxBVAyTEVNrIouCuik6yg==" }, "Microsoft.Extensions.Logging": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "FZDJ0cnW2hZRYCA88XQUOrAwgk6+Df/fSz+wfZkZneEQgJZp7XJ6pRvzt4ug118wJ7JGZehWkbMwwigBDcYZPA==", + "resolved": "3.1.5", + "contentHash": "C85NYDym6xy03o70vxX+VQ4ZEjj5Eg5t5QoGW0t100vG5MmPL6+G3XXcQjIIn1WRQrjzGWzQwuKf38fxXEWIWA==", "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "3.1.4", - "Microsoft.Extensions.DependencyInjection": "3.1.4", - "Microsoft.Extensions.Logging.Abstractions": "3.1.4", - "Microsoft.Extensions.Options": "3.1.4" + "Microsoft.Extensions.Configuration.Binder": "3.1.5", + "Microsoft.Extensions.DependencyInjection": "3.1.5", + "Microsoft.Extensions.Logging.Abstractions": "3.1.5", + "Microsoft.Extensions.Options": "3.1.5" } }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "JNPxhw2XwhjfGFyIkA5eBfzUDPNpa6Q50HJ2F6lCAMoSa1GquAktTrl4PhEyTYFNmu09B0E90WhYsUb3kmSkOA==" + "resolved": "3.1.5", + "contentHash": "ZvwowjRSWXewdPI+whPFXgwF4Qme6Q9KV9SCPEITSGiqHLArct7q5hTBtTzj3GPsVLjTqehvTg6Bd/EQk9JS0A==" }, "Microsoft.Extensions.Logging.Configuration": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "FwFVjkeYkiXtBBH6xJDsxhO6hDCxJ0I6c2qDUHBRiDUIrn6N7eXvdwQNQ+cL7XO7n6Xi3pkT+z3EQRvglIkEuQ==", + "resolved": "3.1.5", + "contentHash": "I+9jx/A9cLdkTmynKMa2oR4rYAfe3n2F/wNVvKxwIk2J33paEU13Se08Q5xvQisqfbumaRUNF7BWHr63JzuuRw==", "dependencies": { - "Microsoft.Extensions.Logging": "3.1.4", - "Microsoft.Extensions.Options.ConfigurationExtensions": "3.1.4" + "Microsoft.Extensions.Logging": "3.1.5", + "Microsoft.Extensions.Options.ConfigurationExtensions": "3.1.5" } }, "Microsoft.Extensions.Logging.Console": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "Solz/9q7CaEJBGUVWCzxrJ4VW4Hff202s4spSbTizEn4BoL94WfeXliK8k8+PTJuqj0U5tsoTJFv4tql/7nz9Q==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "3.1.4", - "Microsoft.Extensions.Logging": "3.1.4", - "Microsoft.Extensions.Logging.Configuration": "3.1.4" - } - }, - "Microsoft.Extensions.Logging.Debug": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "dEBzfBfaeJuzK9tc5gAz2mq8XyK/nG8O/nFzYvj3Xpai8Jg2+ATfod9rOfEiLsKuxQBJphS1Uku5Yi0178R30Q==", - "dependencies": { - "Microsoft.Extensions.Logging": "3.1.2" - } - }, - "Microsoft.Extensions.Logging.EventLog": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "839T7wGsE+f4CnBwiA82MMnnZf1B1cUBK2PYA8IcysOXsCrFzlM+sUwfzcAySXTNDG8IeMBBi0DZMLWMXhTbjQ==", - "dependencies": { - "Microsoft.Extensions.Logging": "3.1.2", - "System.Diagnostics.EventLog": "4.7.0" - } - }, - "Microsoft.Extensions.Logging.EventSource": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "8Y/VYarFYNZxXNi5cHp49VTuPyV3+Q2U7a9tCuS1TTBMBtQ+M5RNucQGrqquZ2DD9kdhEwrSThwzzjjN2nn0fw==", + "resolved": "3.1.5", + "contentHash": "c/W7d9sjgyU0/3txj/i6pC+8f25Jbua7zKhHVHidC5hHL4OX8fAxSGPBWYOsRN4tXqpd5VphNmIFUWyT12fMoA==", "dependencies": { - "Microsoft.Extensions.Logging": "3.1.2" + "Microsoft.Extensions.Configuration.Abstractions": "3.1.5", + "Microsoft.Extensions.Logging": "3.1.5", + "Microsoft.Extensions.Logging.Configuration": "3.1.5" } }, "Microsoft.Extensions.Options": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "ntWmD8i6UmAo0nn5MiCXIVl3+75aybVHgP/NxL9B16zwsbGkSfs+66BullsGEDNvrimgIFVDO+iB/h0yWfATWg==", + "resolved": "3.1.5", + "contentHash": "f+JT/7lkKBMp/Ak2tVjO+TD7o+UoCfjnExkZNn0PZIso8kIXrqNy6x42Lrxf4Q0pW3JMf9ExmL2EQlvk2XnFAg==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.4", - "Microsoft.Extensions.Primitives": "3.1.4" + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.5", + "Microsoft.Extensions.Primitives": "3.1.5" } }, "Microsoft.Extensions.Options.ConfigurationExtensions": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "tTXDVrLUv+cqCu7piSoVWk4BNcDAPGCIsoir19VEjMzefpBPS/HlXtR26RctHDsdo2qdAeyPNSEqtNc2g/7/qg==", + "resolved": "3.1.5", + "contentHash": "mgM+JHFeRg3zSRjScVADU/mohY8s0czKRTNT9oszWgX1mlw419yqP6ITCXovPopMXiqzRdkZ7AEuErX9K+ROww==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "3.1.4", - "Microsoft.Extensions.Configuration.Binder": "3.1.4", - "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.4", - "Microsoft.Extensions.Options": "3.1.4" + "Microsoft.Extensions.Configuration.Abstractions": "3.1.5", + "Microsoft.Extensions.Configuration.Binder": "3.1.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.5", + "Microsoft.Extensions.Options": "3.1.5" } }, "Microsoft.Extensions.Primitives": { "type": "Transitive", - "resolved": "3.1.4", - "contentHash": "tLR9n5ltwA56nr1t5M6q5IBfGLXtMS+XgumtqVENmtPQOWUD+m0Kgo1U6GWr06Y875WUN3sOGnmqkvW4an7fYA==" + "resolved": "3.1.5", + "contentHash": "6bLdjSAQix82oP2tsuX9MM2yjgUFFOkSZYyRSKoUULilw2cg0Y0H+dnugwYlfj8Jd7yjd/+QSdNBqEyYhTYv0w==" }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Transitive", @@ -525,13 +415,13 @@ }, "Microsoft.NetCore.Analyzers": { "type": "Transitive", - "resolved": "2.9.8", - "contentHash": "zbGttCZ8T5wJiBDhgIaFWTrYa/X7zbCnQ76PEu/B4gb64KY+yB9gjkndsKWR+2TbOId76PN7WrSQAn+W7gr5jQ==" + "resolved": "3.0.0", + "contentHash": "JdjhkobYjmQAu4JpsEALDAr7xig2pzXMsXGilHJ2gvmUaUSBjYObw53CBaIkRXmPu0DaDPN8ze9LCtsRd1R8UA==" }, "Microsoft.NETCore.Platforms": { "type": "Transitive", - "resolved": "3.1.0", - "contentHash": "z7aeg8oHln2CuNulfhiLYxCVMPEwBl3rzicjvIX+4sUuCwvXw5oXQEtbiU2c0z4qYL5L3Kmx0mMA/+t/SbY67w==" + "resolved": "1.1.0", + "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" }, "Microsoft.NETCore.Targets": { "type": "Transitive", @@ -540,23 +430,23 @@ }, "Microsoft.NetFramework.Analyzers": { "type": "Transitive", - "resolved": "2.9.8", - "contentHash": "8fZYJqeKBW5uuKBact26IeOBogchn5Km85klHqHneRY7Jxp+ERtrw8zJVumNFUVL68pIcf4uKPOY7zfBQ7eY3A==" + "resolved": "3.0.0", + "contentHash": "Q0sB3JYld9JMa9/HKtioIxhqmOohEku1FkfSC/uf0usGcCIhm6GYWU565klP64jC2kzmjFIu/6fkHEIYRqZCQQ==" }, "Microsoft.TestPlatform.ObjectModel": { "type": "Transitive", - "resolved": "16.5.0", - "contentHash": "NnLFxmFBCAS6kye2JFszD5WKgj4Zve5KX/R0mhYwh6BVnSeybI2unRnjEPtLyY3CAVhwrY4bh/8LNFtslAcGZg==", + "resolved": "16.6.1", + "contentHash": "QFD1oT7Rn8Pv6z8L95gDXHsgRSsQmvMrIIhSrUqsEuKwsKg4HAqlOhWRwR0/UEkFMl9NdWt2w+OH01ttcDTtkg==", "dependencies": { "NuGet.Frameworks": "5.0.0" } }, "Microsoft.TestPlatform.TestHost": { "type": "Transitive", - "resolved": "16.5.0", - "contentHash": "ytGymboQIvjNX5pLC0yp/Bz9sGDHqSnLQgBRtd4VrqOUgKmmcfxMYZ6p0TBZgAT1oijdC6xqUZ7rl8mbaaXTJw==", + "resolved": "16.6.1", + "contentHash": "zPDuoodyqh99TReaEE7ea7nXmNTvQ7oclK/yng/r6DrOUDP1E7a5sW6x3fkb0CqEmb2YNUwH9QgmiVmouv/wIw==", "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "16.5.0", + "Microsoft.TestPlatform.ObjectModel": "16.6.1", "Newtonsoft.Json": "9.0.1" } }, @@ -570,15 +460,6 @@ "System.Runtime": "4.3.0" } }, - "Microsoft.Win32.Registry": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "KSrRMb5vNi0CWSGG1++id2ZOs/1QhRqROt+qgbEAdQuGjGrFcl4AOl4/exGPUYz2wUnU42nvJqon1T3U0kPXLA==", - "dependencies": { - "System.Security.AccessControl": "4.7.0", - "System.Security.Principal.Windows": "4.7.0" - } - }, "NETStandard.Library": { "type": "Transitive", "resolved": "1.6.1", @@ -951,16 +832,6 @@ "resolved": "4.7.1", "contentHash": "j81Lovt90PDAq8kLpaJfJKV/rWdWuEk6jfV+MBkee33vzYLEUsy4gXK8laa9V2nZlLM9VM9yA/OOQxxPEJKAMw==" }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "iDoKGQcRwX0qwY+eAEkaJGae0d/lHlxtslO+t8pJWAUxlvY3tqLtVOPnW2UU4cFjP0Y/L1QBqhkZfSyGqVMR2w==", - "dependencies": { - "Microsoft.NETCore.Platforms": "3.1.0", - "Microsoft.Win32.Registry": "4.7.0", - "System.Security.Principal.Windows": "4.7.0" - } - }, "System.Diagnostics.Tools": { "type": "Transitive", "resolved": "4.3.0", @@ -1136,8 +1007,8 @@ }, "System.IO.Pipelines": { "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "S0L7oyWyQdVzD+5xIvcC8h44Vc+FY+qXDCLRh2+YsuBDORNphcxNX+tXR6ByLMjQ/7jDaXxsYBF6qbAr7ZIaFw==" + "resolved": "4.7.1", + "contentHash": "TyMTasnXQt7U4k13RQ7tA3CrfWEkvWjR635SFfnKVwwMOgClLE5mdHSkG2D13BLIdNwbPTGVQnhQB8Rk7f53Rg==" }, "System.Linq": { "type": "Transitive", @@ -1403,15 +1274,6 @@ "System.Runtime.Extensions": "4.3.0" } }, - "System.Security.AccessControl": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "3.1.0", - "System.Security.Principal.Windows": "4.7.0" - } - }, "System.Security.Cryptography.Algorithms": { "type": "Transitive", "resolved": "4.3.0", @@ -1548,11 +1410,6 @@ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" } }, - "System.Security.Principal.Windows": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==" - }, "System.Text.Encoding": { "type": "Transitive", "resolved": "4.3.0", @@ -1729,10 +1586,10 @@ "dependencies": { "AutoMapper": "9.0.0", "AutoMapper.Extensions.Microsoft.DependencyInjection": "7.0.0", - "Microsoft.AspNetCore.SpaServices.Extensions": "3.1.4", - "Microsoft.EntityFrameworkCore": "3.1.4", - "Microsoft.EntityFrameworkCore.Analyzers": "3.1.4", - "Microsoft.EntityFrameworkCore.Sqlite": "3.1.4", + "Microsoft.AspNetCore.SpaServices.Extensions": "3.1.5", + "Microsoft.EntityFrameworkCore": "3.1.5", + "Microsoft.EntityFrameworkCore.Analyzers": "3.1.5", + "Microsoft.EntityFrameworkCore.Sqlite": "3.1.5", "SixLabors.ImageSharp": "1.0.0-rc0001", "System.IdentityModel.Tokens.Jwt": "6.6.0", "Timeline.ErrorCodes": "1.0.0" -- cgit v1.2.3