Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e1e8a834b2 | |||
| 61f3d2889c | |||
| 66a7e633a9 | |||
| fff484d4ba | |||
| e69550048b | |||
| a29fb27b0d | |||
| c23cc4a03a | |||
| 1d2f96b2f4 | |||
| f1cdc5de19 | |||
| 4e06dc5f23 | |||
| 779acbe531 | |||
| e6021dcc61 | |||
| 4f994ba183 | |||
| 2bb1f730c9 | |||
| c92e134698 | |||
| 0b9e01c925 | |||
| c1bd8a12a9 | |||
| c120d34e62 |
@@ -6,4 +6,6 @@ public class GetDiscussionDto
|
|||||||
public string Name { get; set; } = string.Empty;
|
public string Name { get; set; } = string.Empty;
|
||||||
public bool IsGroup { get; set; }
|
public bool IsGroup { get; set; }
|
||||||
public int? MembersCount { get; set; }
|
public int? MembersCount { get; set; }
|
||||||
|
|
||||||
|
public int? GroupId { get; set; }
|
||||||
}
|
}
|
||||||
@@ -7,6 +7,6 @@ public class GetMessageDetailsDto
|
|||||||
public DateTime Date { get; set; }
|
public DateTime Date { get; set; }
|
||||||
public Boolean Type { get; set; }
|
public Boolean Type { get; set; }
|
||||||
|
|
||||||
public int AuthorId { get; set; }
|
public int UserId { get; set; }
|
||||||
public string AuthorName { get; set; } = "";
|
public string AuthorName { get; set; } = "";
|
||||||
}
|
}
|
||||||
@@ -3,11 +3,11 @@ using Knots.DTO.Discussion;
|
|||||||
using Knots.Models;
|
using Knots.Models;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System.Security.Claims;
|
using System.Security.Claims;
|
||||||
|
using Knots.Services;
|
||||||
|
|
||||||
namespace Knots.Endpoints.Discussion;
|
namespace Knots.Endpoints.Discussion;
|
||||||
|
|
||||||
public class CreateGroupDiscussionEndpoint(KnotsDbContext db)
|
public class CreateGroupDiscussionEndpoint(KnotsDbContext db, EncryptionService encryption) : Endpoint<CreateGroupDiscussionRequest, GetDiscussionDto>
|
||||||
: Endpoint<CreateGroupDiscussionRequest, GetDiscussionDto>
|
|
||||||
{
|
{
|
||||||
public override void Configure()
|
public override void Configure()
|
||||||
{
|
{
|
||||||
@@ -18,52 +18,68 @@ public class CreateGroupDiscussionEndpoint(KnotsDbContext db)
|
|||||||
{
|
{
|
||||||
int currentUserId = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!);
|
int currentUserId = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!);
|
||||||
|
|
||||||
|
|
||||||
if (req.Usernames == null || req.Usernames.Count == 0)
|
if (req.Usernames == null || req.Usernames.Count == 0)
|
||||||
{
|
{
|
||||||
await SendErrorsAsync(400, ct);
|
await SendErrorsAsync(400, ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
List<Models.User> targets = await db.Users
|
List<Models.User> targets = await db.Users
|
||||||
.Where(u => req.Usernames.Contains(u.Username!))
|
.Where(u => req.Usernames.Contains(u.Username!))
|
||||||
.ToListAsync(ct);
|
.ToListAsync(ct);
|
||||||
|
|
||||||
if (targets.Count != req.Usernames.Count)
|
if (targets.Count != req.Usernames.Count)
|
||||||
{
|
{
|
||||||
await SendNotFoundAsync(ct); // un ou plusieurs utilisateurs introuvables
|
await SendNotFoundAsync(ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targets.Any(t => t.Id == currentUserId))
|
if (targets.Any(t => t.Id == currentUserId))
|
||||||
{
|
{
|
||||||
await SendErrorsAsync(400, ct); // pas de discussion avec soi-même
|
await SendErrorsAsync(400, ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int totalMembers = targets.Count + 1;
|
||||||
List<UserDiscussion> members = targets
|
|
||||||
.Select(t => new UserDiscussion { UserId = t.Id })
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
members.Add(new UserDiscussion { UserId = currentUserId });
|
|
||||||
|
|
||||||
Models.Discussion discussion = new()
|
Models.Discussion discussion = new()
|
||||||
{
|
{
|
||||||
IsGroup = true,
|
IsGroup = true,
|
||||||
UserDiscussions = members
|
Key = new Models.Key { EnKey = encryption.GenerateKey() },
|
||||||
|
UserDiscussions = targets
|
||||||
|
.Select(t => new UserDiscussion { UserId = t.Id })
|
||||||
|
.Append(new UserDiscussion { UserId = currentUserId })
|
||||||
|
.ToList()
|
||||||
};
|
};
|
||||||
|
|
||||||
db.Discussions.Add(discussion);
|
db.Discussions.Add(discussion);
|
||||||
|
await db.SaveChangesAsync(ct); // discussion.Id disponible
|
||||||
|
|
||||||
|
|
||||||
|
Models.Group group = new()
|
||||||
|
{
|
||||||
|
Name = req.GroupName,
|
||||||
|
MembersAmount = totalMembers,
|
||||||
|
DiscussionId = discussion.Id,
|
||||||
|
GroupUsers = targets
|
||||||
|
.Select(t => new GroupUser { UserId = t.Id })
|
||||||
|
.Append(new GroupUser { UserId = currentUserId })
|
||||||
|
.ToList()
|
||||||
|
};
|
||||||
|
|
||||||
|
db.Groups.Add(group);
|
||||||
|
await db.SaveChangesAsync(ct); // group.Id disponible
|
||||||
|
|
||||||
|
|
||||||
|
discussion.GroupId = group.Id;
|
||||||
await db.SaveChangesAsync(ct);
|
await db.SaveChangesAsync(ct);
|
||||||
|
|
||||||
await SendOkAsync(new GetDiscussionDto
|
await SendOkAsync(new GetDiscussionDto
|
||||||
{
|
{
|
||||||
Id = discussion.Id,
|
Id = discussion.Id,
|
||||||
IsGroup = true,
|
IsGroup = true,
|
||||||
Name = req.GroupName,
|
Name = group.Name,
|
||||||
MembersCount = members.Count
|
MembersCount = totalMembers
|
||||||
}, ct);
|
}, ct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,10 +3,11 @@ using Knots.DTO.Discussion;
|
|||||||
using Knots.Models;
|
using Knots.Models;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System.Security.Claims;
|
using System.Security.Claims;
|
||||||
|
using Knots.Services;
|
||||||
|
|
||||||
namespace Knots.Endpoints.Discussion;
|
namespace Knots.Endpoints.Discussion;
|
||||||
|
|
||||||
public class CreatePrivateDiscussionEndpoint(KnotsDbContext db)
|
public class CreatePrivateDiscussionEndpoint(KnotsDbContext db, EncryptionService encryption)
|
||||||
: Endpoint<CreatePrivateDiscussionRequest, GetDiscussionDto>
|
: Endpoint<CreatePrivateDiscussionRequest, GetDiscussionDto>
|
||||||
{
|
{
|
||||||
public override void Configure()
|
public override void Configure()
|
||||||
@@ -57,6 +58,7 @@ public class CreatePrivateDiscussionEndpoint(KnotsDbContext db)
|
|||||||
Models.Discussion discussion = new()
|
Models.Discussion discussion = new()
|
||||||
{
|
{
|
||||||
IsGroup = false,
|
IsGroup = false,
|
||||||
|
Key = new Models.Key { EnKey = encryption.GenerateKey() },
|
||||||
UserDiscussions =
|
UserDiscussions =
|
||||||
[
|
[
|
||||||
new UserDiscussion { UserId = currentUserId },
|
new UserDiscussion { UserId = currentUserId },
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
using System.Security.Claims;
|
||||||
|
using FastEndpoints;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace Knots.Endpoints.Discussion;
|
||||||
|
|
||||||
|
public class GetDiscussionMembersEndpoint(KnotsDbContext db) : EndpointWithoutRequest<List<string>>
|
||||||
|
{
|
||||||
|
public override void Configure()
|
||||||
|
{
|
||||||
|
Get("/discussions/{discussionId}/members");
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task HandleAsync(CancellationToken ct)
|
||||||
|
{
|
||||||
|
int discussionId = Route<int>("discussionId");
|
||||||
|
|
||||||
|
Models.Discussion? discussion = await db.Discussions
|
||||||
|
.Include(d => d.UserDiscussions)
|
||||||
|
.ThenInclude(ud => ud.User)
|
||||||
|
.SingleOrDefaultAsync(d => d.Id == discussionId, ct);
|
||||||
|
|
||||||
|
if (discussion is null)
|
||||||
|
{
|
||||||
|
await SendNotFoundAsync(ct);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<string> members = discussion.UserDiscussions
|
||||||
|
.Select(ud => ud.User.Username!)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
await SendOkAsync(members, ct);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
using FastEndpoints;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace Knots.Endpoints.Discussion;
|
||||||
|
|
||||||
|
public class GetDiscussionMembersWithRolesEndpoint(KnotsDbContext db) : EndpointWithoutRequest<List<MemberWithRoleDto>>
|
||||||
|
{
|
||||||
|
public override void Configure()
|
||||||
|
{
|
||||||
|
Get("/discussions/{discussionId}/members/roles");
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task HandleAsync(CancellationToken ct)
|
||||||
|
{
|
||||||
|
int discussionId = Route<int>("discussionId");
|
||||||
|
|
||||||
|
Models.Discussion? discussion = await db.Discussions
|
||||||
|
.Include(d => d.Group)
|
||||||
|
.ThenInclude(g => g!.GroupUsers)
|
||||||
|
.ThenInclude(gu => gu.User)
|
||||||
|
.Include(d => d.Group)
|
||||||
|
.ThenInclude(g => g!.GroupUsers)
|
||||||
|
.ThenInclude(gu => gu.Role)
|
||||||
|
.SingleOrDefaultAsync(d => d.Id == discussionId, ct);
|
||||||
|
|
||||||
|
if (discussion?.Group is null)
|
||||||
|
{
|
||||||
|
await SendNotFoundAsync(ct);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<MemberWithRoleDto> members = discussion.Group.GroupUsers
|
||||||
|
.Select(gu => new MemberWithRoleDto
|
||||||
|
{
|
||||||
|
UserId = gu.UserId,
|
||||||
|
Username = gu.User.Username!,
|
||||||
|
RoleId = gu.RoleId,
|
||||||
|
RoleLibelle = gu.Role?.Libelle
|
||||||
|
})
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
await SendOkAsync(members, ct);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class MemberWithRoleDto
|
||||||
|
{
|
||||||
|
public int UserId { get; set; }
|
||||||
|
public string Username { get; set; } = "";
|
||||||
|
public int? RoleId { get; set; }
|
||||||
|
public string? RoleLibelle { get; set; }
|
||||||
|
}
|
||||||
@@ -27,7 +27,8 @@ public class GetMyDiscussionEndpoint(KnotsDbContext db) : EndpointWithoutRequest
|
|||||||
.Where(ud => ud.UserId != userId)
|
.Where(ud => ud.UserId != userId)
|
||||||
.Select(ud => ud.User.Username)
|
.Select(ud => ud.User.Username)
|
||||||
.FirstOrDefault() ?? "",
|
.FirstOrDefault() ?? "",
|
||||||
MembersCount = null
|
MembersCount = null,
|
||||||
|
GroupId = null
|
||||||
});
|
});
|
||||||
|
|
||||||
// Discussions de groupe : l'utilisateur est membre du groupe
|
// Discussions de groupe : l'utilisateur est membre du groupe
|
||||||
@@ -38,7 +39,8 @@ public class GetMyDiscussionEndpoint(KnotsDbContext db) : EndpointWithoutRequest
|
|||||||
Id = d.Id,
|
Id = d.Id,
|
||||||
IsGroup = true,
|
IsGroup = true,
|
||||||
Name = d.Group!.Name!,
|
Name = d.Group!.Name!,
|
||||||
MembersCount = d.Group.MembersAmount
|
MembersCount = d.Group.MembersAmount,
|
||||||
|
GroupId = d.Group.Id
|
||||||
});
|
});
|
||||||
|
|
||||||
List<GetDiscussionDto> discussions = await privees.Concat(groupes).ToListAsync(ct);
|
List<GetDiscussionDto> discussions = await privees.Concat(groupes).ToListAsync(ct);
|
||||||
|
|||||||
@@ -2,11 +2,12 @@ using System.Security.Claims;
|
|||||||
using FastEndpoints;
|
using FastEndpoints;
|
||||||
using Knots.DTO.Message;
|
using Knots.DTO.Message;
|
||||||
using Knots.DTO.User;
|
using Knots.DTO.User;
|
||||||
|
using Knots.Services;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace Knots.Endpoints.Message;
|
namespace Knots.Endpoints.Message;
|
||||||
|
|
||||||
public class GetMessageEndpoint(KnotsDbContext db, AutoMapper.IMapper mapper) : Endpoint<GetDiscussionMessagesRequest, List<GetMessageDetailsDto>>
|
public class GetMessageEndpoint(KnotsDbContext db, AutoMapper.IMapper mapper, EncryptionService encryption) : Endpoint<GetDiscussionMessagesRequest, List<GetMessageDetailsDto>>
|
||||||
{
|
{
|
||||||
public override void Configure()
|
public override void Configure()
|
||||||
{
|
{
|
||||||
@@ -31,18 +32,25 @@ public class GetMessageEndpoint(KnotsDbContext db, AutoMapper.IMapper mapper) :
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<GetMessageDetailsDto> messages = await db.Messages
|
string? key = await db.Discussions
|
||||||
|
.Where(d => d.Id == req.DiscussionId)
|
||||||
|
.Select(d => d.Key!.EnKey)
|
||||||
|
.SingleAsync(ct);
|
||||||
|
|
||||||
|
var rows = await db.Messages
|
||||||
.Where(m => m.DiscussionId == req.DiscussionId)
|
.Where(m => m.DiscussionId == req.DiscussionId)
|
||||||
.OrderBy(m => m.Date)
|
.OrderBy(m => m.Date)
|
||||||
.Select(m => new GetMessageDetailsDto
|
.Select(m => new { m.Id, m.Contenu, m.Date, m.UserId, AuthorName = m.User.Username! })
|
||||||
|
.ToListAsync(ct);
|
||||||
|
|
||||||
|
List<GetMessageDetailsDto> messages = rows.Select(m => new GetMessageDetailsDto
|
||||||
{
|
{
|
||||||
Id = m.Id,
|
Id = m.Id,
|
||||||
Contenu = m.Contenu!,
|
Contenu = encryption.Decrypt(m.Contenu!, key!),
|
||||||
Date = m.Date,
|
Date = m.Date,
|
||||||
AuthorId = m.UserId,
|
UserId = m.UserId,
|
||||||
AuthorName = m.User.Username!
|
AuthorName = m.AuthorName
|
||||||
})
|
}).ToList();
|
||||||
.ToListAsync(ct);
|
|
||||||
|
|
||||||
await SendOkAsync(messages, ct);
|
await SendOkAsync(messages, ct);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
using FastEndpoints;
|
||||||
|
using Knots.Models;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace Knots.Endpoints.Role;
|
||||||
|
|
||||||
|
public class AssignRoleEndpoint(KnotsDbContext db) : Endpoint<AssignRoleRequest>
|
||||||
|
{
|
||||||
|
public override void Configure()
|
||||||
|
{
|
||||||
|
Post("/groups/{groupId}/members/{userId}/role");
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task HandleAsync(AssignRoleRequest req, CancellationToken ct)
|
||||||
|
{
|
||||||
|
int groupId = Route<int>("groupId");
|
||||||
|
int userId = Route<int>("userId");
|
||||||
|
|
||||||
|
GroupUser? groupUser = await db.GroupUsers
|
||||||
|
.SingleOrDefaultAsync(gu => gu.GroupId == groupId && gu.UserId == userId, ct);
|
||||||
|
|
||||||
|
if (groupUser is null)
|
||||||
|
{
|
||||||
|
await SendNotFoundAsync(ct);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool roleExists = await db.Roles.AnyAsync(r => r.Id == req.RoleId, ct);
|
||||||
|
if (!roleExists)
|
||||||
|
{
|
||||||
|
await SendNotFoundAsync(ct);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
groupUser.RoleId = req.RoleId;
|
||||||
|
await db.SaveChangesAsync(ct);
|
||||||
|
|
||||||
|
await SendOkAsync(ct);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AssignRoleRequest
|
||||||
|
{
|
||||||
|
public int RoleId { get; set; }
|
||||||
|
}
|
||||||
@@ -1,22 +1,32 @@
|
|||||||
using FastEndpoints;
|
using FastEndpoints;
|
||||||
using Knots.DTO.Role;
|
using Knots.Models;
|
||||||
using Knots.DTO.User;
|
|
||||||
|
|
||||||
namespace Knots.Endpoints.Role;
|
namespace Knots.Endpoints.Role;
|
||||||
|
|
||||||
public class CreateRoleEndpoint(KnotsDbContext db, AutoMapper.IMapper mapper) : Endpoint<CreateRoleDto>
|
public class CreateRoleEndpoint(KnotsDbContext db) : Endpoint<CreateRoleRequest, RoleDto>
|
||||||
{
|
{
|
||||||
public override void Configure()
|
public override void Configure()
|
||||||
{
|
{
|
||||||
Post("/roles");
|
Post("/roles");
|
||||||
AllowAnonymous();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task HandleAsync(CreateRoleDto req, CancellationToken ct)
|
public override async Task HandleAsync(CreateRoleRequest req, CancellationToken ct)
|
||||||
{
|
{
|
||||||
Models.Role? role = mapper.Map<Models.Role>(req);
|
Models.Role role = new() { Libelle = req.Libelle };
|
||||||
db.Roles.Add(role);
|
db.Roles.Add(role);
|
||||||
await db.SaveChangesAsync(ct);
|
await db.SaveChangesAsync(ct);
|
||||||
await SendNoContentAsync(ct);
|
|
||||||
|
await SendOkAsync(new RoleDto { Id = role.Id, Libelle = role.Libelle! }, ct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class CreateRoleRequest
|
||||||
|
{
|
||||||
|
public string Libelle { get; set; } = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public class RoleDto
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public string Libelle { get; set; } = "";
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
using Knots.Services;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.SignalR;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace Knots.Hubs;
|
||||||
|
|
||||||
|
[Authorize]
|
||||||
|
public class ChatHub(KnotsDbContext db, AutoMapper.IMapper mapper, EncryptionService encryption) : Hub
|
||||||
|
{
|
||||||
|
// Rejoindre une conversation (room)
|
||||||
|
public async Task JoinConversation(string discussionId)
|
||||||
|
{
|
||||||
|
await Groups.AddToGroupAsync(Context.ConnectionId, discussionId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Quitter une conversation
|
||||||
|
public async Task LeaveConversation(string discussionId)
|
||||||
|
{
|
||||||
|
await Groups.RemoveFromGroupAsync(Context.ConnectionId, discussionId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Envoyer un message à une conversation
|
||||||
|
public async Task SendMessage(string discussionId, string content)
|
||||||
|
{
|
||||||
|
int id = int.Parse(discussionId);
|
||||||
|
|
||||||
|
Models.Discussion discussion = await db.Discussions
|
||||||
|
.Include(d => d.Key)
|
||||||
|
.SingleAsync(d => d.Id == id);
|
||||||
|
|
||||||
|
var message = new Models.Message
|
||||||
|
{
|
||||||
|
Contenu = encryption.Encrypt(content, discussion.Key!.EnKey!), // chiffré en base
|
||||||
|
Date = DateTime.UtcNow,
|
||||||
|
Type = false,
|
||||||
|
UserId = int.Parse(Context.UserIdentifier!),
|
||||||
|
DiscussionId = id
|
||||||
|
};
|
||||||
|
|
||||||
|
db.Messages.Add(message);
|
||||||
|
await db.SaveChangesAsync();
|
||||||
|
|
||||||
|
// diffusion en clair, avec les noms de champs attendus par le front
|
||||||
|
await Clients.Group(discussionId).SendAsync("ReceiveMessage", new
|
||||||
|
{
|
||||||
|
id = message.Id,
|
||||||
|
contenu = content,
|
||||||
|
date = message.Date,
|
||||||
|
userId = message.UserId
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Notifier que l'utilisateur est en train d'écrire
|
||||||
|
public async Task Typing(string discussionId)
|
||||||
|
{
|
||||||
|
await Clients.OthersInGroup(discussionId)
|
||||||
|
.SendAsync("UserTyping", Context.UserIdentifier);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,6 +14,7 @@
|
|||||||
<PackageReference Include="Microsoft.AspNetCore.Authentication" Version="2.3.11" />
|
<PackageReference Include="Microsoft.AspNetCore.Authentication" Version="2.3.11" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.28" />
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.28" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.25" />
|
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.25" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.2.11" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.25" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.25" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.25">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.25">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
|||||||
@@ -1,170 +0,0 @@
|
|||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace Knots.Migrations
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class Discussion : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropForeignKey(
|
|
||||||
name: "FK_Groups_Discussions_DiscussionId",
|
|
||||||
table: "Groups");
|
|
||||||
|
|
||||||
migrationBuilder.DropForeignKey(
|
|
||||||
name: "FK_UserDiscussions_Users_UserId",
|
|
||||||
table: "UserDiscussions");
|
|
||||||
|
|
||||||
migrationBuilder.DropIndex(
|
|
||||||
name: "IX_Groups_DiscussionId",
|
|
||||||
table: "Groups");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "KeyId",
|
|
||||||
table: "Groups");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<int>(
|
|
||||||
name: "GroupId",
|
|
||||||
table: "Discussions",
|
|
||||||
type: "int",
|
|
||||||
nullable: true);
|
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "GroupUsers",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
GroupId = table.Column<int>(type: "int", nullable: false),
|
|
||||||
UserId = table.Column<int>(type: "int", nullable: false),
|
|
||||||
RoleId = table.Column<int>(type: "int", nullable: true)
|
|
||||||
},
|
|
||||||
constraints: table =>
|
|
||||||
{
|
|
||||||
table.PrimaryKey("PK_GroupUsers", x => new { x.GroupId, x.UserId });
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_GroupUsers_Groups_GroupId",
|
|
||||||
column: x => x.GroupId,
|
|
||||||
principalTable: "Groups",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_GroupUsers_Roles_RoleId",
|
|
||||||
column: x => x.RoleId,
|
|
||||||
principalTable: "Roles",
|
|
||||||
principalColumn: "Id");
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_GroupUsers_Users_UserId",
|
|
||||||
column: x => x.UserId,
|
|
||||||
principalTable: "Users",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Restrict);
|
|
||||||
});
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_Groups_DiscussionId",
|
|
||||||
table: "Groups",
|
|
||||||
column: "DiscussionId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_Discussions_GroupId",
|
|
||||||
table: "Discussions",
|
|
||||||
column: "GroupId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_GroupUsers_RoleId",
|
|
||||||
table: "GroupUsers",
|
|
||||||
column: "RoleId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_GroupUsers_UserId",
|
|
||||||
table: "GroupUsers",
|
|
||||||
column: "UserId");
|
|
||||||
|
|
||||||
migrationBuilder.AddForeignKey(
|
|
||||||
name: "FK_Discussions_Groups_GroupId",
|
|
||||||
table: "Discussions",
|
|
||||||
column: "GroupId",
|
|
||||||
principalTable: "Groups",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Restrict);
|
|
||||||
|
|
||||||
migrationBuilder.AddForeignKey(
|
|
||||||
name: "FK_Groups_Discussions_DiscussionId",
|
|
||||||
table: "Groups",
|
|
||||||
column: "DiscussionId",
|
|
||||||
principalTable: "Discussions",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Restrict);
|
|
||||||
|
|
||||||
migrationBuilder.AddForeignKey(
|
|
||||||
name: "FK_UserDiscussions_Users_UserId",
|
|
||||||
table: "UserDiscussions",
|
|
||||||
column: "UserId",
|
|
||||||
principalTable: "Users",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Restrict);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropForeignKey(
|
|
||||||
name: "FK_Discussions_Groups_GroupId",
|
|
||||||
table: "Discussions");
|
|
||||||
|
|
||||||
migrationBuilder.DropForeignKey(
|
|
||||||
name: "FK_Groups_Discussions_DiscussionId",
|
|
||||||
table: "Groups");
|
|
||||||
|
|
||||||
migrationBuilder.DropForeignKey(
|
|
||||||
name: "FK_UserDiscussions_Users_UserId",
|
|
||||||
table: "UserDiscussions");
|
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "GroupUsers");
|
|
||||||
|
|
||||||
migrationBuilder.DropIndex(
|
|
||||||
name: "IX_Groups_DiscussionId",
|
|
||||||
table: "Groups");
|
|
||||||
|
|
||||||
migrationBuilder.DropIndex(
|
|
||||||
name: "IX_Discussions_GroupId",
|
|
||||||
table: "Discussions");
|
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "GroupId",
|
|
||||||
table: "Discussions");
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<int>(
|
|
||||||
name: "KeyId",
|
|
||||||
table: "Groups",
|
|
||||||
type: "int",
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: 0);
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_Groups_DiscussionId",
|
|
||||||
table: "Groups",
|
|
||||||
column: "DiscussionId",
|
|
||||||
unique: true);
|
|
||||||
|
|
||||||
migrationBuilder.AddForeignKey(
|
|
||||||
name: "FK_Groups_Discussions_DiscussionId",
|
|
||||||
table: "Groups",
|
|
||||||
column: "DiscussionId",
|
|
||||||
principalTable: "Discussions",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
|
|
||||||
migrationBuilder.AddForeignKey(
|
|
||||||
name: "FK_UserDiscussions_Users_UserId",
|
|
||||||
table: "UserDiscussions",
|
|
||||||
column: "UserId",
|
|
||||||
principalTable: "Users",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+5
-2
@@ -12,8 +12,8 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
|||||||
namespace Knots.Migrations
|
namespace Knots.Migrations
|
||||||
{
|
{
|
||||||
[DbContext(typeof(KnotsDbContext))]
|
[DbContext(typeof(KnotsDbContext))]
|
||||||
[Migration("20260610204450_Discussion")]
|
[Migration("20260610224937_FixGroupDiscussion")]
|
||||||
partial class Discussion
|
partial class FixGroupDiscussion
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
@@ -124,6 +124,9 @@ namespace Knots.Migrations
|
|||||||
|
|
||||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
|
b.Property<int>("AuthorId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
b.Property<string>("Contenu")
|
b.Property<string>("Contenu")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasMaxLength(1000)
|
.HasMaxLength(1000)
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Knots.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class FixGroupDiscussion : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "AuthorId",
|
||||||
|
table: "Messages",
|
||||||
|
type: "int",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -121,6 +121,9 @@ namespace Knots.Migrations
|
|||||||
|
|
||||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
|
b.Property<int>("AuthorId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
b.Property<string>("Contenu")
|
b.Property<string>("Contenu")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasMaxLength(1000)
|
.HasMaxLength(1000)
|
||||||
|
|||||||
@@ -11,6 +11,9 @@ public class Discussion
|
|||||||
public int? GroupId { get; set; }
|
public int? GroupId { get; set; }
|
||||||
public Group? Group { get; set; }
|
public Group? Group { get; set; }
|
||||||
|
|
||||||
|
public int? KeyId { get; set; }
|
||||||
|
public Key? Key { get; set; }
|
||||||
|
|
||||||
public List<Message> Messages { get; set; } = [];
|
public List<Message> Messages { get; set; } = [];
|
||||||
public List<UserDiscussion> UserDiscussions { get; set; } = [];
|
public List<UserDiscussion> UserDiscussions { get; set; } = [];
|
||||||
}
|
}
|
||||||
@@ -6,5 +6,4 @@ public class Key
|
|||||||
{
|
{
|
||||||
[Key] public int Id { get; set; }
|
[Key] public int Id { get; set; }
|
||||||
[Required, MaxLength(50)] public string? EnKey { get; set; }
|
[Required, MaxLength(50)] public string? EnKey { get; set; }
|
||||||
public List<Message> Messages { get; set; } = [];
|
|
||||||
}
|
}
|
||||||
@@ -16,5 +16,4 @@ public class Message
|
|||||||
public Discussion Discussion { get; set; } = null!;
|
public Discussion Discussion { get; set; } = null!;
|
||||||
|
|
||||||
public Group? Group { get; set; }
|
public Group? Group { get; set; }
|
||||||
public Key? Key { get; set; }
|
|
||||||
}
|
}
|
||||||
+24
-3
@@ -2,6 +2,7 @@ using System.Text;
|
|||||||
using Knots;
|
using Knots;
|
||||||
using FastEndpoints;
|
using FastEndpoints;
|
||||||
using FastEndpoints.Swagger;
|
using FastEndpoints.Swagger;
|
||||||
|
using Knots.Hubs;
|
||||||
using Knots.Services;
|
using Knots.Services;
|
||||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||||
using Microsoft.AspNetCore.Http.Json;
|
using Microsoft.AspNetCore.Http.Json;
|
||||||
@@ -20,7 +21,8 @@ builder.Services.AddCors(options =>
|
|||||||
policyBuilder
|
policyBuilder
|
||||||
.WithOrigins("http://localhost:5250", "http://localhost:4200")
|
.WithOrigins("http://localhost:5250", "http://localhost:4200")
|
||||||
.WithMethods("GET", "POST", "PUT", "PATCH", "DELETE")
|
.WithMethods("GET", "POST", "PUT", "PATCH", "DELETE")
|
||||||
.AllowAnyHeader();
|
.AllowAnyHeader()
|
||||||
|
.AllowCredentials();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -46,15 +48,33 @@ builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
|
|||||||
ValidAudience = builder.Configuration["Jwt:Audience"],
|
ValidAudience = builder.Configuration["Jwt:Audience"],
|
||||||
IssuerSigningKey = new SymmetricSecurityKey(
|
IssuerSigningKey = new SymmetricSecurityKey(
|
||||||
Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!))
|
Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!))
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
options.Events = new JwtBearerEvents
|
||||||
|
{
|
||||||
|
OnMessageReceived = context =>
|
||||||
|
{
|
||||||
|
var accessToken = context.Request.Query["access_token"];
|
||||||
|
var path = context.HttpContext.Request.Path;
|
||||||
|
if (!string.IsNullOrEmpty(accessToken) &&
|
||||||
|
path.StartsWithSegments("/hubs"))
|
||||||
|
{
|
||||||
|
context.Token = accessToken;
|
||||||
|
}
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
});
|
});
|
||||||
builder.Services.AddAuthorization();
|
builder.Services.AddAuthorization();
|
||||||
|
|
||||||
|
builder.Services.AddSignalR();
|
||||||
|
|
||||||
|
|
||||||
builder.Services.AddAutoMapper(cfg => { }, typeof(Program).Assembly);
|
builder.Services.AddAutoMapper(cfg => { }, typeof(Program).Assembly);
|
||||||
|
|
||||||
|
builder.Services.AddSingleton<EncryptionService>();
|
||||||
|
|
||||||
// On construit l'application en lui donnant vie
|
// On construit l'application en lui donnant vie
|
||||||
WebApplication app = builder.Build();
|
WebApplication app = builder.Build();
|
||||||
|
|
||||||
@@ -71,5 +91,6 @@ app.UseAuthentication()
|
|||||||
}
|
}
|
||||||
).UseSwaggerGen();
|
).UseSwaggerGen();
|
||||||
|
|
||||||
|
app.MapHub<ChatHub>("hubs/chat");
|
||||||
|
|
||||||
app.Run();
|
app.Run();
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Knots.Services;
|
||||||
|
|
||||||
|
public class EncryptionService
|
||||||
|
{
|
||||||
|
private const int NonceSize = 12; // AesGcm.NonceByteSizes.MaxSize
|
||||||
|
private const int TagSize = 16; // AesGcm.TagByteSizes.MaxSize
|
||||||
|
|
||||||
|
// Génère une clé AES-256 (32 octets) encodée en Base64
|
||||||
|
public string GenerateKey()
|
||||||
|
=> Convert.ToBase64String(RandomNumberGenerator.GetBytes(32));
|
||||||
|
|
||||||
|
// Chiffre → renvoie Base64(nonce + tag + ciphertext)
|
||||||
|
public string Encrypt(string plainText, string base64Key)
|
||||||
|
{
|
||||||
|
byte[] key = Convert.FromBase64String(base64Key);
|
||||||
|
byte[] plain = Encoding.UTF8.GetBytes(plainText);
|
||||||
|
|
||||||
|
byte[] nonce = RandomNumberGenerator.GetBytes(NonceSize);
|
||||||
|
byte[] cipher = new byte[plain.Length];
|
||||||
|
byte[] tag = new byte[TagSize];
|
||||||
|
|
||||||
|
using AesGcm aes = new(key, TagSize);
|
||||||
|
aes.Encrypt(nonce, plain, cipher, tag);
|
||||||
|
|
||||||
|
byte[] result = new byte[NonceSize + TagSize + cipher.Length];
|
||||||
|
Buffer.BlockCopy(nonce, 0, result, 0, NonceSize);
|
||||||
|
Buffer.BlockCopy(tag, 0, result, NonceSize, TagSize);
|
||||||
|
Buffer.BlockCopy(cipher, 0, result, NonceSize + TagSize, cipher.Length);
|
||||||
|
|
||||||
|
return Convert.ToBase64String(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Déchiffre Base64(nonce + tag + ciphertext)
|
||||||
|
public string Decrypt(string base64Cipher, string base64Key)
|
||||||
|
{
|
||||||
|
byte[] key = Convert.FromBase64String(base64Key);
|
||||||
|
byte[] data = Convert.FromBase64String(base64Cipher);
|
||||||
|
|
||||||
|
byte[] nonce = new byte[NonceSize];
|
||||||
|
byte[] tag = new byte[TagSize];
|
||||||
|
byte[] cipher = new byte[data.Length - NonceSize - TagSize];
|
||||||
|
|
||||||
|
Buffer.BlockCopy(data, 0, nonce, 0, NonceSize);
|
||||||
|
Buffer.BlockCopy(data, NonceSize, tag, 0, TagSize);
|
||||||
|
Buffer.BlockCopy(data, NonceSize + TagSize, cipher, 0, cipher.Length);
|
||||||
|
|
||||||
|
byte[] plain = new byte[cipher.Length];
|
||||||
|
using AesGcm aes = new(key, TagSize);
|
||||||
|
aes.Decrypt(nonce, cipher, tag, plain);
|
||||||
|
|
||||||
|
return Encoding.UTF8.GetString(plain);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -11,7 +11,7 @@ public class CreateMessageDtoValidator : Validator<CreateMessageDto>
|
|||||||
RuleFor(x => x.Contenu)
|
RuleFor(x => x.Contenu)
|
||||||
.NotEmpty()
|
.NotEmpty()
|
||||||
.WithMessage("Le message ne peux pas être vide")
|
.WithMessage("Le message ne peux pas être vide")
|
||||||
.MaximumLength(1000)
|
.MaximumLength(2000)
|
||||||
.WithMessage("Le message ne doit pas faire plus de 1000 caractères");
|
.WithMessage("Le message ne doit pas faire plus de 1000 caractères");
|
||||||
|
|
||||||
RuleFor(x => x.Date)
|
RuleFor(x => x.Date)
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
"Microsoft.AspNetCore.Authentication": "2.3.11",
|
"Microsoft.AspNetCore.Authentication": "2.3.11",
|
||||||
"Microsoft.AspNetCore.Authentication.JwtBearer": "8.0.28",
|
"Microsoft.AspNetCore.Authentication.JwtBearer": "8.0.28",
|
||||||
"Microsoft.AspNetCore.OpenApi": "8.0.25",
|
"Microsoft.AspNetCore.OpenApi": "8.0.25",
|
||||||
|
"Microsoft.AspNetCore.SignalR": "1.2.11",
|
||||||
"Microsoft.EntityFrameworkCore": "8.0.25",
|
"Microsoft.EntityFrameworkCore": "8.0.25",
|
||||||
"Microsoft.EntityFrameworkCore.Design": "8.0.25",
|
"Microsoft.EntityFrameworkCore.Design": "8.0.25",
|
||||||
"Microsoft.EntityFrameworkCore.SqlServer": "8.0.25",
|
"Microsoft.EntityFrameworkCore.SqlServer": "8.0.25",
|
||||||
@@ -173,6 +174,24 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Authorization/2.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Logging.Abstractions": "10.0.0",
|
||||||
|
"Microsoft.Extensions.Options": "10.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Authorization.Policy/2.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Authentication.Abstractions": "2.3.9",
|
||||||
|
"Microsoft.AspNetCore.Authorization": "2.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Connections.Abstractions/2.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Http.Features": "2.3.0",
|
||||||
|
"System.IO.Pipelines": "8.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.Cryptography.Internal/2.3.9": {},
|
"Microsoft.AspNetCore.Cryptography.Internal/2.3.9": {},
|
||||||
"Microsoft.AspNetCore.DataProtection/2.3.10": {
|
"Microsoft.AspNetCore.DataProtection/2.3.10": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -216,6 +235,26 @@
|
|||||||
"System.Text.Encodings.Web": "8.0.0"
|
"System.Text.Encodings.Web": "8.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Http.Connections/1.2.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Authorization.Policy": "2.3.0",
|
||||||
|
"Microsoft.AspNetCore.Hosting.Abstractions": "2.3.9",
|
||||||
|
"Microsoft.AspNetCore.Http": "2.3.10",
|
||||||
|
"Microsoft.AspNetCore.Http.Connections.Common": "1.2.0",
|
||||||
|
"Microsoft.AspNetCore.Routing": "2.3.0",
|
||||||
|
"Microsoft.AspNetCore.WebSockets": "2.3.10",
|
||||||
|
"Newtonsoft.Json": "13.0.3",
|
||||||
|
"System.Net.WebSockets.WebSocketProtocol": "5.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Http.Connections.Common/1.2.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Connections.Abstractions": "2.3.0",
|
||||||
|
"Newtonsoft.Json": "13.0.3",
|
||||||
|
"System.Buffers": "4.6.0",
|
||||||
|
"System.IO.Pipelines": "8.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.Http.Extensions/2.3.10": {
|
"Microsoft.AspNetCore.Http.Extensions/2.3.10": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.AspNetCore.Http.Abstractions": "2.3.9",
|
"Microsoft.AspNetCore.Http.Abstractions": "2.3.9",
|
||||||
@@ -240,6 +279,62 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Routing/2.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Http.Extensions": "2.3.10",
|
||||||
|
"Microsoft.AspNetCore.Routing.Abstractions": "2.3.0",
|
||||||
|
"Microsoft.Extensions.Logging.Abstractions": "10.0.0",
|
||||||
|
"Microsoft.Extensions.ObjectPool": "8.0.11",
|
||||||
|
"Microsoft.Extensions.Options": "10.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Routing.Abstractions/2.3.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Http.Abstractions": "2.3.9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR/1.2.11": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Http.Connections": "1.2.0",
|
||||||
|
"Microsoft.AspNetCore.SignalR.Core": "1.2.0",
|
||||||
|
"Microsoft.AspNetCore.WebSockets": "2.3.10",
|
||||||
|
"System.IO.Pipelines": "8.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR.Common/1.2.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Connections.Abstractions": "2.3.0",
|
||||||
|
"Microsoft.Extensions.Options": "10.0.0",
|
||||||
|
"Newtonsoft.Json": "13.0.3",
|
||||||
|
"System.Buffers": "4.6.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR.Core/1.2.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Authorization": "2.3.0",
|
||||||
|
"Microsoft.AspNetCore.SignalR.Common": "1.2.0",
|
||||||
|
"Microsoft.AspNetCore.SignalR.Protocols.Json": "1.2.0",
|
||||||
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0",
|
||||||
|
"Microsoft.Extensions.Logging.Abstractions": "10.0.0",
|
||||||
|
"System.IO.Pipelines": "8.0.0",
|
||||||
|
"System.Reflection.Emit": "4.7.0",
|
||||||
|
"System.Threading.Channels": "8.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.SignalR.Common": "1.2.0",
|
||||||
|
"Newtonsoft.Json": "13.0.3",
|
||||||
|
"System.IO.Pipelines": "8.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.WebSockets/2.3.10": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Http.Extensions": "2.3.10",
|
||||||
|
"Microsoft.Extensions.Options": "10.0.0",
|
||||||
|
"System.Net.WebSockets.WebSocketProtocol": "5.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.WebUtilities/2.3.9": {
|
"Microsoft.AspNetCore.WebUtilities/2.3.9": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Net.Http.Headers": "2.3.9",
|
"Microsoft.Net.Http.Headers": "2.3.9",
|
||||||
@@ -424,8 +519,8 @@
|
|||||||
"Microsoft.Bcl.AsyncInterfaces": "6.0.0",
|
"Microsoft.Bcl.AsyncInterfaces": "6.0.0",
|
||||||
"Microsoft.CodeAnalysis.Common": "4.5.0",
|
"Microsoft.CodeAnalysis.Common": "4.5.0",
|
||||||
"System.Composition": "6.0.0",
|
"System.Composition": "6.0.0",
|
||||||
"System.IO.Pipelines": "6.0.3",
|
"System.IO.Pipelines": "8.0.0",
|
||||||
"System.Threading.Channels": "6.0.0"
|
"System.Threading.Channels": "8.0.0"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll": {
|
"lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll": {
|
||||||
@@ -1218,7 +1313,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"System.IO.Pipelines/6.0.3": {},
|
"System.IO.Pipelines/8.0.0": {},
|
||||||
"System.Memory/4.5.4": {},
|
"System.Memory/4.5.4": {},
|
||||||
"System.Memory.Data/1.0.2": {
|
"System.Memory.Data/1.0.2": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -1232,7 +1327,16 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"System.Net.WebSockets.WebSocketProtocol/5.1.0": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll": {
|
||||||
|
"assemblyVersion": "5.1.0.0",
|
||||||
|
"fileVersion": "5.100.24.56208"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"System.Numerics.Vectors/4.5.0": {},
|
"System.Numerics.Vectors/4.5.0": {},
|
||||||
|
"System.Reflection.Emit/4.7.0": {},
|
||||||
"System.Reflection.Metadata/6.0.1": {
|
"System.Reflection.Metadata/6.0.1": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"System.Collections.Immutable": "6.0.0"
|
"System.Collections.Immutable": "6.0.0"
|
||||||
@@ -1327,7 +1431,7 @@
|
|||||||
},
|
},
|
||||||
"System.Text.Encodings.Web/8.0.0": {},
|
"System.Text.Encodings.Web/8.0.0": {},
|
||||||
"System.Text.Json/8.0.5": {},
|
"System.Text.Json/8.0.5": {},
|
||||||
"System.Threading.Channels/6.0.0": {},
|
"System.Threading.Channels/8.0.0": {},
|
||||||
"System.Threading.Tasks.Extensions/4.5.4": {},
|
"System.Threading.Tasks.Extensions/4.5.4": {},
|
||||||
"System.Windows.Extensions/6.0.0": {
|
"System.Windows.Extensions/6.0.0": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -1462,6 +1566,27 @@
|
|||||||
"path": "microsoft.aspnetcore.authentication.jwtbearer/8.0.28",
|
"path": "microsoft.aspnetcore.authentication.jwtbearer/8.0.28",
|
||||||
"hashPath": "microsoft.aspnetcore.authentication.jwtbearer.8.0.28.nupkg.sha512"
|
"hashPath": "microsoft.aspnetcore.authentication.jwtbearer.8.0.28.nupkg.sha512"
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Authorization/2.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-2/aBgLqBXva/+w8pzRNY8ET43Gi+dr1gv/7ySfbsh23lTK6IAgID5MGUEa1hreNIF+0XpW4tX7QwVe70+YvaPg==",
|
||||||
|
"path": "microsoft.aspnetcore.authorization/2.3.0",
|
||||||
|
"hashPath": "microsoft.aspnetcore.authorization.2.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Authorization.Policy/2.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-vn31uQ1dA1MIV2WNNDOOOm88V5KgR9esfi0LyQ6eVaGq2h0Yw+R29f5A6qUNJt+RccS3qkYayylAy9tP1wV+7Q==",
|
||||||
|
"path": "microsoft.aspnetcore.authorization.policy/2.3.0",
|
||||||
|
"hashPath": "microsoft.aspnetcore.authorization.policy.2.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Connections.Abstractions/2.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-ULFSa+/L+WiAHVlIFHyg0OmHChU9Hx+K+xnt0hbIU5XmT1EGy0pNDx23QAzDtAy9jxQrTG6MX0MdvMeU4D4c7w==",
|
||||||
|
"path": "microsoft.aspnetcore.connections.abstractions/2.3.0",
|
||||||
|
"hashPath": "microsoft.aspnetcore.connections.abstractions.2.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.Cryptography.Internal/2.3.9": {
|
"Microsoft.AspNetCore.Cryptography.Internal/2.3.9": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
@@ -1511,6 +1636,20 @@
|
|||||||
"path": "microsoft.aspnetcore.http.abstractions/2.3.9",
|
"path": "microsoft.aspnetcore.http.abstractions/2.3.9",
|
||||||
"hashPath": "microsoft.aspnetcore.http.abstractions.2.3.9.nupkg.sha512"
|
"hashPath": "microsoft.aspnetcore.http.abstractions.2.3.9.nupkg.sha512"
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Http.Connections/1.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-VYMCOLvdT0y3O9lk4jUuIs8+re7u5+i+ka6ZZ6fIzSJ94c/JeMnAOOg39EB2i4crPXvLoiSdzKWlNPJgTbCZ2g==",
|
||||||
|
"path": "microsoft.aspnetcore.http.connections/1.2.0",
|
||||||
|
"hashPath": "microsoft.aspnetcore.http.connections.1.2.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Http.Connections.Common/1.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-yUA7eg6kv7Wbz5TCW4PqS5/kYE5VxUIEDvoxjw4p1RwS2LGm84F9fBtM0mD6wrRfiv1NUyJ7WBjn3PWd/ccO+w==",
|
||||||
|
"path": "microsoft.aspnetcore.http.connections.common/1.2.0",
|
||||||
|
"hashPath": "microsoft.aspnetcore.http.connections.common.1.2.0.nupkg.sha512"
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.Http.Extensions/2.3.10": {
|
"Microsoft.AspNetCore.Http.Extensions/2.3.10": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
@@ -1532,6 +1671,55 @@
|
|||||||
"path": "microsoft.aspnetcore.openapi/8.0.25",
|
"path": "microsoft.aspnetcore.openapi/8.0.25",
|
||||||
"hashPath": "microsoft.aspnetcore.openapi.8.0.25.nupkg.sha512"
|
"hashPath": "microsoft.aspnetcore.openapi.8.0.25.nupkg.sha512"
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Routing/2.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-no5/VC0CAQuT4PK4rp2K5fqwuSfzr2mdB6m1XNfWVhHnwzpRQzKAu9flChiT/JTLKwVI0Vq2MSmSW2OFMDCNXg==",
|
||||||
|
"path": "microsoft.aspnetcore.routing/2.3.0",
|
||||||
|
"hashPath": "microsoft.aspnetcore.routing.2.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Routing.Abstractions/2.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-ZkFpUrSmp6TocxZLBEX3IBv5dPMbQuMs6L/BPl0WRfn32UVOtNYJQ0bLdh3cL9LMV0rmTW/5R0w8CBYxr0AOUw==",
|
||||||
|
"path": "microsoft.aspnetcore.routing.abstractions/2.3.0",
|
||||||
|
"hashPath": "microsoft.aspnetcore.routing.abstractions.2.3.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR/1.2.11": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-fq/EW3G4S+1Xo3aX042Geb/mm+cqStB7cw7FmXLhgpXbsO6dXbU/78URRqpiMozAHjpqSK9BVRkhYhnCg5fgew==",
|
||||||
|
"path": "microsoft.aspnetcore.signalr/1.2.11",
|
||||||
|
"hashPath": "microsoft.aspnetcore.signalr.1.2.11.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR.Common/1.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-FZeXIaoWqe145ZPdfiptwkw/sP1BX1UD0706GNBwwoaFiKsNbLEl/Trhj2+idlp3qbX1BEwkQesKNxkopVY5Xg==",
|
||||||
|
"path": "microsoft.aspnetcore.signalr.common/1.2.0",
|
||||||
|
"hashPath": "microsoft.aspnetcore.signalr.common.1.2.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR.Core/1.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-eZTuMkSDw1uwjhLhJbMxgW2Cuyxfn0Kfqm8OBmqvuzE9Qc/VVzh8dGrAp2F9Pk7XKTDHmlhc5RTLcPPAZ5PSZw==",
|
||||||
|
"path": "microsoft.aspnetcore.signalr.core/1.2.0",
|
||||||
|
"hashPath": "microsoft.aspnetcore.signalr.core.1.2.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-hNvZ7kQxp5Udqd/IFWViU35bUJvi4xnNzjkF28HRvrdrS7JNsIASTvMqArP6HLQUc3j6nlUOeShNhVmgI1wzHg==",
|
||||||
|
"path": "microsoft.aspnetcore.signalr.protocols.json/1.2.0",
|
||||||
|
"hashPath": "microsoft.aspnetcore.signalr.protocols.json.1.2.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.WebSockets/2.3.10": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-m0wkzmyKxi0J42ldZ6P+YCnEO3Djvoyw4vDoROwPM8J/1/H19/qoYNgYmQkrwOD5OAtc6GFcnifPUOE6XqeQZA==",
|
||||||
|
"path": "microsoft.aspnetcore.websockets/2.3.10",
|
||||||
|
"hashPath": "microsoft.aspnetcore.websockets.2.3.10.nupkg.sha512"
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.WebUtilities/2.3.9": {
|
"Microsoft.AspNetCore.WebUtilities/2.3.9": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
@@ -2071,12 +2259,12 @@
|
|||||||
"path": "system.identitymodel.tokens.jwt/7.1.2",
|
"path": "system.identitymodel.tokens.jwt/7.1.2",
|
||||||
"hashPath": "system.identitymodel.tokens.jwt.7.1.2.nupkg.sha512"
|
"hashPath": "system.identitymodel.tokens.jwt.7.1.2.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"System.IO.Pipelines/6.0.3": {
|
"System.IO.Pipelines/8.0.0": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-ryTgF+iFkpGZY1vRQhfCzX0xTdlV3pyaTTqRu2ETbEv+HlV7O6y7hyQURnghNIXvctl5DuZ//Dpks6HdL/Txgw==",
|
"sha512": "sha512-FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==",
|
||||||
"path": "system.io.pipelines/6.0.3",
|
"path": "system.io.pipelines/8.0.0",
|
||||||
"hashPath": "system.io.pipelines.6.0.3.nupkg.sha512"
|
"hashPath": "system.io.pipelines.8.0.0.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"System.Memory/4.5.4": {
|
"System.Memory/4.5.4": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
@@ -2092,6 +2280,13 @@
|
|||||||
"path": "system.memory.data/1.0.2",
|
"path": "system.memory.data/1.0.2",
|
||||||
"hashPath": "system.memory.data.1.0.2.nupkg.sha512"
|
"hashPath": "system.memory.data.1.0.2.nupkg.sha512"
|
||||||
},
|
},
|
||||||
|
"System.Net.WebSockets.WebSocketProtocol/5.1.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-cVTT/Zw4JuUeX8H0tdWii0OMHsA5MY2PaFYOq/Hstw0jk479jZ+f8baCicWFNzJlCPWAe0uoNCELoB5eNmaMqA==",
|
||||||
|
"path": "system.net.websockets.websocketprotocol/5.1.0",
|
||||||
|
"hashPath": "system.net.websockets.websocketprotocol.5.1.0.nupkg.sha512"
|
||||||
|
},
|
||||||
"System.Numerics.Vectors/4.5.0": {
|
"System.Numerics.Vectors/4.5.0": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
@@ -2099,6 +2294,13 @@
|
|||||||
"path": "system.numerics.vectors/4.5.0",
|
"path": "system.numerics.vectors/4.5.0",
|
||||||
"hashPath": "system.numerics.vectors.4.5.0.nupkg.sha512"
|
"hashPath": "system.numerics.vectors.4.5.0.nupkg.sha512"
|
||||||
},
|
},
|
||||||
|
"System.Reflection.Emit/4.7.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==",
|
||||||
|
"path": "system.reflection.emit/4.7.0",
|
||||||
|
"hashPath": "system.reflection.emit.4.7.0.nupkg.sha512"
|
||||||
|
},
|
||||||
"System.Reflection.Metadata/6.0.1": {
|
"System.Reflection.Metadata/6.0.1": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
@@ -2190,12 +2392,12 @@
|
|||||||
"path": "system.text.json/8.0.5",
|
"path": "system.text.json/8.0.5",
|
||||||
"hashPath": "system.text.json.8.0.5.nupkg.sha512"
|
"hashPath": "system.text.json.8.0.5.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"System.Threading.Channels/6.0.0": {
|
"System.Threading.Channels/8.0.0": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-TY8/9+tI0mNaUMgntOxxaq2ndTkdXqLSxvPmas7XEqOlv9lQtB7wLjYGd756lOaO7Dvb5r/WXhluM+0Xe87v5Q==",
|
"sha512": "sha512-CMaFr7v+57RW7uZfZkPExsPB6ljwzhjACWW1gfU35Y56rk72B/Wu+sTqxVmGSk4SFUlPc3cjeKND0zktziyjBA==",
|
||||||
"path": "system.threading.channels/6.0.0",
|
"path": "system.threading.channels/8.0.0",
|
||||||
"hashPath": "system.threading.channels.6.0.0.nupkg.sha512"
|
"hashPath": "system.threading.channels.8.0.0.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"System.Threading.Tasks.Extensions/4.5.4": {
|
"System.Threading.Tasks.Extensions/4.5.4": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Knots")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Knots")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+af1b14b0d2a889e3bdfbe2f08dac0cf0ef4922f5")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+61f3d2889c45fcfb95557be37845198db85b3972")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("Knots")]
|
[assembly: System.Reflection.AssemblyProductAttribute("Knots")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("Knots")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("Knots")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
70071d47fa6a38e032a5e27cb02ec3d498f03b9e5a579b09ce080cdcbf79c5ca
|
589797db71c3ee2db1d8c966ae2f187808629461cd5e264f494b12d939f74905
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
053df2e2d5f4b0376cb8e5b4fed7175ebe09f3e8d3a4d8035c42b5a7de1f17a9
|
8c008e0540a310c319081e4a6b8a7ce2f5c9b271d5260b8b45b33f49b9ad5228
|
||||||
|
|||||||
@@ -518,3 +518,5 @@ C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\refint\Knots.dll
|
|||||||
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.pdb
|
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.pdb
|
||||||
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.genruntimeconfig.cache
|
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.genruntimeconfig.cache
|
||||||
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\ref\Knots.dll
|
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\ref\Knots.dll
|
||||||
|
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Net.WebSockets.WebSocketProtocol.dll
|
||||||
|
C:\Users\Carte\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Net.WebSockets.WebSocketProtocol.dll
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -77,6 +77,10 @@
|
|||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[8.0.25, )"
|
"version": "[8.0.25, )"
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[1.2.11, )"
|
||||||
|
},
|
||||||
"Microsoft.EntityFrameworkCore": {
|
"Microsoft.EntityFrameworkCore": {
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[8.0.25, )"
|
"version": "[8.0.25, )"
|
||||||
|
|||||||
+524
-26
@@ -241,6 +241,57 @@
|
|||||||
"Microsoft.AspNetCore.App"
|
"Microsoft.AspNetCore.App"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Authorization/2.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Logging.Abstractions": "8.0.2",
|
||||||
|
"Microsoft.Extensions.Options": "8.0.2"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Authorization.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Authorization.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Authorization.Policy/2.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Authentication.Abstractions": "2.3.0",
|
||||||
|
"Microsoft.AspNetCore.Authorization": "2.3.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Authorization.Policy.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Authorization.Policy.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Connections.Abstractions/2.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Http.Features": "2.3.0",
|
||||||
|
"System.IO.Pipelines": "8.0.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.Cryptography.Internal/2.3.9": {
|
"Microsoft.AspNetCore.Cryptography.Internal/2.3.9": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"compile": {
|
"compile": {
|
||||||
@@ -363,6 +414,48 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Http.Connections/1.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Authorization.Policy": "2.3.0",
|
||||||
|
"Microsoft.AspNetCore.Hosting.Abstractions": "2.3.0",
|
||||||
|
"Microsoft.AspNetCore.Http": "2.3.0",
|
||||||
|
"Microsoft.AspNetCore.Http.Connections.Common": "1.2.0",
|
||||||
|
"Microsoft.AspNetCore.Routing": "2.3.0",
|
||||||
|
"Microsoft.AspNetCore.WebSockets": "2.3.0",
|
||||||
|
"Newtonsoft.Json": "11.0.2",
|
||||||
|
"System.Net.WebSockets.WebSocketProtocol": "5.1.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Http.Connections.Common/1.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Connections.Abstractions": "2.3.0",
|
||||||
|
"Newtonsoft.Json": "11.0.2",
|
||||||
|
"System.Buffers": "4.6.0",
|
||||||
|
"System.IO.Pipelines": "8.0.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.Http.Extensions/2.3.10": {
|
"Microsoft.AspNetCore.Http.Extensions/2.3.10": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -417,6 +510,139 @@
|
|||||||
"Microsoft.AspNetCore.App"
|
"Microsoft.AspNetCore.App"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Routing/2.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Http.Extensions": "2.3.0",
|
||||||
|
"Microsoft.AspNetCore.Routing.Abstractions": "2.3.0",
|
||||||
|
"Microsoft.Extensions.Logging.Abstractions": "8.0.2",
|
||||||
|
"Microsoft.Extensions.ObjectPool": "8.0.11",
|
||||||
|
"Microsoft.Extensions.Options": "8.0.2"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Routing.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Routing.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Routing.Abstractions/2.3.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Http.Abstractions": "2.3.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR/1.2.11": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Http.Connections": "1.2.0",
|
||||||
|
"Microsoft.AspNetCore.SignalR.Core": "1.2.0",
|
||||||
|
"Microsoft.AspNetCore.WebSockets": "2.3.10",
|
||||||
|
"System.IO.Pipelines": "8.0.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR.Common/1.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Connections.Abstractions": "2.3.0",
|
||||||
|
"Microsoft.Extensions.Options": "8.0.2",
|
||||||
|
"Newtonsoft.Json": "11.0.2",
|
||||||
|
"System.Buffers": "4.6.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR.Core/1.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Authorization": "2.3.0",
|
||||||
|
"Microsoft.AspNetCore.SignalR.Common": "1.2.0",
|
||||||
|
"Microsoft.AspNetCore.SignalR.Protocols.Json": "1.2.0",
|
||||||
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
|
||||||
|
"Microsoft.Extensions.Logging.Abstractions": "8.0.2",
|
||||||
|
"System.IO.Pipelines": "8.0.0",
|
||||||
|
"System.Reflection.Emit": "4.7.0",
|
||||||
|
"System.Threading.Channels": "8.0.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Core.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Core.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.SignalR.Common": "1.2.0",
|
||||||
|
"Newtonsoft.Json": "11.0.2",
|
||||||
|
"System.IO.Pipelines": "8.0.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.WebSockets/2.3.10": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Http.Extensions": "2.3.9",
|
||||||
|
"Microsoft.Extensions.Options": "8.0.2",
|
||||||
|
"System.Net.WebSockets.WebSocketProtocol": "5.1.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.WebSockets.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.WebSockets.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.WebUtilities/2.3.9": {
|
"Microsoft.AspNetCore.WebUtilities/2.3.9": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -1918,20 +2144,20 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"System.IO.Pipelines/6.0.3": {
|
"System.IO.Pipelines/8.0.0": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"compile": {
|
"compile": {
|
||||||
"lib/net6.0/_._": {
|
"lib/net8.0/System.IO.Pipelines.dll": {
|
||||||
"related": ".xml"
|
"related": ".xml"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net6.0/System.IO.Pipelines.dll": {
|
"lib/net8.0/System.IO.Pipelines.dll": {
|
||||||
"related": ".xml"
|
"related": ".xml"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"build": {
|
"build": {
|
||||||
"buildTransitive/netcoreapp3.1/_._": {}
|
"buildTransitive/net6.0/_._": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"System.Memory/4.5.4": {
|
"System.Memory/4.5.4": {
|
||||||
@@ -1960,6 +2186,22 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"System.Net.WebSockets.WebSocketProtocol/5.1.0": {
|
||||||
|
"type": "package",
|
||||||
|
"compile": {
|
||||||
|
"lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"build": {
|
||||||
|
"buildTransitive/net6.0/_._": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"System.Numerics.Vectors/4.5.0": {
|
"System.Numerics.Vectors/4.5.0": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"compile": {
|
"compile": {
|
||||||
@@ -1969,6 +2211,15 @@
|
|||||||
"lib/netcoreapp2.0/_._": {}
|
"lib/netcoreapp2.0/_._": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"System.Reflection.Emit/4.7.0": {
|
||||||
|
"type": "package",
|
||||||
|
"compile": {
|
||||||
|
"ref/netcoreapp2.0/_._": {}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netcoreapp2.0/_._": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"System.Reflection.Metadata/6.0.1": {
|
"System.Reflection.Metadata/6.0.1": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -2242,20 +2493,20 @@
|
|||||||
"buildTransitive/net6.0/System.Text.Json.targets": {}
|
"buildTransitive/net6.0/System.Text.Json.targets": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"System.Threading.Channels/6.0.0": {
|
"System.Threading.Channels/8.0.0": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"compile": {
|
"compile": {
|
||||||
"lib/net6.0/_._": {
|
"lib/net8.0/System.Threading.Channels.dll": {
|
||||||
"related": ".xml"
|
"related": ".xml"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net6.0/System.Threading.Channels.dll": {
|
"lib/net8.0/System.Threading.Channels.dll": {
|
||||||
"related": ".xml"
|
"related": ".xml"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"build": {
|
"build": {
|
||||||
"buildTransitive/netcoreapp3.1/_._": {}
|
"buildTransitive/net6.0/_._": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"System.Threading.Tasks.Extensions/4.5.4": {
|
"System.Threading.Tasks.Extensions/4.5.4": {
|
||||||
@@ -2558,6 +2809,45 @@
|
|||||||
"microsoft.aspnetcore.authentication.jwtbearer.nuspec"
|
"microsoft.aspnetcore.authentication.jwtbearer.nuspec"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Authorization/2.3.0": {
|
||||||
|
"sha512": "2/aBgLqBXva/+w8pzRNY8ET43Gi+dr1gv/7ySfbsh23lTK6IAgID5MGUEa1hreNIF+0XpW4tX7QwVe70+YvaPg==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.aspnetcore.authorization/2.3.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Authorization.dll",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Authorization.xml",
|
||||||
|
"microsoft.aspnetcore.authorization.2.3.0.nupkg.sha512",
|
||||||
|
"microsoft.aspnetcore.authorization.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Authorization.Policy/2.3.0": {
|
||||||
|
"sha512": "vn31uQ1dA1MIV2WNNDOOOm88V5KgR9esfi0LyQ6eVaGq2h0Yw+R29f5A6qUNJt+RccS3qkYayylAy9tP1wV+7Q==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.aspnetcore.authorization.policy/2.3.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Authorization.Policy.dll",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Authorization.Policy.xml",
|
||||||
|
"microsoft.aspnetcore.authorization.policy.2.3.0.nupkg.sha512",
|
||||||
|
"microsoft.aspnetcore.authorization.policy.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Connections.Abstractions/2.3.0": {
|
||||||
|
"sha512": "ULFSa+/L+WiAHVlIFHyg0OmHChU9Hx+K+xnt0hbIU5XmT1EGy0pNDx23QAzDtAy9jxQrTG6MX0MdvMeU4D4c7w==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.aspnetcore.connections.abstractions/2.3.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.dll",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.xml",
|
||||||
|
"microsoft.aspnetcore.connections.abstractions.2.3.0.nupkg.sha512",
|
||||||
|
"microsoft.aspnetcore.connections.abstractions.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.Cryptography.Internal/2.3.9": {
|
"Microsoft.AspNetCore.Cryptography.Internal/2.3.9": {
|
||||||
"sha512": "sLHQ3ggo5kPTjR9xUXMeS4+F1uEgdC0ojyNs15RlVVoG3UysV/7n2PutH1r2MJl24QuxZeJqIZVeZB4cptijYw==",
|
"sha512": "sLHQ3ggo5kPTjR9xUXMeS4+F1uEgdC0ojyNs15RlVVoG3UysV/7n2PutH1r2MJl24QuxZeJqIZVeZB4cptijYw==",
|
||||||
"type": "package",
|
"type": "package",
|
||||||
@@ -2649,6 +2939,32 @@
|
|||||||
"microsoft.aspnetcore.http.abstractions.nuspec"
|
"microsoft.aspnetcore.http.abstractions.nuspec"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Http.Connections/1.2.0": {
|
||||||
|
"sha512": "VYMCOLvdT0y3O9lk4jUuIs8+re7u5+i+ka6ZZ6fIzSJ94c/JeMnAOOg39EB2i4crPXvLoiSdzKWlNPJgTbCZ2g==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.aspnetcore.http.connections/1.2.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.dll",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.xml",
|
||||||
|
"microsoft.aspnetcore.http.connections.1.2.0.nupkg.sha512",
|
||||||
|
"microsoft.aspnetcore.http.connections.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Http.Connections.Common/1.2.0": {
|
||||||
|
"sha512": "yUA7eg6kv7Wbz5TCW4PqS5/kYE5VxUIEDvoxjw4p1RwS2LGm84F9fBtM0mD6wrRfiv1NUyJ7WBjn3PWd/ccO+w==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.aspnetcore.http.connections.common/1.2.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.xml",
|
||||||
|
"microsoft.aspnetcore.http.connections.common.1.2.0.nupkg.sha512",
|
||||||
|
"microsoft.aspnetcore.http.connections.common.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.Http.Extensions/2.3.10": {
|
"Microsoft.AspNetCore.Http.Extensions/2.3.10": {
|
||||||
"sha512": "V0MKSF9zklY3GbWTyqMiTiu95uj5O1T9N8RaLNPAUREgd2GalnYFIRApSJZ+dhhZs/eSK1zsJu7iVXWUWMq67A==",
|
"sha512": "V0MKSF9zklY3GbWTyqMiTiu95uj5O1T9N8RaLNPAUREgd2GalnYFIRApSJZ+dhhZs/eSK1zsJu7iVXWUWMq67A==",
|
||||||
"type": "package",
|
"type": "package",
|
||||||
@@ -2690,6 +3006,97 @@
|
|||||||
"microsoft.aspnetcore.openapi.nuspec"
|
"microsoft.aspnetcore.openapi.nuspec"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Routing/2.3.0": {
|
||||||
|
"sha512": "no5/VC0CAQuT4PK4rp2K5fqwuSfzr2mdB6m1XNfWVhHnwzpRQzKAu9flChiT/JTLKwVI0Vq2MSmSW2OFMDCNXg==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.aspnetcore.routing/2.3.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Routing.dll",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Routing.xml",
|
||||||
|
"microsoft.aspnetcore.routing.2.3.0.nupkg.sha512",
|
||||||
|
"microsoft.aspnetcore.routing.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Routing.Abstractions/2.3.0": {
|
||||||
|
"sha512": "ZkFpUrSmp6TocxZLBEX3IBv5dPMbQuMs6L/BPl0WRfn32UVOtNYJQ0bLdh3cL9LMV0rmTW/5R0w8CBYxr0AOUw==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.aspnetcore.routing.abstractions/2.3.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.dll",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.xml",
|
||||||
|
"microsoft.aspnetcore.routing.abstractions.2.3.0.nupkg.sha512",
|
||||||
|
"microsoft.aspnetcore.routing.abstractions.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR/1.2.11": {
|
||||||
|
"sha512": "fq/EW3G4S+1Xo3aX042Geb/mm+cqStB7cw7FmXLhgpXbsO6dXbU/78URRqpiMozAHjpqSK9BVRkhYhnCg5fgew==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.aspnetcore.signalr/1.2.11",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.dll",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.xml",
|
||||||
|
"microsoft.aspnetcore.signalr.1.2.11.nupkg.sha512",
|
||||||
|
"microsoft.aspnetcore.signalr.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR.Common/1.2.0": {
|
||||||
|
"sha512": "FZeXIaoWqe145ZPdfiptwkw/sP1BX1UD0706GNBwwoaFiKsNbLEl/Trhj2+idlp3qbX1BEwkQesKNxkopVY5Xg==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.aspnetcore.signalr.common/1.2.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.xml",
|
||||||
|
"microsoft.aspnetcore.signalr.common.1.2.0.nupkg.sha512",
|
||||||
|
"microsoft.aspnetcore.signalr.common.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR.Core/1.2.0": {
|
||||||
|
"sha512": "eZTuMkSDw1uwjhLhJbMxgW2Cuyxfn0Kfqm8OBmqvuzE9Qc/VVzh8dGrAp2F9Pk7XKTDHmlhc5RTLcPPAZ5PSZw==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.aspnetcore.signalr.core/1.2.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Core.dll",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Core.xml",
|
||||||
|
"microsoft.aspnetcore.signalr.core.1.2.0.nupkg.sha512",
|
||||||
|
"microsoft.aspnetcore.signalr.core.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": {
|
||||||
|
"sha512": "hNvZ7kQxp5Udqd/IFWViU35bUJvi4xnNzjkF28HRvrdrS7JNsIASTvMqArP6HLQUc3j6nlUOeShNhVmgI1wzHg==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.aspnetcore.signalr.protocols.json/1.2.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.xml",
|
||||||
|
"microsoft.aspnetcore.signalr.protocols.json.1.2.0.nupkg.sha512",
|
||||||
|
"microsoft.aspnetcore.signalr.protocols.json.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.WebSockets/2.3.10": {
|
||||||
|
"sha512": "m0wkzmyKxi0J42ldZ6P+YCnEO3Djvoyw4vDoROwPM8J/1/H19/qoYNgYmQkrwOD5OAtc6GFcnifPUOE6XqeQZA==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.aspnetcore.websockets/2.3.10",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.WebSockets.dll",
|
||||||
|
"lib/netstandard2.0/Microsoft.AspNetCore.WebSockets.xml",
|
||||||
|
"microsoft.aspnetcore.websockets.2.3.10.nupkg.sha512",
|
||||||
|
"microsoft.aspnetcore.websockets.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.WebUtilities/2.3.9": {
|
"Microsoft.AspNetCore.WebUtilities/2.3.9": {
|
||||||
"sha512": "UKPvdhi+SOMdcw0Wr90Ft62yc1+heR/B70Vs8K0VcO8v6yz53YR7/ytSsNXd4IRmRWEc4ImCBomPbBCngtScTg==",
|
"sha512": "UKPvdhi+SOMdcw0Wr90Ft62yc1+heR/B70Vs8K0VcO8v6yz53YR7/ytSsNXd4IRmRWEc4ImCBomPbBCngtScTg==",
|
||||||
"type": "package",
|
"type": "package",
|
||||||
@@ -4859,27 +5266,31 @@
|
|||||||
"system.identitymodel.tokens.jwt.nuspec"
|
"system.identitymodel.tokens.jwt.nuspec"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"System.IO.Pipelines/6.0.3": {
|
"System.IO.Pipelines/8.0.0": {
|
||||||
"sha512": "ryTgF+iFkpGZY1vRQhfCzX0xTdlV3pyaTTqRu2ETbEv+HlV7O6y7hyQURnghNIXvctl5DuZ//Dpks6HdL/Txgw==",
|
"sha512": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==",
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"path": "system.io.pipelines/6.0.3",
|
"path": "system.io.pipelines/8.0.0",
|
||||||
"files": [
|
"files": [
|
||||||
".nupkg.metadata",
|
".nupkg.metadata",
|
||||||
".signature.p7s",
|
".signature.p7s",
|
||||||
"Icon.png",
|
"Icon.png",
|
||||||
"LICENSE.TXT",
|
"LICENSE.TXT",
|
||||||
"THIRD-PARTY-NOTICES.TXT",
|
"THIRD-PARTY-NOTICES.TXT",
|
||||||
|
"buildTransitive/net461/System.IO.Pipelines.targets",
|
||||||
|
"buildTransitive/net462/_._",
|
||||||
|
"buildTransitive/net6.0/_._",
|
||||||
"buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets",
|
"buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets",
|
||||||
"buildTransitive/netcoreapp3.1/_._",
|
"lib/net462/System.IO.Pipelines.dll",
|
||||||
"lib/net461/System.IO.Pipelines.dll",
|
"lib/net462/System.IO.Pipelines.xml",
|
||||||
"lib/net461/System.IO.Pipelines.xml",
|
|
||||||
"lib/net6.0/System.IO.Pipelines.dll",
|
"lib/net6.0/System.IO.Pipelines.dll",
|
||||||
"lib/net6.0/System.IO.Pipelines.xml",
|
"lib/net6.0/System.IO.Pipelines.xml",
|
||||||
"lib/netcoreapp3.1/System.IO.Pipelines.dll",
|
"lib/net7.0/System.IO.Pipelines.dll",
|
||||||
"lib/netcoreapp3.1/System.IO.Pipelines.xml",
|
"lib/net7.0/System.IO.Pipelines.xml",
|
||||||
|
"lib/net8.0/System.IO.Pipelines.dll",
|
||||||
|
"lib/net8.0/System.IO.Pipelines.xml",
|
||||||
"lib/netstandard2.0/System.IO.Pipelines.dll",
|
"lib/netstandard2.0/System.IO.Pipelines.dll",
|
||||||
"lib/netstandard2.0/System.IO.Pipelines.xml",
|
"lib/netstandard2.0/System.IO.Pipelines.xml",
|
||||||
"system.io.pipelines.6.0.3.nupkg.sha512",
|
"system.io.pipelines.8.0.0.nupkg.sha512",
|
||||||
"system.io.pipelines.nuspec",
|
"system.io.pipelines.nuspec",
|
||||||
"useSharedDesignerContext.txt"
|
"useSharedDesignerContext.txt"
|
||||||
]
|
]
|
||||||
@@ -4925,6 +5336,29 @@
|
|||||||
"system.memory.data.nuspec"
|
"system.memory.data.nuspec"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"System.Net.WebSockets.WebSocketProtocol/5.1.0": {
|
||||||
|
"sha512": "cVTT/Zw4JuUeX8H0tdWii0OMHsA5MY2PaFYOq/Hstw0jk479jZ+f8baCicWFNzJlCPWAe0uoNCELoB5eNmaMqA==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "system.net.websockets.websocketprotocol/5.1.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"Icon.png",
|
||||||
|
"PACKAGE.md",
|
||||||
|
"buildTransitive/net461/System.Net.WebSockets.WebSocketProtocol.targets",
|
||||||
|
"buildTransitive/net462/_._",
|
||||||
|
"buildTransitive/net6.0/_._",
|
||||||
|
"buildTransitive/netcoreapp2.0/System.Net.WebSockets.WebSocketProtocol.targets",
|
||||||
|
"lib/net462/System.Net.WebSockets.WebSocketProtocol.dll",
|
||||||
|
"lib/net462/System.Net.WebSockets.WebSocketProtocol.xml",
|
||||||
|
"lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll",
|
||||||
|
"lib/net6.0/System.Net.WebSockets.WebSocketProtocol.xml",
|
||||||
|
"lib/netstandard2.0/System.Net.WebSockets.WebSocketProtocol.dll",
|
||||||
|
"lib/netstandard2.0/System.Net.WebSockets.WebSocketProtocol.xml",
|
||||||
|
"system.net.websockets.websocketprotocol.5.1.0.nupkg.sha512",
|
||||||
|
"system.net.websockets.websocketprotocol.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
"System.Numerics.Vectors/4.5.0": {
|
"System.Numerics.Vectors/4.5.0": {
|
||||||
"sha512": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==",
|
"sha512": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==",
|
||||||
"type": "package",
|
"type": "package",
|
||||||
@@ -4972,6 +5406,60 @@
|
|||||||
"version.txt"
|
"version.txt"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"System.Reflection.Emit/4.7.0": {
|
||||||
|
"sha512": "VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "system.reflection.emit/4.7.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"LICENSE.TXT",
|
||||||
|
"THIRD-PARTY-NOTICES.TXT",
|
||||||
|
"lib/MonoAndroid10/_._",
|
||||||
|
"lib/MonoTouch10/_._",
|
||||||
|
"lib/net45/_._",
|
||||||
|
"lib/netcore50/System.Reflection.Emit.dll",
|
||||||
|
"lib/netcoreapp2.0/_._",
|
||||||
|
"lib/netstandard1.1/System.Reflection.Emit.dll",
|
||||||
|
"lib/netstandard1.1/System.Reflection.Emit.xml",
|
||||||
|
"lib/netstandard1.3/System.Reflection.Emit.dll",
|
||||||
|
"lib/netstandard2.0/System.Reflection.Emit.dll",
|
||||||
|
"lib/netstandard2.0/System.Reflection.Emit.xml",
|
||||||
|
"lib/netstandard2.1/_._",
|
||||||
|
"lib/xamarinios10/_._",
|
||||||
|
"lib/xamarinmac20/_._",
|
||||||
|
"lib/xamarintvos10/_._",
|
||||||
|
"lib/xamarinwatchos10/_._",
|
||||||
|
"ref/MonoAndroid10/_._",
|
||||||
|
"ref/MonoTouch10/_._",
|
||||||
|
"ref/net45/_._",
|
||||||
|
"ref/netcoreapp2.0/_._",
|
||||||
|
"ref/netstandard1.1/System.Reflection.Emit.dll",
|
||||||
|
"ref/netstandard1.1/System.Reflection.Emit.xml",
|
||||||
|
"ref/netstandard1.1/de/System.Reflection.Emit.xml",
|
||||||
|
"ref/netstandard1.1/es/System.Reflection.Emit.xml",
|
||||||
|
"ref/netstandard1.1/fr/System.Reflection.Emit.xml",
|
||||||
|
"ref/netstandard1.1/it/System.Reflection.Emit.xml",
|
||||||
|
"ref/netstandard1.1/ja/System.Reflection.Emit.xml",
|
||||||
|
"ref/netstandard1.1/ko/System.Reflection.Emit.xml",
|
||||||
|
"ref/netstandard1.1/ru/System.Reflection.Emit.xml",
|
||||||
|
"ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml",
|
||||||
|
"ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml",
|
||||||
|
"ref/netstandard2.0/System.Reflection.Emit.dll",
|
||||||
|
"ref/netstandard2.0/System.Reflection.Emit.xml",
|
||||||
|
"ref/netstandard2.1/_._",
|
||||||
|
"ref/xamarinios10/_._",
|
||||||
|
"ref/xamarinmac20/_._",
|
||||||
|
"ref/xamarintvos10/_._",
|
||||||
|
"ref/xamarinwatchos10/_._",
|
||||||
|
"runtimes/aot/lib/netcore50/System.Reflection.Emit.dll",
|
||||||
|
"runtimes/aot/lib/netcore50/System.Reflection.Emit.xml",
|
||||||
|
"system.reflection.emit.4.7.0.nupkg.sha512",
|
||||||
|
"system.reflection.emit.nuspec",
|
||||||
|
"useSharedDesignerContext.txt",
|
||||||
|
"version.txt"
|
||||||
|
]
|
||||||
|
},
|
||||||
"System.Reflection.Metadata/6.0.1": {
|
"System.Reflection.Metadata/6.0.1": {
|
||||||
"sha512": "III/lNMSn0ZRBuM9m5Cgbiho5j81u0FAEagFX5ta2DKbljZ3T0IpD8j+BIiHQPeKqJppWS9bGEp6JnKnWKze0g==",
|
"sha512": "III/lNMSn0ZRBuM9m5Cgbiho5j81u0FAEagFX5ta2DKbljZ3T0IpD8j+BIiHQPeKqJppWS9bGEp6JnKnWKze0g==",
|
||||||
"type": "package",
|
"type": "package",
|
||||||
@@ -5499,29 +5987,34 @@
|
|||||||
"useSharedDesignerContext.txt"
|
"useSharedDesignerContext.txt"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"System.Threading.Channels/6.0.0": {
|
"System.Threading.Channels/8.0.0": {
|
||||||
"sha512": "TY8/9+tI0mNaUMgntOxxaq2ndTkdXqLSxvPmas7XEqOlv9lQtB7wLjYGd756lOaO7Dvb5r/WXhluM+0Xe87v5Q==",
|
"sha512": "CMaFr7v+57RW7uZfZkPExsPB6ljwzhjACWW1gfU35Y56rk72B/Wu+sTqxVmGSk4SFUlPc3cjeKND0zktziyjBA==",
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"path": "system.threading.channels/6.0.0",
|
"path": "system.threading.channels/8.0.0",
|
||||||
"files": [
|
"files": [
|
||||||
".nupkg.metadata",
|
".nupkg.metadata",
|
||||||
".signature.p7s",
|
".signature.p7s",
|
||||||
"Icon.png",
|
"Icon.png",
|
||||||
"LICENSE.TXT",
|
"LICENSE.TXT",
|
||||||
|
"PACKAGE.md",
|
||||||
"THIRD-PARTY-NOTICES.TXT",
|
"THIRD-PARTY-NOTICES.TXT",
|
||||||
|
"buildTransitive/net461/System.Threading.Channels.targets",
|
||||||
|
"buildTransitive/net462/_._",
|
||||||
|
"buildTransitive/net6.0/_._",
|
||||||
"buildTransitive/netcoreapp2.0/System.Threading.Channels.targets",
|
"buildTransitive/netcoreapp2.0/System.Threading.Channels.targets",
|
||||||
"buildTransitive/netcoreapp3.1/_._",
|
"lib/net462/System.Threading.Channels.dll",
|
||||||
"lib/net461/System.Threading.Channels.dll",
|
"lib/net462/System.Threading.Channels.xml",
|
||||||
"lib/net461/System.Threading.Channels.xml",
|
|
||||||
"lib/net6.0/System.Threading.Channels.dll",
|
"lib/net6.0/System.Threading.Channels.dll",
|
||||||
"lib/net6.0/System.Threading.Channels.xml",
|
"lib/net6.0/System.Threading.Channels.xml",
|
||||||
"lib/netcoreapp3.1/System.Threading.Channels.dll",
|
"lib/net7.0/System.Threading.Channels.dll",
|
||||||
"lib/netcoreapp3.1/System.Threading.Channels.xml",
|
"lib/net7.0/System.Threading.Channels.xml",
|
||||||
|
"lib/net8.0/System.Threading.Channels.dll",
|
||||||
|
"lib/net8.0/System.Threading.Channels.xml",
|
||||||
"lib/netstandard2.0/System.Threading.Channels.dll",
|
"lib/netstandard2.0/System.Threading.Channels.dll",
|
||||||
"lib/netstandard2.0/System.Threading.Channels.xml",
|
"lib/netstandard2.0/System.Threading.Channels.xml",
|
||||||
"lib/netstandard2.1/System.Threading.Channels.dll",
|
"lib/netstandard2.1/System.Threading.Channels.dll",
|
||||||
"lib/netstandard2.1/System.Threading.Channels.xml",
|
"lib/netstandard2.1/System.Threading.Channels.xml",
|
||||||
"system.threading.channels.6.0.0.nupkg.sha512",
|
"system.threading.channels.8.0.0.nupkg.sha512",
|
||||||
"system.threading.channels.nuspec",
|
"system.threading.channels.nuspec",
|
||||||
"useSharedDesignerContext.txt"
|
"useSharedDesignerContext.txt"
|
||||||
]
|
]
|
||||||
@@ -5619,6 +6112,7 @@
|
|||||||
"Microsoft.AspNetCore.Authentication >= 2.3.11",
|
"Microsoft.AspNetCore.Authentication >= 2.3.11",
|
||||||
"Microsoft.AspNetCore.Authentication.JwtBearer >= 8.0.28",
|
"Microsoft.AspNetCore.Authentication.JwtBearer >= 8.0.28",
|
||||||
"Microsoft.AspNetCore.OpenApi >= 8.0.25",
|
"Microsoft.AspNetCore.OpenApi >= 8.0.25",
|
||||||
|
"Microsoft.AspNetCore.SignalR >= 1.2.11",
|
||||||
"Microsoft.EntityFrameworkCore >= 8.0.25",
|
"Microsoft.EntityFrameworkCore >= 8.0.25",
|
||||||
"Microsoft.EntityFrameworkCore.Design >= 8.0.25",
|
"Microsoft.EntityFrameworkCore.Design >= 8.0.25",
|
||||||
"Microsoft.EntityFrameworkCore.SqlServer >= 8.0.25",
|
"Microsoft.EntityFrameworkCore.SqlServer >= 8.0.25",
|
||||||
@@ -5702,6 +6196,10 @@
|
|||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[8.0.25, )"
|
"version": "[8.0.25, )"
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.SignalR": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[1.2.11, )"
|
||||||
|
},
|
||||||
"Microsoft.EntityFrameworkCore": {
|
"Microsoft.EntityFrameworkCore": {
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[8.0.25, )"
|
"version": "[8.0.25, )"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"dgSpecHash": "+q/KRRoXVoc=",
|
"dgSpecHash": "FiT+hK5G+gA=",
|
||||||
"success": true,
|
"success": true,
|
||||||
"projectFilePath": "C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj",
|
"projectFilePath": "C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj",
|
||||||
"expectedPackageFiles": [
|
"expectedPackageFiles": [
|
||||||
@@ -18,6 +18,9 @@
|
|||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.authentication.abstractions\\2.3.9\\microsoft.aspnetcore.authentication.abstractions.2.3.9.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.authentication.abstractions\\2.3.9\\microsoft.aspnetcore.authentication.abstractions.2.3.9.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.authentication.core\\2.3.10\\microsoft.aspnetcore.authentication.core.2.3.10.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.authentication.core\\2.3.10\\microsoft.aspnetcore.authentication.core.2.3.10.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.authentication.jwtbearer\\8.0.28\\microsoft.aspnetcore.authentication.jwtbearer.8.0.28.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.authentication.jwtbearer\\8.0.28\\microsoft.aspnetcore.authentication.jwtbearer.8.0.28.nupkg.sha512",
|
||||||
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.authorization\\2.3.0\\microsoft.aspnetcore.authorization.2.3.0.nupkg.sha512",
|
||||||
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.authorization.policy\\2.3.0\\microsoft.aspnetcore.authorization.policy.2.3.0.nupkg.sha512",
|
||||||
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.connections.abstractions\\2.3.0\\microsoft.aspnetcore.connections.abstractions.2.3.0.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.cryptography.internal\\2.3.9\\microsoft.aspnetcore.cryptography.internal.2.3.9.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.cryptography.internal\\2.3.9\\microsoft.aspnetcore.cryptography.internal.2.3.9.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.dataprotection\\2.3.10\\microsoft.aspnetcore.dataprotection.2.3.10.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.dataprotection\\2.3.10\\microsoft.aspnetcore.dataprotection.2.3.10.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.dataprotection.abstractions\\2.3.9\\microsoft.aspnetcore.dataprotection.abstractions.2.3.9.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.dataprotection.abstractions\\2.3.9\\microsoft.aspnetcore.dataprotection.abstractions.2.3.9.nupkg.sha512",
|
||||||
@@ -25,9 +28,18 @@
|
|||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.hosting.server.abstractions\\2.3.0\\microsoft.aspnetcore.hosting.server.abstractions.2.3.0.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.hosting.server.abstractions\\2.3.0\\microsoft.aspnetcore.hosting.server.abstractions.2.3.0.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.http\\2.3.10\\microsoft.aspnetcore.http.2.3.10.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.http\\2.3.10\\microsoft.aspnetcore.http.2.3.10.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.http.abstractions\\2.3.9\\microsoft.aspnetcore.http.abstractions.2.3.9.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.http.abstractions\\2.3.9\\microsoft.aspnetcore.http.abstractions.2.3.9.nupkg.sha512",
|
||||||
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.http.connections\\1.2.0\\microsoft.aspnetcore.http.connections.1.2.0.nupkg.sha512",
|
||||||
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.http.connections.common\\1.2.0\\microsoft.aspnetcore.http.connections.common.1.2.0.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.http.extensions\\2.3.10\\microsoft.aspnetcore.http.extensions.2.3.10.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.http.extensions\\2.3.10\\microsoft.aspnetcore.http.extensions.2.3.10.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.http.features\\2.3.0\\microsoft.aspnetcore.http.features.2.3.0.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.http.features\\2.3.0\\microsoft.aspnetcore.http.features.2.3.0.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.openapi\\8.0.25\\microsoft.aspnetcore.openapi.8.0.25.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.openapi\\8.0.25\\microsoft.aspnetcore.openapi.8.0.25.nupkg.sha512",
|
||||||
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.routing\\2.3.0\\microsoft.aspnetcore.routing.2.3.0.nupkg.sha512",
|
||||||
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.routing.abstractions\\2.3.0\\microsoft.aspnetcore.routing.abstractions.2.3.0.nupkg.sha512",
|
||||||
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.signalr\\1.2.11\\microsoft.aspnetcore.signalr.1.2.11.nupkg.sha512",
|
||||||
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.signalr.common\\1.2.0\\microsoft.aspnetcore.signalr.common.1.2.0.nupkg.sha512",
|
||||||
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.signalr.core\\1.2.0\\microsoft.aspnetcore.signalr.core.1.2.0.nupkg.sha512",
|
||||||
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.signalr.protocols.json\\1.2.0\\microsoft.aspnetcore.signalr.protocols.json.1.2.0.nupkg.sha512",
|
||||||
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.websockets\\2.3.10\\microsoft.aspnetcore.websockets.2.3.10.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.webutilities\\2.3.9\\microsoft.aspnetcore.webutilities.2.3.9.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.aspnetcore.webutilities\\2.3.9\\microsoft.aspnetcore.webutilities.2.3.9.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\6.0.0\\microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\6.0.0\\microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.3\\microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.3\\microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512",
|
||||||
@@ -105,10 +117,12 @@
|
|||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.drawing.common\\6.0.0\\system.drawing.common.6.0.0.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.drawing.common\\6.0.0\\system.drawing.common.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.formats.asn1\\8.0.2\\system.formats.asn1.8.0.2.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.formats.asn1\\8.0.2\\system.formats.asn1.8.0.2.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.identitymodel.tokens.jwt\\7.1.2\\system.identitymodel.tokens.jwt.7.1.2.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.identitymodel.tokens.jwt\\7.1.2\\system.identitymodel.tokens.jwt.7.1.2.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.io.pipelines\\6.0.3\\system.io.pipelines.6.0.3.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.io.pipelines\\8.0.0\\system.io.pipelines.8.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.memory\\4.5.4\\system.memory.4.5.4.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.memory\\4.5.4\\system.memory.4.5.4.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.memory.data\\1.0.2\\system.memory.data.1.0.2.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.memory.data\\1.0.2\\system.memory.data.1.0.2.nupkg.sha512",
|
||||||
|
"C:\\Users\\Carte\\.nuget\\packages\\system.net.websockets.websocketprotocol\\5.1.0\\system.net.websockets.websocketprotocol.5.1.0.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.numerics.vectors\\4.5.0\\system.numerics.vectors.4.5.0.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.numerics.vectors\\4.5.0\\system.numerics.vectors.4.5.0.nupkg.sha512",
|
||||||
|
"C:\\Users\\Carte\\.nuget\\packages\\system.reflection.emit\\4.7.0\\system.reflection.emit.4.7.0.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.reflection.metadata\\6.0.1\\system.reflection.metadata.6.0.1.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.reflection.metadata\\6.0.1\\system.reflection.metadata.6.0.1.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.runtime.caching\\6.0.0\\system.runtime.caching.6.0.0.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.runtime.caching\\6.0.0\\system.runtime.caching.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
|
||||||
@@ -122,7 +136,7 @@
|
|||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.text.json\\8.0.5\\system.text.json.8.0.5.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.text.json\\8.0.5\\system.text.json.8.0.5.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.threading.channels\\6.0.0\\system.threading.channels.6.0.0.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.threading.channels\\8.0.0\\system.threading.channels.8.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.4\\system.threading.tasks.extensions.4.5.4.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.4\\system.threading.tasks.extensions.4.5.4.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\system.windows.extensions\\6.0.0\\system.windows.extensions.6.0.0.nupkg.sha512",
|
"C:\\Users\\Carte\\.nuget\\packages\\system.windows.extensions\\6.0.0\\system.windows.extensions.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\Carte\\.nuget\\packages\\yamldotnet\\16.2.0\\yamldotnet.16.2.0.nupkg.sha512"
|
"C:\\Users\\Carte\\.nuget\\packages\\yamldotnet\\16.2.0\\yamldotnet.16.2.0.nupkg.sha512"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
"restore":{"projectUniqueName":"C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj","projectName":"Knots","projectPath":"C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj","packagesPath":"","outputPath":"C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"AutoMapper":{"target":"Package","version":"[16.1.1, )"},"BCrypt.Net-Next":{"target":"Package","version":"[4.2.0, )"},"FastEndpoints":{"target":"Package","version":"[5.33.0, )"},"FastEndpoints.Swagger":{"target":"Package","version":"[5.33.0, )"},"Microsoft.AspNetCore.Authentication":{"target":"Package","version":"[2.3.11, )"},"Microsoft.AspNetCore.Authentication.JwtBearer":{"target":"Package","version":"[8.0.28, )"},"Microsoft.AspNetCore.OpenApi":{"target":"Package","version":"[8.0.25, )"},"Microsoft.EntityFrameworkCore":{"target":"Package","version":"[8.0.25, )"},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.25, )"},"Microsoft.EntityFrameworkCore.SqlServer":{"target":"Package","version":"[8.0.25, )"},"Swashbuckle.AspNetCore":{"target":"Package","version":"[10.1.7, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Users\\Carte\\.dotnet\\sdk\\8.0.421/PortableRuntimeIdentifierGraph.json"}}
|
"restore":{"projectUniqueName":"C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj","projectName":"Knots","projectPath":"C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj","packagesPath":"","outputPath":"C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"AutoMapper":{"target":"Package","version":"[16.1.1, )"},"BCrypt.Net-Next":{"target":"Package","version":"[4.2.0, )"},"FastEndpoints":{"target":"Package","version":"[5.33.0, )"},"FastEndpoints.Swagger":{"target":"Package","version":"[5.33.0, )"},"Microsoft.AspNetCore.Authentication":{"target":"Package","version":"[2.3.11, )"},"Microsoft.AspNetCore.Authentication.JwtBearer":{"target":"Package","version":"[8.0.28, )"},"Microsoft.AspNetCore.OpenApi":{"target":"Package","version":"[8.0.25, )"},"Microsoft.AspNetCore.SignalR":{"target":"Package","version":"[1.2.11, )"},"Microsoft.EntityFrameworkCore":{"target":"Package","version":"[8.0.25, )"},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.25, )"},"Microsoft.EntityFrameworkCore.SqlServer":{"target":"Package","version":"[8.0.25, )"},"Swashbuckle.AspNetCore":{"target":"Package","version":"[10.1.7, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Users\\Carte\\.dotnet\\sdk\\8.0.421/PortableRuntimeIdentifierGraph.json"}}
|
||||||
@@ -1 +1 @@
|
|||||||
17811216392449905
|
17811676816949331
|
||||||
@@ -1 +1 @@
|
|||||||
17811216425865089
|
17811669515789890
|
||||||
Reference in New Issue
Block a user