diff options
author | crupest <crupest@outlook.com> | 2020-06-15 00:05:02 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-06-15 00:05:02 +0800 |
commit | f7ec671a7422ea1fc6de4bb310fed3b4933f27e9 (patch) | |
tree | f0257e17a4c7828d8c88de2f306a59cdd588ceba | |
parent | 98f1ec6e27616d292f86cce30223f0a267c35fd3 (diff) | |
download | timeline-f7ec671a7422ea1fc6de4bb310fed3b4933f27e9.tar.gz timeline-f7ec671a7422ea1fc6de4bb310fed3b4933f27e9.tar.bz2 timeline-f7ec671a7422ea1fc6de4bb310fed3b4933f27e9.zip |
refactor(back): Use generic host.
-rw-r--r-- | Dockerfile | 1 | ||||
-rw-r--r-- | Timeline.Tests/Helpers/TestApplication.cs | 35 | ||||
-rw-r--r-- | Timeline.Tests/IntegratedTests/AuthorizationTest.cs | 6 | ||||
-rw-r--r-- | Timeline.Tests/IntegratedTests/FrontEndTest.cs | 5 | ||||
-rw-r--r-- | Timeline.Tests/IntegratedTests/IntegratedTestBase.cs | 18 | ||||
-rw-r--r-- | Timeline.Tests/IntegratedTests/TimelineTest.cs | 6 | ||||
-rw-r--r-- | Timeline.Tests/IntegratedTests/TokenTest.cs | 11 | ||||
-rw-r--r-- | Timeline.Tests/IntegratedTests/UnknownEndpointTest.cs | 5 | ||||
-rw-r--r-- | Timeline.Tests/IntegratedTests/UserAvatarTest.cs | 9 | ||||
-rw-r--r-- | Timeline.Tests/IntegratedTests/UserTest.cs | 7 | ||||
-rw-r--r-- | Timeline.Tests/Timeline.Tests.csproj | 14 | ||||
-rw-r--r-- | Timeline.Tests/packages.lock.json | 447 | ||||
-rw-r--r-- | Timeline/Program.cs | 10 | ||||
-rw-r--r-- | Timeline/Startup.cs | 16 | ||||
-rw-r--r-- | Timeline/Timeline.csproj | 10 | ||||
-rw-r--r-- | Timeline/packages.lock.json | 222 |
16 files changed, 316 insertions, 506 deletions
@@ -5,6 +5,5 @@ RUN dotnet publish Timeline/Timeline.csproj --configuration Release --output ./T FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 WORKDIR /app -ENV ASPNETCORE_FORWARDEDHEADERS_ENABLED true COPY --from=build /timeline-app/Timeline/publish . ENTRYPOINT ["dotnet", "Timeline.dll"] 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<Startup> Factory { get; private set; }
+ public IHost Host { get; private set; }
public string WorkDir { get; private set; }
- public TestApplication(WebApplicationFactory<Startup> factory)
+ public TestApplication()
{
- Factory = factory;
+
}
public async Task InitializeAsync()
@@ -35,8 +37,7 @@ namespace Timeline.Tests.Helpers await DatabaseConnection.OpenAsync();
var options = new DbContextOptionsBuilder<DatabaseContext>()
- .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<string, string>
{
[ApplicationConfiguration.UseMockFrontEndKey] = "true",
["WorkDir"] = WorkDir
});
- });
- builder.ConfigureServices(services =>
+ })
+ .ConfigureServices(services =>
{
services.AddDbContext<DatabaseContext>(options =>
{
options.UseSqlite(DatabaseConnection);
});
- });
- });
+ })
+ .ConfigureWebHost(webBuilder =>
+ {
+ webBuilder
+ .UseTestServer()
+ .UseStartup<Startup>();
+ })
+ .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<Startup> 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<Startup> 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<WebApplicationFactory<Startup>>, IAsyncLifetime
+ public abstract class IntegratedTestBase : IAsyncLifetime
{
protected TestApplication TestApp { get; }
- protected WebApplicationFactory<Startup> Factory => TestApp.Factory;
-
public IReadOnlyList<UserInfo> UserInfos { get; private set; }
private readonly int _userCount;
- public IntegratedTestBase(WebApplicationFactory<Startup> factory) : this(factory, 1)
+ public IntegratedTestBase() : this(1)
{
}
- public IntegratedTestBase(WebApplicationFactory<Startup> 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<User>()
{
@@ -119,7 +117,7 @@ namespace Timeline.Tests.IntegratedTests public Task<HttpClient> 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<HttpClient> 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<Startup> 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<DatabaseContext>();
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<Startup> factory)
- : base(factory)
- {
-
- }
-
private static async Task<CreateTokenResponse> 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<IUserService>();
@@ -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<IUserService>();
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<Startup> 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<Startup> 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<IWebHostEnvironment>();
+ var env = TestApp.Host.Services.GetRequiredService<IWebHostEnvironment>();
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<Startup> 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 @@ </PropertyGroup>
<ItemGroup>
- <PackageReference Include="coverlet.collector" Version="1.2.0">
+ <PackageReference Include="coverlet.collector" Version="1.3.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
- <PackageReference Include="FluentAssertions" Version="5.10.2" />
+ <PackageReference Include="FluentAssertions" Version="5.10.3" />
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.7" />
- <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="3.1.2" />
- <PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.8">
+ <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="3.1.5" />
+ <PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
- <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
- <PackageReference Include="Moq" Version="4.13.1" />
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
+ <PackageReference Include="Moq" Version="4.14.1" />
<PackageReference Include="xunit" Version="2.4.1" />
- <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
+ <PackageReference Include="xunit.runner.visualstudio" Version="2.4.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
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"
diff --git a/Timeline/Program.cs b/Timeline/Program.cs index 0540fbd1..87e330a2 100644 --- a/Timeline/Program.cs +++ b/Timeline/Program.cs @@ -1,4 +1,3 @@ -using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
@@ -34,8 +33,11 @@ namespace Timeline host.Run();
}
- public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
- WebHost.CreateDefaultBuilder(args)
- .UseStartup<Startup>();
+ public static IHostBuilder CreateWebHostBuilder(string[] args) =>
+ Host.CreateDefaultBuilder(args)
+ .ConfigureWebHostDefaults(webBuilder =>
+ {
+ webBuilder.UseStartup<Startup>();
+ });
}
}
diff --git a/Timeline/Startup.cs b/Timeline/Startup.cs index a5eab4ad..2eb08f96 100644 --- a/Timeline/Startup.cs +++ b/Timeline/Startup.cs @@ -1,7 +1,6 @@ using AutoMapper;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
-using Microsoft.AspNetCore.HttpOverrides;
using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
@@ -118,21 +117,6 @@ namespace Timeline // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app)
{
- if (string.Equals(System.Environment.GetEnvironmentVariable("ASPNETCORE_FORWARDEDHEADERS_ENABLED"), "true", StringComparison.OrdinalIgnoreCase))
- {
- var options = new ForwardedHeadersOptions
- {
- ForwardedHeaders = ForwardedHeaders.XForwardedFor |
- ForwardedHeaders.XForwardedProto
- };
- // Only loopback proxies are allowed by default.
- // Clear that restriction because forwarders are enabled by explicit
- // configuration.
- options.KnownNetworks.Clear();
- options.KnownProxies.Clear();
- app.UseForwardedHeaders(options);
- }
-
app.UseRouting();
if (!disableFrontEnd && (useMockFrontEnd || !Environment.IsDevelopment()))
diff --git a/Timeline/Timeline.csproj b/Timeline/Timeline.csproj index dfaecf02..badafd33 100644 --- a/Timeline/Timeline.csproj +++ b/Timeline/Timeline.csproj @@ -28,15 +28,15 @@ <ItemGroup>
<PackageReference Include="AutoMapper" Version="9.0.0" />
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="7.0.0" />
- <PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.1.4" />
+ <PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.1.5" />
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
- <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.4" />
- <PackageReference Include="Microsoft.EntityFrameworkCore.Analyzers" Version="3.1.4" />
- <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.4" />
- <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.4">
+ <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.5" />
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Analyzers" Version="3.1.5" />
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.5" />
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.5">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
diff --git a/Timeline/packages.lock.json b/Timeline/packages.lock.json index 6e38ec13..ad9a3a73 100644 --- a/Timeline/packages.lock.json +++ b/Timeline/packages.lock.json @@ -24,12 +24,12 @@ },
"Microsoft.AspNetCore.SpaServices.Extensions": {
"type": "Direct",
- "requested": "[3.1.4, )",
- "resolved": "3.1.4",
- "contentHash": "D3ebEuFB4UQDj+/vKWixWOKffUrB1Mq9PkUi/YN0XFpiQCjvnHjct2wc1DyAKdBpxES6ZssWcb1MrMzO0M91LQ==",
+ "requested": "[3.1.5, )",
+ "resolved": "3.1.5",
+ "contentHash": "mWRSFYK+AxBMuB+PMIMaB9E2QaXaaiwMYhfavPLPZ8VolKIEeJsfcrBhtgAKroaLblkJL7zQJFIEZL0KGoWaYw==",
"dependencies": {
- "Microsoft.AspNetCore.SpaServices": "3.1.4",
- "Microsoft.Extensions.FileProviders.Physical": "3.1.4"
+ "Microsoft.AspNetCore.SpaServices": "3.1.5",
+ "Microsoft.Extensions.FileProviders.Physical": "3.1.5"
}
},
"Microsoft.CodeAnalysis.FxCopAnalyzers": {
@@ -46,17 +46,17 @@ },
"Microsoft.EntityFrameworkCore": {
"type": "Direct",
- "requested": "[3.1.4, )",
- "resolved": "3.1.4",
- "contentHash": "mxUv8ds1yMTHTabGWA81KQiFp8Rfz0+6vz1+hgG+ajzcbIG+h0UfO1vSWQLdAsDlz976+Spy1M84dJ8F1vxTnQ==",
+ "requested": "[3.1.5, )",
+ "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"
@@ -64,27 +64,27 @@ },
"Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Direct",
- "requested": "[3.1.4, )",
- "resolved": "3.1.4",
- "contentHash": "u//p9rwaCSsZW0hBaNsd+/afoSwfMI3eBxX6u3ceHJS1kE0EfUCbjURql5Xt9/cHkginug0c7j/eYv4THULW6g=="
+ "requested": "[3.1.5, )",
+ "resolved": "3.1.5",
+ "contentHash": "NhxlI6Qj/QUt79ApeBrpKo+a5TGt/UCddxd9rLHD7Zd6yLyfkDOMiyu4oPqhnMhpqmzo/gd79tW7BMwIxgEZCw=="
},
"Microsoft.EntityFrameworkCore.Sqlite": {
"type": "Direct",
- "requested": "[3.1.4, )",
- "resolved": "3.1.4",
- "contentHash": "tA3enPOXq1Id+MMsJTXeP7iCLMO6qh9exzQhswnExAyNPXpoQLSPHZn97U3pPA6BC2g37Be/InnHtevzT9nRdQ==",
+ "requested": "[3.1.5, )",
+ "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.Tools": {
"type": "Direct",
- "requested": "[3.1.4, )",
- "resolved": "3.1.4",
- "contentHash": "aJ1TGflH7aFOh+oPppIzx7NoC8QXw6lY4YH8PAa67tTlh40GJvWbhkNVqDCyuzrvUl9U1I3i4so/N6TtCK11uw==",
+ "requested": "[3.1.5, )",
+ "resolved": "3.1.5",
+ "contentHash": "8vv6M1/HyoQuuvPZ9aL0HycCJdxEWLULMxFA9oRjRLBg70oo4Y2lKt7VpZT/zIOi/BFyq+H25JFT6+S7vYxakQ==",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Design": "3.1.4"
+ "Microsoft.EntityFrameworkCore.Design": "3.1.5"
}
},
"SixLabors.ImageSharp": {
@@ -105,19 +105,19 @@ },
"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.Bcl.AsyncInterfaces": {
@@ -147,195 +147,195 @@ },
"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.Abstractions": {
"type": "Transitive",
- "resolved": "3.1.4",
- "contentHash": "eiseLLk5E3RT2x/c9C+3oBiJsMar/tvD3z8lCYaCWdJagIrTcz8AkpVJzGFsC3Q40DmEPSFYURMjNgpKMlxTsA=="
+ "resolved": "3.1.5",
+ "contentHash": "xZ3mUVu22p2h0ZKTWgoyK9YjA2H11cJcZssDcZYs8iLUVHPxMcb+ITOKpMdnV6SkEiQQ5pvjPXQ5J7VxiGSwDw=="
},
"Microsoft.EntityFrameworkCore.Design": {
"type": "Transitive",
- "resolved": "3.1.4",
- "contentHash": "vfY9sV3zJW/kwV9VBXAQlj5rky+bEI217WfurB8fct8YkQCtl+L5MCr0ej2NUOs/rpQyYsAocKU2379AyMtbVQ==",
+ "resolved": "3.1.5",
+ "contentHash": "Bo5IVeCueESgeADKth/w9+IIwhMb1FgNrgB/egnHoTudnoZFffxPo/HVp8R5uyDIkBkEkfD7pTLy5szMyc8c1w==",
"dependencies": {
"Microsoft.CSharp": "4.7.0",
- "Microsoft.EntityFrameworkCore.Relational": "3.1.4"
+ "Microsoft.EntityFrameworkCore.Relational": "3.1.5"
}
},
"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.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==",
+ "resolved": "3.1.5",
+ "contentHash": "ZR/zjBxkvdnnWhRoBHDT95uz1ZgJFhv1QazmKCIcDqy/RXqi+6dJ/PfxDhEnzPvk9HbkcGfFsPEu1vSIyxDqBQ==",
"dependencies": {
- "Microsoft.Extensions.Configuration": "3.1.4"
+ "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=="
+ "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==",
+ "resolved": "3.1.5",
+ "contentHash": "c/W7d9sjgyU0/3txj/i6pC+8f25Jbua7zKhHVHidC5hHL4OX8fAxSGPBWYOsRN4tXqpd5VphNmIFUWyT12fMoA==",
"dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "3.1.4",
- "Microsoft.Extensions.Logging": "3.1.4",
- "Microsoft.Extensions.Logging.Configuration": "3.1.4"
+ "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",
|