Compare commits

...

31 Commits

Author SHA1 Message Date
carteronm ff98045932 Merge vers main 2026-06-11 10:49:06 +02:00
carteronm e1e8a834b2 push fichiers inutiles 2026-06-11 10:48:28 +02:00
gokhoal 61f3d2889c chiffrement 2026-06-11 10:33:02 +02:00
carteronm 66a7e633a9 Rôles ajoutés 2026-06-11 01:49:21 +02:00
carteronm fff484d4ba Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	Knots/bin/Debug/net8.0/Knots.dll
#	Knots/bin/Debug/net8.0/Knots.exe
#	Knots/bin/Debug/net8.0/Knots.pdb
#	Knots/obj/Debug/net8.0/Knots.AssemblyInfo.cs
#	Knots/obj/Debug/net8.0/Knots.AssemblyInfoInputs.cache
#	Knots/obj/Debug/net8.0/Knots.dll
#	Knots/obj/Debug/net8.0/Knots.pdb
#	Knots/obj/Debug/net8.0/apphost.exe
#	Knots/obj/Debug/net8.0/ref/Knots.dll
#	Knots/obj/Debug/net8.0/refint/Knots.dll
2026-06-11 01:32:33 +02:00
carteronm e69550048b Préparation des rôles 2026-06-11 01:32:20 +02:00
gokhoal a29fb27b0d commit blabla3 2026-06-11 01:30:14 +02:00
gokhoal c23cc4a03a LES MESSAGES MARCHENT 2026-06-11 01:29:27 +02:00
carteronm 1d2f96b2f4 Fin création des groupes 2026-06-11 01:14:32 +02:00
carteronm f1cdc5de19 Modif BDD Discussion 2026-06-11 00:56:32 +02:00
carteronm 4e06dc5f23 Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	Knots/bin/Debug/net8.0/Knots.dll
#	Knots/bin/Debug/net8.0/Knots.pdb
#	Knots/obj/Debug/net8.0/Knots.csproj.CoreCompileInputs.cache
#	Knots/obj/Debug/net8.0/Knots.csproj.FileListAbsolute.txt
#	Knots/obj/Debug/net8.0/Knots.dll
#	Knots/obj/Debug/net8.0/Knots.pdb
#	Knots/obj/Debug/net8.0/ref/Knots.dll
#	Knots/obj/Debug/net8.0/refint/Knots.dll
2026-06-11 00:46:04 +02:00
carteronm 779acbe531 Groupe rectification 2026-06-11 00:45:49 +02:00
gokhoal e6021dcc61 envoi et creation messages 2026-06-11 00:44:28 +02:00
gokhoal 4f994ba183 conmmit blabla2 2026-06-11 00:20:02 +02:00
gokhoal 2bb1f730c9 Creatediscussions private et group 2026-06-11 00:19:32 +02:00
gokhoal c92e134698 Revert "Endpoint group"
This reverts commit b7dad57c
2026-06-11 00:15:58 +02:00
gokhoal 0b9e01c925 Revert "endpoint de creation de discussion"
This reverts commit af1b14b0d2.
2026-06-11 00:13:30 +02:00
gokhoal c1bd8a12a9 Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	Knots/bin/Debug/net8.0/Knots.dll
#	Knots/bin/Debug/net8.0/Knots.pdb
#	Knots/obj/Debug/net8.0/Knots.assets.cache
#	Knots/obj/Debug/net8.0/Knots.csproj.AssemblyReference.cache
#	Knots/obj/Debug/net8.0/Knots.csproj.CoreCompileInputs.cache
#	Knots/obj/Debug/net8.0/Knots.dll
#	Knots/obj/Debug/net8.0/Knots.pdb
#	Knots/obj/Debug/net8.0/ref/Knots.dll
#	Knots/obj/Debug/net8.0/refint/Knots.dll
#	Knots/obj/project.nuget.cache
#	Knots/obj/project.packagespec.json
#	Knots/obj/rider.project.model.nuget.info
#	Knots/obj/rider.project.restore.info
2026-06-11 00:13:10 +02:00
gokhoal c120d34e62 hub pour websocket 2026-06-11 00:12:29 +02:00
carteronm b7dad57cee Endpoint group 2026-06-10 23:33:04 +02:00
gokhoal af1b14b0d2 endpoint de creation de discussion 2026-06-10 22:46:40 +02:00
gokhoal 7cfb3909b6 changements de getmessageendpoint et du dto details 2026-06-10 21:33:37 +02:00
gokhoal ff317cc944 correction du modele User et du context 2026-06-10 20:15:05 +02:00
carteronm 79a926bc2d push de con 2026-06-10 17:29:50 +02:00
gokhoal 431e96d9e4 correction de l'endpoint 2026-06-10 17:19:16 +02:00
gokhoal eb70f4b3de changement structure bdd + gestion discussions 2026-06-10 17:17:01 +02:00
gokhoal 690d85009e Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	Knots/bin/Debug/net8.0/Knots.dll
#	Knots/bin/Debug/net8.0/Knots.exe
2026-06-10 17:02:43 +02:00
gokhoal cec4437f2f commit blabla 2026-06-10 17:02:21 +02:00
gokhoal 42187ba088 commit de fichiers info 2026-04-03 09:06:35 +02:00
oistig cc90904228 gitignore 2026-03-12 15:02:49 +01:00
oistig 47cf23d740 premier push de fichiers inutiles 2026-03-12 15:02:10 +01:00
55 changed files with 2071 additions and 126 deletions
+2
View File
@@ -0,0 +1,2 @@
/.idea/.idea.Knots/.idea/.name
/Knots/obj/rider.project.model.nuget.info
+3 -1
View File
@@ -5,5 +5,7 @@ public class GetDiscussionDto
public int Id { get; set; }
public string Name { get; set; } = string.Empty;
public bool IsGroup { get; set; }
public int MembersCount { get; set; }
public int? MembersCount { get; set; }
public int? GroupId { get; set; }
}
@@ -6,4 +6,7 @@ public class GetMessageDetailsDto
public string? Contenu { get; set; }
public DateTime Date { get; set; }
public Boolean Type { get; set; }
public int UserId { get; set; }
public string AuthorName { get; set; } = "";
}
@@ -0,0 +1,91 @@
using FastEndpoints;
using Knots.DTO.Discussion;
using Knots.Models;
using Microsoft.EntityFrameworkCore;
using System.Security.Claims;
using Knots.Services;
namespace Knots.Endpoints.Discussion;
public class CreateGroupDiscussionEndpoint(KnotsDbContext db, EncryptionService encryption) : Endpoint<CreateGroupDiscussionRequest, GetDiscussionDto>
{
public override void Configure()
{
Post("/discussions/group");
}
public override async Task HandleAsync(CreateGroupDiscussionRequest req, CancellationToken ct)
{
int currentUserId = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!);
if (req.Usernames == null || req.Usernames.Count == 0)
{
await SendErrorsAsync(400, ct);
return;
}
List<Models.User> targets = await db.Users
.Where(u => req.Usernames.Contains(u.Username!))
.ToListAsync(ct);
if (targets.Count != req.Usernames.Count)
{
await SendNotFoundAsync(ct);
return;
}
if (targets.Any(t => t.Id == currentUserId))
{
await SendErrorsAsync(400, ct);
return;
}
int totalMembers = targets.Count + 1;
Models.Discussion discussion = new()
{
IsGroup = true,
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);
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 SendOkAsync(new GetDiscussionDto
{
Id = discussion.Id,
IsGroup = true,
Name = group.Name,
MembersCount = totalMembers
}, ct);
}
}
public class CreateGroupDiscussionRequest
{
public string GroupName { get; set; } = "";
public List<string> Usernames { get; set; } = [];
}
@@ -0,0 +1,85 @@
using FastEndpoints;
using Knots.DTO.Discussion;
using Knots.Models;
using Microsoft.EntityFrameworkCore;
using System.Security.Claims;
using Knots.Services;
namespace Knots.Endpoints.Discussion;
public class CreatePrivateDiscussionEndpoint(KnotsDbContext db, EncryptionService encryption)
: Endpoint<CreatePrivateDiscussionRequest, GetDiscussionDto>
{
public override void Configure()
{
Post("/discussions/private");
}
public override async Task HandleAsync(CreatePrivateDiscussionRequest req, CancellationToken ct)
{
int currentUserId = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!);
// 1. retrouver l'utilisateur cible par son nom
Models.User? target = await db.Users
.SingleOrDefaultAsync(u => u.Username == req.Username, ct);
if (target is null)
{
await SendNotFoundAsync(ct); // utilisateur introuvable
return;
}
if (target.Id == currentUserId)
{
await SendErrorsAsync(400, ct); // pas de discussion avec soi-même
return;
}
// 2. vérifier qu'une discussion privée entre les deux n'existe pas déjà
Models.Discussion? existing = await db.Discussions
.Where(d => d.GroupId == null
&& d.UserDiscussions.Any(ud => ud.UserId == currentUserId)
&& d.UserDiscussions.Any(ud => ud.UserId == target.Id))
.FirstOrDefaultAsync(ct);
if (existing is not null)
{
await SendOkAsync(new GetDiscussionDto
{
Id = existing.Id,
IsGroup = false,
Name = target.Username!,
MembersCount = null
}, ct);
return;
}
// 3. créer la discussion + les deux participants
Models.Discussion discussion = new()
{
IsGroup = false,
Key = new Models.Key { EnKey = encryption.GenerateKey() },
UserDiscussions =
[
new UserDiscussion { UserId = currentUserId },
new UserDiscussion { UserId = target.Id }
]
};
db.Discussions.Add(discussion);
await db.SaveChangesAsync(ct);
await SendOkAsync(new GetDiscussionDto
{
Id = discussion.Id,
IsGroup = false,
Name = target.Username!,
MembersCount = null
}, ct);
}
}
public class CreatePrivateDiscussionRequest
{
public string Username { get; set; } = "";
}
@@ -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; }
}
@@ -0,0 +1,50 @@
using System.Security.Claims;
using FastEndpoints;
using Knots.DTO.Discussion;
using Microsoft.EntityFrameworkCore;
namespace Knots.Endpoints.Discussion;
public class GetMyDiscussionEndpoint(KnotsDbContext db) : EndpointWithoutRequest<List<GetDiscussionDto>>
{
public override void Configure()
{
Get("/discussions/my");
}
public override async Task HandleAsync(CancellationToken ct)
{
int userId = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!);
// Discussions privées : l'utilisateur est l'un des participants
IQueryable<GetDiscussionDto> privees = db.Discussions
.Where(d => d.GroupId == null && d.UserDiscussions.Any(ud => ud.UserId == userId))
.Select(d => new GetDiscussionDto
{
Id = d.Id,
IsGroup = false,
Name = d.UserDiscussions
.Where(ud => ud.UserId != userId)
.Select(ud => ud.User.Username)
.FirstOrDefault() ?? "",
MembersCount = null,
GroupId = null
});
// Discussions de groupe : l'utilisateur est membre du groupe
IQueryable<GetDiscussionDto> groupes = db.Discussions
.Where(d => d.Group != null && d.Group.GroupUsers.Any(gu => gu.UserId == userId))
.Select(d => new GetDiscussionDto
{
Id = d.Id,
IsGroup = true,
Name = d.Group!.Name!,
MembersCount = d.Group.MembersAmount,
GroupId = d.Group.Id
});
List<GetDiscussionDto> discussions = await privees.Concat(groupes).ToListAsync(ct);
await SendOkAsync(discussions, ct);
}
}
+43 -10
View File
@@ -1,29 +1,62 @@
using System.Security.Claims;
using FastEndpoints;
using Knots.DTO.Message;
using Knots.DTO.User;
using Knots.Services;
using Microsoft.EntityFrameworkCore;
namespace Knots.Endpoints.Message;
public class GetMessageEndpoint(KnotsDbContext db, AutoMapper.IMapper mapper) : Endpoint <GetMessageDetailsDto>
public class GetMessageEndpoint(KnotsDbContext db, AutoMapper.IMapper mapper, EncryptionService encryption) : Endpoint<GetDiscussionMessagesRequest, List<GetMessageDetailsDto>>
{
public override void Configure()
{
Get("/messages/{@Id}");
Get("/discussions/{DiscussionId}/messages");
AllowAnonymous();
}
public override async Task HandleAsync(GetMessageDetailsDto req, CancellationToken ct)
public override async Task HandleAsync(GetDiscussionMessagesRequest req, CancellationToken ct)
{
Models.Message? databaseMessage = await db.Messages.SingleOrDefaultAsync(x => x.Id == req.Id, cancellationToken: ct);
if (databaseMessage == null)
int userId = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!);
// l'utilisateur participe-t-il à cette discussion (privée ou via le groupe) ?
bool autorise = await db.Discussions
.Where(d => d.Id == req.DiscussionId)
.AnyAsync(d =>
d.UserDiscussions.Any(ud => ud.UserId == userId) ||
(d.Group != null && d.Group.GroupUsers.Any(gu => gu.UserId == userId)), ct);
if (!autorise)
{
await SendNotFoundAsync(ct);
await SendForbiddenAsync(ct);
return;
}
var messageDto = mapper.Map<GetMessageDetailsDto>(databaseMessage);
await SendOkAsync(messageDto, ct);
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)
.OrderBy(m => m.Date)
.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,
Contenu = encryption.Decrypt(m.Contenu!, key!),
Date = m.Date,
UserId = m.UserId,
AuthorName = m.AuthorName
}).ToList();
await SendOkAsync(messages, ct);
}
}
public class GetDiscussionMessagesRequest
{
public int DiscussionId { get; set; }
}
@@ -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; }
}
+18 -8
View File
@@ -1,22 +1,32 @@
using FastEndpoints;
using Knots.DTO.Role;
using Knots.DTO.User;
using Knots.Models;
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()
{
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);
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; } = "";
}
+60
View File
@@ -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);
}
}
+1
View File
@@ -14,6 +14,7 @@
<PackageReference Include="Microsoft.AspNetCore.Authentication" Version="2.3.11" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.28" />
<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.Design" Version="8.0.25">
<PrivateAssets>all</PrivateAssets>
+48 -28
View File
@@ -5,13 +5,14 @@ namespace Knots;
public class KnotsDbContext : DbContext
{
public DbSet<Discussion> Discussions { get; set; }
public DbSet<UserDiscussion> UserDiscussions { get; set; }
public DbSet<Group> Groups { get; set; }
public DbSet<Key> Keys { get; set; }
public DbSet<Message> Messages { get; set; }
public DbSet<Role> Roles { get; set; }
public DbSet<User> Users { get; set; }
public DbSet<User> Users => Set<User>();
public DbSet<Discussion> Discussions => Set<Discussion>();
public DbSet<Group> Groups => Set<Group>();
public DbSet<Message> Messages => Set<Message>();
public DbSet<Role> Roles => Set<Role>();
public DbSet<Key> Keys => Set<Key>();
public DbSet<UserDiscussion> UserDiscussions => Set<UserDiscussion>();
public DbSet<GroupUser> GroupUsers => Set<GroupUser>();
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
@@ -26,34 +27,53 @@ public class KnotsDbContext : DbContext
optionsBuilder.UseSqlServer(connectionString);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<GroupUser>()
.HasKey(gu => new { gu.GroupId, gu.UserId });
modelBuilder.Entity<GroupUser>()
.HasOne(gu => gu.Group)
.WithMany(g => g.GroupUsers)
.HasForeignKey(gu => gu.GroupId)
.OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<GroupUser>()
.HasOne(gu => gu.User)
.WithMany()
.HasForeignKey(gu => gu.UserId)
.OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity<GroupUser>()
.HasOne(gu => gu.Role)
.WithMany(r => r.GroupUsers)
.HasForeignKey(gu => gu.RoleId);
modelBuilder.Entity<Discussion>()
.HasOne(d => d.Group)
.WithMany()
.HasForeignKey(d => d.GroupId)
.OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity<Group>()
.HasOne(g => g.Discussion)
.WithMany()
.HasForeignKey(g => g.DiscussionId)
.OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity<UserDiscussion>()
.HasKey(ud => new { ud.UserId, ud.DiscussionId });
modelBuilder.Entity<UserDiscussion>()
.HasOne(ud => ud.User)
.WithMany(u => u.UserDiscussions)
.HasForeignKey(ud => ud.UserId);
modelBuilder.Entity<UserDiscussion>()
.HasOne(ud => ud.Discussion)
.WithMany(d => d.UserDiscussions)
.HasForeignKey(ud => ud.DiscussionId);
modelBuilder.Entity<Message>()
.HasOne(m => m.Discussion)
.WithMany(d => d.Messages)
.HasForeignKey(m => m.DiscussionId);
.HasForeignKey(ud => ud.DiscussionId)
.OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<Message>()
.HasOne(m => m.User)
.WithMany(u => u.Messages)
.HasForeignKey(m => m.UserId);
modelBuilder.Entity<Group>()
.HasOne(g => g.Discussion)
.WithOne(d => d.Group)
.HasForeignKey<Group>(g => g.DiscussionId);
modelBuilder.Entity<UserDiscussion>()
.HasOne(ud => ud.User)
.WithMany(u => u.UserDiscussions)
.HasForeignKey(ud => ud.UserId)
.OnDelete(DeleteBehavior.Restrict);
}
}
@@ -0,0 +1,380 @@
// <auto-generated />
using System;
using Knots;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace Knots.Migrations
{
[DbContext(typeof(KnotsDbContext))]
[Migration("20260610224937_FixGroupDiscussion")]
partial class FixGroupDiscussion
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "8.0.25")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("Knots.Models.Discussion", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<DateTime>("CreatedAt")
.HasColumnType("datetime2");
b.Property<int?>("GroupId")
.HasColumnType("int");
b.Property<bool>("IsGroup")
.HasColumnType("bit");
b.HasKey("Id");
b.HasIndex("GroupId");
b.ToTable("Discussions");
});
modelBuilder.Entity("Knots.Models.Group", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("DiscussionId")
.HasColumnType("int");
b.Property<int>("MembersAmount")
.HasColumnType("int");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("ProfilePicture")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("DiscussionId");
b.ToTable("Groups");
});
modelBuilder.Entity("Knots.Models.GroupUser", b =>
{
b.Property<int>("GroupId")
.HasColumnType("int");
b.Property<int>("UserId")
.HasColumnType("int");
b.Property<int?>("RoleId")
.HasColumnType("int");
b.HasKey("GroupId", "UserId");
b.HasIndex("RoleId");
b.HasIndex("UserId");
b.ToTable("GroupUsers");
});
modelBuilder.Entity("Knots.Models.Key", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("EnKey")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.HasKey("Id");
b.ToTable("Keys");
});
modelBuilder.Entity("Knots.Models.Message", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("AuthorId")
.HasColumnType("int");
b.Property<string>("Contenu")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)");
b.Property<DateTime>("Date")
.HasColumnType("datetime2");
b.Property<int>("DiscussionId")
.HasColumnType("int");
b.Property<int?>("GroupId")
.HasColumnType("int");
b.Property<int?>("KeyId")
.HasColumnType("int");
b.Property<bool>("Type")
.HasColumnType("bit");
b.Property<int>("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("DiscussionId");
b.HasIndex("GroupId");
b.HasIndex("KeyId");
b.HasIndex("UserId");
b.ToTable("Messages");
});
modelBuilder.Entity("Knots.Models.Role", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Libelle")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.HasKey("Id");
b.ToTable("Roles");
});
modelBuilder.Entity("Knots.Models.User", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Description")
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<string>("Email")
.IsRequired()
.HasMaxLength(70)
.HasColumnType("nvarchar(70)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("ProfilePicture")
.HasColumnType("nvarchar(max)");
b.Property<int?>("RoleId")
.HasColumnType("int");
b.Property<string>("Tel")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Username")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.HasKey("Id");
b.HasIndex("RoleId");
b.ToTable("Users");
});
modelBuilder.Entity("Knots.Models.UserDiscussion", b =>
{
b.Property<int>("UserId")
.HasColumnType("int");
b.Property<int>("DiscussionId")
.HasColumnType("int");
b.HasKey("UserId", "DiscussionId");
b.HasIndex("DiscussionId");
b.ToTable("UserDiscussions");
});
modelBuilder.Entity("Knots.Models.Discussion", b =>
{
b.HasOne("Knots.Models.Group", "Group")
.WithMany()
.HasForeignKey("GroupId")
.OnDelete(DeleteBehavior.Restrict);
b.Navigation("Group");
});
modelBuilder.Entity("Knots.Models.Group", b =>
{
b.HasOne("Knots.Models.Discussion", "Discussion")
.WithMany()
.HasForeignKey("DiscussionId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Discussion");
});
modelBuilder.Entity("Knots.Models.GroupUser", b =>
{
b.HasOne("Knots.Models.Group", "Group")
.WithMany("GroupUsers")
.HasForeignKey("GroupId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Knots.Models.Role", "Role")
.WithMany("GroupUsers")
.HasForeignKey("RoleId");
b.HasOne("Knots.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Group");
b.Navigation("Role");
b.Navigation("User");
});
modelBuilder.Entity("Knots.Models.Message", b =>
{
b.HasOne("Knots.Models.Discussion", "Discussion")
.WithMany("Messages")
.HasForeignKey("DiscussionId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Knots.Models.Group", "Group")
.WithMany()
.HasForeignKey("GroupId");
b.HasOne("Knots.Models.Key", "Key")
.WithMany("Messages")
.HasForeignKey("KeyId");
b.HasOne("Knots.Models.User", "User")
.WithMany("Messages")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Discussion");
b.Navigation("Group");
b.Navigation("Key");
b.Navigation("User");
});
modelBuilder.Entity("Knots.Models.User", b =>
{
b.HasOne("Knots.Models.Role", "Role")
.WithMany("Users")
.HasForeignKey("RoleId");
b.Navigation("Role");
});
modelBuilder.Entity("Knots.Models.UserDiscussion", b =>
{
b.HasOne("Knots.Models.Discussion", "Discussion")
.WithMany("UserDiscussions")
.HasForeignKey("DiscussionId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Knots.Models.User", "User")
.WithMany("UserDiscussions")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Discussion");
b.Navigation("User");
});
modelBuilder.Entity("Knots.Models.Discussion", b =>
{
b.Navigation("Messages");
b.Navigation("UserDiscussions");
});
modelBuilder.Entity("Knots.Models.Group", b =>
{
b.Navigation("GroupUsers");
});
modelBuilder.Entity("Knots.Models.Key", b =>
{
b.Navigation("Messages");
});
modelBuilder.Entity("Knots.Models.Role", b =>
{
b.Navigation("GroupUsers");
b.Navigation("Users");
});
modelBuilder.Entity("Knots.Models.User", b =>
{
b.Navigation("Messages");
b.Navigation("UserDiscussions");
});
#pragma warning restore 612, 618
}
}
}
@@ -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);
}
}
}
+75 -11
View File
@@ -33,11 +33,16 @@ namespace Knots.Migrations
b.Property<DateTime>("CreatedAt")
.HasColumnType("datetime2");
b.Property<int?>("GroupId")
.HasColumnType("int");
b.Property<bool>("IsGroup")
.HasColumnType("bit");
b.HasKey("Id");
b.HasIndex("GroupId");
b.ToTable("Discussions");
});
@@ -52,9 +57,6 @@ namespace Knots.Migrations
b.Property<int>("DiscussionId")
.HasColumnType("int");
b.Property<int>("KeyId")
.HasColumnType("int");
b.Property<int>("MembersAmount")
.HasColumnType("int");
@@ -68,12 +70,31 @@ namespace Knots.Migrations
b.HasKey("Id");
b.HasIndex("DiscussionId")
.IsUnique();
b.HasIndex("DiscussionId");
b.ToTable("Groups");
});
modelBuilder.Entity("Knots.Models.GroupUser", b =>
{
b.Property<int>("GroupId")
.HasColumnType("int");
b.Property<int>("UserId")
.HasColumnType("int");
b.Property<int?>("RoleId")
.HasColumnType("int");
b.HasKey("GroupId", "UserId");
b.HasIndex("RoleId");
b.HasIndex("UserId");
b.ToTable("GroupUsers");
});
modelBuilder.Entity("Knots.Models.Key", b =>
{
b.Property<int>("Id")
@@ -100,6 +121,9 @@ namespace Knots.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("AuthorId")
.HasColumnType("int");
b.Property<string>("Contenu")
.IsRequired()
.HasMaxLength(1000)
@@ -212,17 +236,52 @@ namespace Knots.Migrations
b.ToTable("UserDiscussions");
});
modelBuilder.Entity("Knots.Models.Discussion", b =>
{
b.HasOne("Knots.Models.Group", "Group")
.WithMany()
.HasForeignKey("GroupId")
.OnDelete(DeleteBehavior.Restrict);
b.Navigation("Group");
});
modelBuilder.Entity("Knots.Models.Group", b =>
{
b.HasOne("Knots.Models.Discussion", "Discussion")
.WithOne("Group")
.HasForeignKey("Knots.Models.Group", "DiscussionId")
.OnDelete(DeleteBehavior.Cascade)
.WithMany()
.HasForeignKey("DiscussionId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Discussion");
});
modelBuilder.Entity("Knots.Models.GroupUser", b =>
{
b.HasOne("Knots.Models.Group", "Group")
.WithMany("GroupUsers")
.HasForeignKey("GroupId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Knots.Models.Role", "Role")
.WithMany("GroupUsers")
.HasForeignKey("RoleId");
b.HasOne("Knots.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Group");
b.Navigation("Role");
b.Navigation("User");
});
modelBuilder.Entity("Knots.Models.Message", b =>
{
b.HasOne("Knots.Models.Discussion", "Discussion")
@@ -274,7 +333,7 @@ namespace Knots.Migrations
b.HasOne("Knots.Models.User", "User")
.WithMany("UserDiscussions")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Discussion");
@@ -284,13 +343,16 @@ namespace Knots.Migrations
modelBuilder.Entity("Knots.Models.Discussion", b =>
{
b.Navigation("Group");
b.Navigation("Messages");
b.Navigation("UserDiscussions");
});
modelBuilder.Entity("Knots.Models.Group", b =>
{
b.Navigation("GroupUsers");
});
modelBuilder.Entity("Knots.Models.Key", b =>
{
b.Navigation("Messages");
@@ -298,6 +360,8 @@ namespace Knots.Migrations
modelBuilder.Entity("Knots.Models.Role", b =>
{
b.Navigation("GroupUsers");
b.Navigation("Users");
});
+6 -1
View File
@@ -8,7 +8,12 @@ public class Discussion
public bool IsGroup { get; set; } = false;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public Group? Group { get; set; }
public int? GroupId { 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<UserDiscussion> UserDiscussions { get; set; } = [];
}
+4 -7
View File
@@ -1,5 +1,4 @@
using System.ComponentModel.DataAnnotations;
using System.Net.Mime;
namespace Knots.Models;
@@ -9,11 +8,9 @@ public class Group
[Required, MaxLength(50)] public string? Name { get; set; }
[Required] public int MembersAmount { get; set; }
public string? ProfilePicture { get; set; }
public int KeyId { get; set; }
List<Message> Messages { get; set; }
List<User> Users { get; set; }
public int DiscussionId { get; set; }
public List<GroupUser> GroupUsers { get; set; } = [];
public int DiscussionId { get; set; }
public Discussion Discussion { get; set; } = null!;
}
+13
View File
@@ -0,0 +1,13 @@
namespace Knots.Models;
public class GroupUser
{
public int GroupId { get; set; }
public Group Group { get; set; } = null!;
public int UserId { get; set; }
public User User { get; set; } = null!;
public int? RoleId { get; set; }
public Role? Role { get; set; }
}
-1
View File
@@ -6,5 +6,4 @@ public class Key
{
[Key] public int Id { get; set; }
[Required, MaxLength(50)] public string? EnKey { get; set; }
public List<Message> Messages { get; set; } = [];
}
+1 -2
View File
@@ -12,9 +12,8 @@ public class Message
public int UserId { get; set; }
public User User { get; set; } = null!;
public int DiscussionId { get; set; } // ← ajouté
public int DiscussionId { get; set; }
public Discussion Discussion { get; set; } = null!;
public Group? Group { get; set; }
public Key? Key { get; set; }
}
+2 -1
View File
@@ -6,5 +6,6 @@ public class Role
{
public int Id { get; set; }
[Required, MaxLength(50)] public string? Libelle { get; set; }
public List<User> Users { get; set; } = [];
public List<User> Users { get; set; } = [];
public List<GroupUser> GroupUsers { get; set; } = [];
}
+1 -1
View File
@@ -12,7 +12,7 @@ public class User
[Required, Length(10, 10)] public string? Tel { get; set; }
public string? ProfilePicture { get; set; }
public List<Message> Messages { get; set; } = [];
public List<UserDiscussion> UserDiscussions { get; set; } = [];
public int? RoleId { get; set; }
public Role? Role { get; set; }
public List<UserDiscussion> UserDiscussions { get; set; } = [];
}
+24 -3
View File
@@ -2,6 +2,7 @@ using System.Text;
using Knots;
using FastEndpoints;
using FastEndpoints.Swagger;
using Knots.Hubs;
using Knots.Services;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Http.Json;
@@ -20,7 +21,8 @@ builder.Services.AddCors(options =>
policyBuilder
.WithOrigins("http://localhost:5250", "http://localhost:4200")
.WithMethods("GET", "POST", "PUT", "PATCH", "DELETE")
.AllowAnyHeader();
.AllowAnyHeader()
.AllowCredentials();
});
});
@@ -46,15 +48,33 @@ builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
ValidAudience = builder.Configuration["Jwt:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(
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.AddSignalR();
builder.Services.AddAutoMapper(cfg => { }, typeof(Program).Assembly);
builder.Services.AddSingleton<EncryptionService>();
// On construit l'application en lui donnant vie
WebApplication app = builder.Build();
@@ -71,5 +91,6 @@ app.UseAuthentication()
}
).UseSwaggerGen();
app.MapHub<ChatHub>("hubs/chat");
app.Run();
+56
View File
@@ -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)
.NotEmpty()
.WithMessage("Le message ne peux pas être vide")
.MaximumLength(1000)
.MaximumLength(2000)
.WithMessage("Le message ne doit pas faire plus de 1000 caractères");
RuleFor(x => x.Date)
+214 -12
View File
@@ -15,6 +15,7 @@
"Microsoft.AspNetCore.Authentication": "2.3.11",
"Microsoft.AspNetCore.Authentication.JwtBearer": "8.0.28",
"Microsoft.AspNetCore.OpenApi": "8.0.25",
"Microsoft.AspNetCore.SignalR": "1.2.11",
"Microsoft.EntityFrameworkCore": "8.0.25",
"Microsoft.EntityFrameworkCore.Design": "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.DataProtection/2.3.10": {
"dependencies": {
@@ -216,6 +235,26 @@
"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": {
"dependencies": {
"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": {
"dependencies": {
"Microsoft.Net.Http.Headers": "2.3.9",
@@ -424,8 +519,8 @@
"Microsoft.Bcl.AsyncInterfaces": "6.0.0",
"Microsoft.CodeAnalysis.Common": "4.5.0",
"System.Composition": "6.0.0",
"System.IO.Pipelines": "6.0.3",
"System.Threading.Channels": "6.0.0"
"System.IO.Pipelines": "8.0.0",
"System.Threading.Channels": "8.0.0"
},
"runtime": {
"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.Data/1.0.2": {
"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.Reflection.Emit/4.7.0": {},
"System.Reflection.Metadata/6.0.1": {
"dependencies": {
"System.Collections.Immutable": "6.0.0"
@@ -1327,7 +1431,7 @@
},
"System.Text.Encodings.Web/8.0.0": {},
"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.Windows.Extensions/6.0.0": {
"dependencies": {
@@ -1462,6 +1566,27 @@
"path": "microsoft.aspnetcore.authentication.jwtbearer/8.0.28",
"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": {
"type": "package",
"serviceable": true,
@@ -1511,6 +1636,20 @@
"path": "microsoft.aspnetcore.http.abstractions/2.3.9",
"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": {
"type": "package",
"serviceable": true,
@@ -1532,6 +1671,55 @@
"path": "microsoft.aspnetcore.openapi/8.0.25",
"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": {
"type": "package",
"serviceable": true,
@@ -2071,12 +2259,12 @@
"path": "system.identitymodel.tokens.jwt/7.1.2",
"hashPath": "system.identitymodel.tokens.jwt.7.1.2.nupkg.sha512"
},
"System.IO.Pipelines/6.0.3": {
"System.IO.Pipelines/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ryTgF+iFkpGZY1vRQhfCzX0xTdlV3pyaTTqRu2ETbEv+HlV7O6y7hyQURnghNIXvctl5DuZ//Dpks6HdL/Txgw==",
"path": "system.io.pipelines/6.0.3",
"hashPath": "system.io.pipelines.6.0.3.nupkg.sha512"
"sha512": "sha512-FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==",
"path": "system.io.pipelines/8.0.0",
"hashPath": "system.io.pipelines.8.0.0.nupkg.sha512"
},
"System.Memory/4.5.4": {
"type": "package",
@@ -2092,6 +2280,13 @@
"path": "system.memory.data/1.0.2",
"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": {
"type": "package",
"serviceable": true,
@@ -2099,6 +2294,13 @@
"path": "system.numerics.vectors/4.5.0",
"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": {
"type": "package",
"serviceable": true,
@@ -2190,12 +2392,12 @@
"path": "system.text.json/8.0.5",
"hashPath": "system.text.json.8.0.5.nupkg.sha512"
},
"System.Threading.Channels/6.0.0": {
"System.Threading.Channels/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-TY8/9+tI0mNaUMgntOxxaq2ndTkdXqLSxvPmas7XEqOlv9lQtB7wLjYGd756lOaO7Dvb5r/WXhluM+0Xe87v5Q==",
"path": "system.threading.channels/6.0.0",
"hashPath": "system.threading.channels.6.0.0.nupkg.sha512"
"sha512": "sha512-CMaFr7v+57RW7uZfZkPExsPB6ljwzhjACWW1gfU35Y56rk72B/Wu+sTqxVmGSk4SFUlPc3cjeKND0zktziyjBA==",
"path": "system.threading.channels/8.0.0",
"hashPath": "system.threading.channels.8.0.0.nupkg.sha512"
},
"System.Threading.Tasks.Extensions/4.5.4": {
"type": "package",
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Knots")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c5b5ac6b8422fe615bcd0191662be81a4d8be446")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+42187ba0882a01c8f97b16b49c74efd5fbce9b12")]
[assembly: System.Reflection.AssemblyProductAttribute("Knots")]
[assembly: System.Reflection.AssemblyTitleAttribute("Knots")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
@@ -1 +1 @@
23c94b3f83af2124768bfc3c866ceb4f88529a8fc5c81d7607aabff563024342
882a1ca1aec90fc8d6295b45413d9067b1a028d9de136ea4e9be02775fdc15d7
Binary file not shown.
@@ -1 +1 @@
c1cb850b5d9c875b4681da352b045d223ada8633b3374461e153190b03e4f465
8c008e0540a310c319081e4a6b8a7ce2f5c9b271d5260b8b45b33f49b9ad5228
@@ -344,3 +344,179 @@ C:\Users\Carte\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Security.Crypto
C:\Users\Carte\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Security.Cryptography.Xml.dll
C:\Users\Carte\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\win\lib\net8.0\System.Security.Cryptography.Pkcs.dll
C:\Users\Carte\RiderProjects\Knots\Knots\bin\Debug\net8.0\BCrypt-Net-Next.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\appsettings.Development.json
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\appsettings.json
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Knots.exe
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Knots.deps.json
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Knots.runtimeconfig.json
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Knots.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Knots.pdb
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\AutoMapper.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Azure.Core.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Azure.Identity.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\BCrypt-Net-Next.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\FastEndpoints.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\FastEndpoints.Attributes.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\FastEndpoints.Messaging.Core.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\FastEndpoints.Swagger.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\FluentValidation.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Humanizer.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.AspNetCore.Authentication.JwtBearer.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.AspNetCore.OpenApi.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Bcl.AsyncInterfaces.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.CodeAnalysis.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.Workspaces.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.CodeAnalysis.Workspaces.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Data.SqlClient.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Abstractions.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Design.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Relational.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.SqlServer.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Extensions.Caching.Memory.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Extensions.DependencyInjection.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Extensions.DependencyModel.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Extensions.Diagnostics.Abstractions.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Extensions.Hosting.Abstractions.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Extensions.Logging.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Extensions.Logging.Abstractions.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Extensions.ObjectPool.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Extensions.Options.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Extensions.Primitives.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Extensions.WebEncoders.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Identity.Client.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Identity.Client.Extensions.Msal.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.IdentityModel.Abstractions.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.IdentityModel.JsonWebTokens.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.IdentityModel.Logging.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.IdentityModel.Protocols.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.IdentityModel.Tokens.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.OpenApi.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.SqlServer.Server.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Microsoft.Win32.SystemEvents.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Mono.TextTemplating.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Namotion.Reflection.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Newtonsoft.Json.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\NJsonSchema.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\NJsonSchema.Annotations.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\NJsonSchema.NewtonsoftJson.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\NJsonSchema.Yaml.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\NSwag.Annotations.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\NSwag.AspNetCore.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\NSwag.Core.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\NSwag.Core.Yaml.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\NSwag.Generation.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\NSwag.Generation.AspNetCore.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Swashbuckle.AspNetCore.Swagger.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Swashbuckle.AspNetCore.SwaggerGen.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\Swashbuckle.AspNetCore.SwaggerUI.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.ClientModel.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.CodeDom.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Composition.AttributedModel.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Composition.Convention.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Composition.Hosting.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Composition.Runtime.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Composition.TypedParts.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Configuration.ConfigurationManager.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Diagnostics.DiagnosticSource.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Drawing.Common.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.IdentityModel.Tokens.Jwt.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Memory.Data.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Runtime.Caching.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Security.Cryptography.Pkcs.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Security.Cryptography.ProtectedData.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Security.Cryptography.Xml.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Security.Permissions.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Windows.Extensions.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\YamlDotNet.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.CSharp.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.CSharp.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.CSharp.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.CSharp.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.CSharp.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.CSharp.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.CSharp.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.CSharp.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.CSharp.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.CSharp.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.CSharp.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.Workspaces.resources.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\unix\lib\net6.0\Microsoft.Data.SqlClient.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\win\lib\net6.0\Microsoft.Data.SqlClient.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\win-arm\native\Microsoft.Data.SqlClient.SNI.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\win-arm64\native\Microsoft.Data.SqlClient.SNI.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\win-x64\native\Microsoft.Data.SqlClient.SNI.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\win-x86\native\Microsoft.Data.SqlClient.SNI.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\win\lib\net6.0\Microsoft.Win32.SystemEvents.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\unix\lib\net6.0\System.Drawing.Common.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\win\lib\net6.0\System.Drawing.Common.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\win\lib\net6.0\System.Runtime.Caching.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\win\lib\net8.0\System.Security.Cryptography.Pkcs.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\win\lib\net6.0\System.Security.Cryptography.ProtectedData.dll
C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\runtimes\win\lib\net6.0\System.Windows.Extensions.dll
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.csproj.AssemblyReference.cache
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.AssemblyInfoInputs.cache
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.AssemblyInfo.cs
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.csproj.CoreCompileInputs.cache
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.MvcApplicationPartsAssemblyInfo.cs
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.MvcApplicationPartsAssemblyInfo.cache
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\staticwebassets.build.json
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\staticwebassets.development.json
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\staticwebassets\msbuild.Knots.Microsoft.AspNetCore.StaticWebAssets.props
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\staticwebassets\msbuild.build.Knots.props
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\staticwebassets\msbuild.buildMultiTargeting.Knots.props
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\staticwebassets\msbuild.buildTransitive.Knots.props
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\staticwebassets.pack.json
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\scopedcss\bundle\Knots.styles.css
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.csproj.Up2Date
C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.dll
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.genruntimeconfig.cache
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.
+1 -1
View File
@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Knots")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+42187ba0882a01c8f97b16b49c74efd5fbce9b12")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+cc9090422803e15ae5e01cdb4964a0c908f54640")]
[assembly: System.Reflection.AssemblyProductAttribute("Knots")]
[assembly: System.Reflection.AssemblyTitleAttribute("Knots")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
@@ -1 +1 @@
882a1ca1aec90fc8d6295b45413d9067b1a028d9de136ea4e9be02775fdc15d7
2ca7620f113862464478e6b6389da9524ea0be35ffdaed378316ed68319d330f
@@ -9,13 +9,13 @@ build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = Knots
build_property.RootNamespace = Knots
build_property.ProjectDir = /home/carteronm@stsio.lan/RiderProjects/Knots/Knots/
build_property.ProjectDir = C:\Users\oistig\RiderProjects\Knots\Knots\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.RazorLangVersion = 9.0
build_property.SupportLocalizedComponentNames =
build_property.GenerateRazorMetadataSourceChecksumAttributes =
build_property.MSBuildProjectDirectory = /home/carteronm@stsio.lan/RiderProjects/Knots/Knots
build_property.MSBuildProjectDirectory = C:\Users\oistig\RiderProjects\Knots\Knots
build_property._RazorSourceGeneratorDebug =
build_property.EffectiveAnalysisLevelStyle = 9.0
build_property.EnableCodeStyleSeverity =
Binary file not shown.
+4
View File
@@ -77,6 +77,10 @@
"target": "Package",
"version": "[8.0.25, )"
},
"Microsoft.AspNetCore.SignalR": {
"target": "Package",
"version": "[1.2.11, )"
},
"Microsoft.EntityFrameworkCore": {
"target": "Package",
"version": "[8.0.25, )"
+524 -26
View File
@@ -241,6 +241,57 @@
"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": {
"type": "package",
"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": {
"type": "package",
"dependencies": {
@@ -417,6 +510,139 @@
"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": {
"type": "package",
"dependencies": {
@@ -1918,20 +2144,20 @@
}
}
},
"System.IO.Pipelines/6.0.3": {
"System.IO.Pipelines/8.0.0": {
"type": "package",
"compile": {
"lib/net6.0/_._": {
"lib/net8.0/System.IO.Pipelines.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net6.0/System.IO.Pipelines.dll": {
"lib/net8.0/System.IO.Pipelines.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/netcoreapp3.1/_._": {}
"buildTransitive/net6.0/_._": {}
}
},
"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": {
"type": "package",
"compile": {
@@ -1969,6 +2211,15 @@
"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": {
"type": "package",
"dependencies": {
@@ -2242,20 +2493,20 @@
"buildTransitive/net6.0/System.Text.Json.targets": {}
}
},
"System.Threading.Channels/6.0.0": {
"System.Threading.Channels/8.0.0": {
"type": "package",
"compile": {
"lib/net6.0/_._": {
"lib/net8.0/System.Threading.Channels.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net6.0/System.Threading.Channels.dll": {
"lib/net8.0/System.Threading.Channels.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/netcoreapp3.1/_._": {}
"buildTransitive/net6.0/_._": {}
}
},
"System.Threading.Tasks.Extensions/4.5.4": {
@@ -2558,6 +2809,45 @@
"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": {
"sha512": "sLHQ3ggo5kPTjR9xUXMeS4+F1uEgdC0ojyNs15RlVVoG3UysV/7n2PutH1r2MJl24QuxZeJqIZVeZB4cptijYw==",
"type": "package",
@@ -2649,6 +2939,32 @@
"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": {
"sha512": "V0MKSF9zklY3GbWTyqMiTiu95uj5O1T9N8RaLNPAUREgd2GalnYFIRApSJZ+dhhZs/eSK1zsJu7iVXWUWMq67A==",
"type": "package",
@@ -2690,6 +3006,97 @@
"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": {
"sha512": "UKPvdhi+SOMdcw0Wr90Ft62yc1+heR/B70Vs8K0VcO8v6yz53YR7/ytSsNXd4IRmRWEc4ImCBomPbBCngtScTg==",
"type": "package",
@@ -4859,27 +5266,31 @@
"system.identitymodel.tokens.jwt.nuspec"
]
},
"System.IO.Pipelines/6.0.3": {
"sha512": "ryTgF+iFkpGZY1vRQhfCzX0xTdlV3pyaTTqRu2ETbEv+HlV7O6y7hyQURnghNIXvctl5DuZ//Dpks6HdL/Txgw==",
"System.IO.Pipelines/8.0.0": {
"sha512": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==",
"type": "package",
"path": "system.io.pipelines/6.0.3",
"path": "system.io.pipelines/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/System.IO.Pipelines.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets",
"buildTransitive/netcoreapp3.1/_._",
"lib/net461/System.IO.Pipelines.dll",
"lib/net461/System.IO.Pipelines.xml",
"lib/net462/System.IO.Pipelines.dll",
"lib/net462/System.IO.Pipelines.xml",
"lib/net6.0/System.IO.Pipelines.dll",
"lib/net6.0/System.IO.Pipelines.xml",
"lib/netcoreapp3.1/System.IO.Pipelines.dll",
"lib/netcoreapp3.1/System.IO.Pipelines.xml",
"lib/net7.0/System.IO.Pipelines.dll",
"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.xml",
"system.io.pipelines.6.0.3.nupkg.sha512",
"system.io.pipelines.8.0.0.nupkg.sha512",
"system.io.pipelines.nuspec",
"useSharedDesignerContext.txt"
]
@@ -4925,6 +5336,29 @@
"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": {
"sha512": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==",
"type": "package",
@@ -4972,6 +5406,60 @@
"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": {
"sha512": "III/lNMSn0ZRBuM9m5Cgbiho5j81u0FAEagFX5ta2DKbljZ3T0IpD8j+BIiHQPeKqJppWS9bGEp6JnKnWKze0g==",
"type": "package",
@@ -5499,29 +5987,34 @@
"useSharedDesignerContext.txt"
]
},
"System.Threading.Channels/6.0.0": {
"sha512": "TY8/9+tI0mNaUMgntOxxaq2ndTkdXqLSxvPmas7XEqOlv9lQtB7wLjYGd756lOaO7Dvb5r/WXhluM+0Xe87v5Q==",
"System.Threading.Channels/8.0.0": {
"sha512": "CMaFr7v+57RW7uZfZkPExsPB6ljwzhjACWW1gfU35Y56rk72B/Wu+sTqxVmGSk4SFUlPc3cjeKND0zktziyjBA==",
"type": "package",
"path": "system.threading.channels/6.0.0",
"path": "system.threading.channels/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/System.Threading.Channels.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/System.Threading.Channels.targets",
"buildTransitive/netcoreapp3.1/_._",
"lib/net461/System.Threading.Channels.dll",
"lib/net461/System.Threading.Channels.xml",
"lib/net462/System.Threading.Channels.dll",
"lib/net462/System.Threading.Channels.xml",
"lib/net6.0/System.Threading.Channels.dll",
"lib/net6.0/System.Threading.Channels.xml",
"lib/netcoreapp3.1/System.Threading.Channels.dll",
"lib/netcoreapp3.1/System.Threading.Channels.xml",
"lib/net7.0/System.Threading.Channels.dll",
"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.xml",
"lib/netstandard2.1/System.Threading.Channels.dll",
"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",
"useSharedDesignerContext.txt"
]
@@ -5619,6 +6112,7 @@
"Microsoft.AspNetCore.Authentication >= 2.3.11",
"Microsoft.AspNetCore.Authentication.JwtBearer >= 8.0.28",
"Microsoft.AspNetCore.OpenApi >= 8.0.25",
"Microsoft.AspNetCore.SignalR >= 1.2.11",
"Microsoft.EntityFrameworkCore >= 8.0.25",
"Microsoft.EntityFrameworkCore.Design >= 8.0.25",
"Microsoft.EntityFrameworkCore.SqlServer >= 8.0.25",
@@ -5702,6 +6196,10 @@
"target": "Package",
"version": "[8.0.25, )"
},
"Microsoft.AspNetCore.SignalR": {
"target": "Package",
"version": "[1.2.11, )"
},
"Microsoft.EntityFrameworkCore": {
"target": "Package",
"version": "[8.0.25, )"
+17 -3
View File
@@ -1,6 +1,6 @@
{
"version": 2,
"dgSpecHash": "+q/KRRoXVoc=",
"dgSpecHash": "FiT+hK5G+gA=",
"success": true,
"projectFilePath": "C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj",
"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.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.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.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",
@@ -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.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.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.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.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.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",
@@ -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.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.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.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.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.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",
@@ -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.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.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.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"
+1 -1
View File
@@ -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
View File
@@ -1 +1 @@
17810953948669773
17811677268623865
+1 -1
View File
@@ -1 +1 @@
17810992112196919
17811677302595867
+6
View File
@@ -0,0 +1,6 @@
{
"name": "Knots",
"lockfileVersion": 3,
"requires": true,
"packages": {}
}