diff --git a/.gitignore b/.gitignore
index bb79fbf7..c1a78e41 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,4 +26,6 @@ bun.lock
# optional generated outputs from schema.js
schemas_orig/
schemas_nested/
-schemas_final/
\ No newline at end of file
+schemas_final/
+
+!/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/
\ No newline at end of file
diff --git a/extra/admin-api/.gitignore b/extra/admin-api/.gitignore
index f4e4961b..65497125 100644
--- a/extra/admin-api/.gitignore
+++ b/extra/admin-api/.gitignore
@@ -6,4 +6,4 @@ appsettings.Local*.json
/*.patch
Spacebar.Db/**/*.orig
-Spacebar.Db/**/*.rej
+Spacebar.Db/**/*.rej
\ No newline at end of file
diff --git a/extra/admin-api/ConfigTest/ConfigTest.csproj b/extra/admin-api/ConfigTest/ConfigTest.csproj
new file mode 100644
index 00000000..7244b673
--- /dev/null
+++ b/extra/admin-api/ConfigTest/ConfigTest.csproj
@@ -0,0 +1,20 @@
+<Project Sdk="Microsoft.NET.Sdk.Worker">
+
+ <PropertyGroup>
+ <TargetFramework>net10.0</TargetFramework>
+ <Nullable>enable</Nullable>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <UserSecretsId>dotnet-ConfigTest-18d89c0e-df5d-447b-8429-7d526a35ab13</UserSecretsId>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.1" />
+ <PackageReference Include="Microsoft.Extensions.Hosting" Version="10.0.0" />
+ <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.0" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\Spacebar.ConfigModel\Spacebar.ConfigModel.csproj" />
+ <ProjectReference Include="..\Spacebar.Db\Spacebar.Db.csproj" />
+ </ItemGroup>
+</Project>
diff --git a/extra/admin-api/ConfigTest/Program.cs b/extra/admin-api/ConfigTest/Program.cs
new file mode 100644
index 00000000..5945bcf6
--- /dev/null
+++ b/extra/admin-api/ConfigTest/Program.cs
@@ -0,0 +1,14 @@
+using ConfigTest;
+using Microsoft.EntityFrameworkCore;
+using Spacebar.Db.Contexts;
+
+var builder = Host.CreateApplicationBuilder(args);
+builder.Services.AddHostedService<Worker>();
+builder.Services.AddDbContext<SpacebarDbContext>(options => {
+ options
+ .UseNpgsql(builder.Configuration.GetConnectionString("Spacebar"))
+ .EnableDetailedErrors();
+}, ServiceLifetime.Singleton);
+
+var host = builder.Build();
+host.Run();
diff --git a/extra/admin-api/ConfigTest/Properties/launchSettings.json b/extra/admin-api/ConfigTest/Properties/launchSettings.json
new file mode 100644
index 00000000..c355f360
--- /dev/null
+++ b/extra/admin-api/ConfigTest/Properties/launchSettings.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "https://json.schemastore.org/launchsettings.json",
+ "profiles": {
+ "ConfigTest": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "environmentVariables": {
+ "DOTNET_ENVIRONMENT": "Development"
+ }
+ }
+ }
+}
diff --git a/extra/admin-api/ConfigTest/Worker.cs b/extra/admin-api/ConfigTest/Worker.cs
new file mode 100644
index 00000000..dd3ef779
--- /dev/null
+++ b/extra/admin-api/ConfigTest/Worker.cs
@@ -0,0 +1,43 @@
+using System.Text.Json.Nodes;
+using Spacebar.ConfigModel.Extensions;
+using Spacebar.Db.Contexts;
+
+namespace ConfigTest;
+
+public class Worker(ILogger<Worker> logger, SpacebarDbContext db) : BackgroundService
+{
+ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
+ {
+ var config = db.Configs
+ .OrderBy(x => x.Key)
+ .ToDictionary(x => x.Key, x => x.Value);
+ foreach (var (key, value) in config)
+ {
+ Console.WriteLine("Config Key: {0}, Value: {1}", key, value ?? "[NULL]");
+ }
+
+ var readConfig = config.ToNestedJsonObject();
+ Console.WriteLine(readConfig);
+ var mapped = readConfig.ToFlatKv();
+ foreach (var (key, value) in mapped)
+ {
+ Console.WriteLine("Mapped Key: {0}, Value: {1}", key, value ?? "[NULL]");
+ }
+
+ // check that they're equal
+ foreach (var (key, value) in config)
+ {
+ if (!mapped.ContainsKey(key))
+ {
+ Console.WriteLine("Missing Key in Mapped: {0}", key);
+ continue;
+ }
+
+ if (mapped[key] != value)
+ {
+ Console.WriteLine("Value Mismatch for Key: {0}, Original: {1}, Mapped: {2}", key, value ?? "[NULL]", mapped[key] ?? "[NULL]");
+ }
+ }
+ Environment.Exit(0);
+ }
+}
\ No newline at end of file
diff --git a/extra/admin-api/Spacebar.AdminAPI/appsettings.Development.json b/extra/admin-api/ConfigTest/appsettings.Development.json
index 03245773..03245773 100644
--- a/extra/admin-api/Spacebar.AdminAPI/appsettings.Development.json
+++ b/extra/admin-api/ConfigTest/appsettings.Development.json
diff --git a/extra/admin-api/Spacebar.AdminAPI/appsettings.json b/extra/admin-api/ConfigTest/appsettings.json
index 10f68b8c..10f68b8c 100644
--- a/extra/admin-api/Spacebar.AdminAPI/appsettings.json
+++ b/extra/admin-api/ConfigTest/appsettings.json
diff --git a/extra/admin-api/Spacebar.AdminApi/Controllers/ConfigController.cs b/extra/admin-api/Spacebar.AdminApi/Controllers/ConfigController.cs
new file mode 100644
index 00000000..96465616
--- /dev/null
+++ b/extra/admin-api/Spacebar.AdminApi/Controllers/ConfigController.cs
@@ -0,0 +1,61 @@
+using System.Text.Json.Nodes;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Spacebar.AdminApi.Extensions;
+using Spacebar.AdminApi.Models;
+using Spacebar.AdminApi.Services;
+using Spacebar.Db.Contexts;
+using Spacebar.Db.Models;
+using Spacebar.RabbitMqUtilities;
+using Spacebar.ConfigModel.Extensions;
+
+namespace Spacebar.AdminApi.Controllers;
+
+[ApiController]
+[Route("/Configuration")]
+public class ConfigController(ILogger<ConfigController> logger, SpacebarDbContext db, RabbitMQService mq, IServiceProvider sp, AuthenticationService auth) : ControllerBase {
+ private readonly ILogger<ConfigController> _logger = logger;
+
+ [HttpGet]
+ public async Task<JsonObject> Get() {
+ (await auth.GetCurrentUser(Request)).GetRights().AssertHasAllRights(SpacebarRights.Rights.OPERATOR);
+
+ var config = (await db.Configs.AsNoTracking().ToDictionaryAsync(x => x.Key, x => x.Value)).ToNestedJsonObject();
+ return config;
+ }
+
+ [HttpPost]
+ public async Task<IActionResult> Post([FromBody] JsonObject newConfig) {
+ (await auth.GetCurrentUser(Request)).GetRights().AssertHasAllRights(SpacebarRights.Rights.OPERATOR);
+
+ var flatConfig = newConfig.ToFlatKv();
+ var tasks = flatConfig.Select(async x => {
+ await using var scope = sp.CreateAsyncScope();
+ var scopedDb = scope.ServiceProvider.GetRequiredService<SpacebarDbContext>();
+ var existingConfig = await scopedDb.Configs.FindAsync(x.Key);
+ if (existingConfig != null) {
+ existingConfig.Value = x.Value;
+ scopedDb.Configs.Update(existingConfig);
+ }
+ else {
+ await scopedDb.Configs.AddAsync(new Config
+ { Key = x.Key, Value = x.Value });
+ }
+
+ await scopedDb.SaveChangesAsync();
+ });
+ await Task.WhenAll(tasks);
+ // TODO: rabbitmq
+
+ return Ok();
+ }
+
+ [HttpPost]
+ public async Task<IActionResult> ReloadConfig() {
+ (await auth.GetCurrentUser(Request)).GetRights().AssertHasAllRights(SpacebarRights.Rights.OPERATOR);
+
+ // TODO: rabbitmq
+
+ return Ok();
+ }
+}
\ No newline at end of file
diff --git a/extra/admin-api/Spacebar.AdminAPI/Controllers/GuildController.cs b/extra/admin-api/Spacebar.AdminApi/Controllers/GuildController.cs
index 03b38e64..05bd604a 100644
--- a/extra/admin-api/Spacebar.AdminAPI/Controllers/GuildController.cs
+++ b/extra/admin-api/Spacebar.AdminApi/Controllers/GuildController.cs
@@ -2,14 +2,14 @@ using ArcaneLibs.Extensions;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using RabbitMQ.Client;
-using Spacebar.AdminAPI.Extensions;
+using Spacebar.AdminApi.Extensions;
using Spacebar.AdminApi.Models;
-using Spacebar.AdminAPI.Services;
+using Spacebar.AdminApi.Services;
using Spacebar.Db.Contexts;
using Spacebar.Db.Models;
using Spacebar.RabbitMqUtilities;
-namespace Spacebar.AdminAPI.Controllers;
+namespace Spacebar.AdminApi.Controllers;
[ApiController]
[Route("/Guilds")]
diff --git a/extra/admin-api/Spacebar.AdminAPI/Controllers/Media/UserMediaController.cs b/extra/admin-api/Spacebar.AdminApi/Controllers/Media/UserMediaController.cs
index a4d915e5..f3415731 100644
--- a/extra/admin-api/Spacebar.AdminAPI/Controllers/Media/UserMediaController.cs
+++ b/extra/admin-api/Spacebar.AdminApi/Controllers/Media/UserMediaController.cs
@@ -1,13 +1,13 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
-using Spacebar.AdminAPI.Extensions;
+using Spacebar.AdminApi.Extensions;
using Spacebar.AdminApi.Models;
-using Spacebar.AdminAPI.Services;
+using Spacebar.AdminApi.Services;
using Spacebar.Db.Contexts;
using Spacebar.Db.Models;
using Spacebar.RabbitMqUtilities;
-namespace Spacebar.AdminAPI.Controllers.Media;
+namespace Spacebar.AdminApi.Controllers.Media;
[ApiController]
[Route("/media/user")]
diff --git a/extra/admin-api/Spacebar.AdminAPI/Controllers/PingController.cs b/extra/admin-api/Spacebar.AdminApi/Controllers/PingController.cs
index a2aceb50..05b6d876 100644
--- a/extra/admin-api/Spacebar.AdminAPI/Controllers/PingController.cs
+++ b/extra/admin-api/Spacebar.AdminApi/Controllers/PingController.cs
@@ -1,7 +1,7 @@
using Microsoft.AspNetCore.Mvc;
-using Spacebar.AdminAPI.Services;
+using Spacebar.AdminApi.Services;
-namespace Spacebar.AdminAPI.Controllers;
+namespace Spacebar.AdminApi.Controllers;
[ApiController]
[Route("/")]
diff --git a/extra/admin-api/Spacebar.AdminAPI/Controllers/UserController.cs b/extra/admin-api/Spacebar.AdminApi/Controllers/UserController.cs
index c727077a..505f789e 100644
--- a/extra/admin-api/Spacebar.AdminAPI/Controllers/UserController.cs
+++ b/extra/admin-api/Spacebar.AdminApi/Controllers/UserController.cs
@@ -4,14 +4,14 @@ using ArcaneLibs.Extensions;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using RabbitMQ.Client;
-using Spacebar.AdminAPI.Extensions;
+using Spacebar.AdminApi.Extensions;
using Spacebar.AdminApi.Models;
-using Spacebar.AdminAPI.Services;
+using Spacebar.AdminApi.Services;
using Spacebar.Db.Contexts;
using Spacebar.Db.Models;
using Spacebar.RabbitMqUtilities;
-namespace Spacebar.AdminAPI.Controllers;
+namespace Spacebar.AdminApi.Controllers;
[ApiController]
[Route("/users")]
diff --git a/extra/admin-api/Spacebar.AdminAPI/Extensions/DbExtensions.cs b/extra/admin-api/Spacebar.AdminApi/Extensions/DbExtensions.cs
index f6318e8f..1220de91 100644
--- a/extra/admin-api/Spacebar.AdminAPI/Extensions/DbExtensions.cs
+++ b/extra/admin-api/Spacebar.AdminApi/Extensions/DbExtensions.cs
@@ -2,7 +2,7 @@ using Microsoft.EntityFrameworkCore;
using Spacebar.AdminApi.Models;
using Spacebar.Db.Models;
-namespace Spacebar.AdminAPI.Extensions;
+namespace Spacebar.AdminApi.Extensions;
public static class DbExtensions {
public static string? GetString(this DbSet<Config> config, string key) => config.Find(key)?.Value;
diff --git a/extra/admin-api/Spacebar.AdminAPI/Middleware/AuthenticationMiddleware.cs b/extra/admin-api/Spacebar.AdminApi/Middleware/AuthenticationMiddleware.cs
index dea89586..a5144add 100644
--- a/extra/admin-api/Spacebar.AdminAPI/Middleware/AuthenticationMiddleware.cs
+++ b/extra/admin-api/Spacebar.AdminApi/Middleware/AuthenticationMiddleware.cs
@@ -1,11 +1,11 @@
using System.IdentityModel.Tokens.Jwt;
using System.Security.Cryptography;
using Microsoft.IdentityModel.Tokens;
-using Spacebar.AdminAPI.Services;
+using Spacebar.AdminApi.Services;
using Spacebar.Db.Contexts;
using Spacebar.Db.Models;
-namespace Spacebar.AdminAPI.Middleware;
+namespace Spacebar.AdminApi.Middleware;
public class AuthenticationMiddleware(RequestDelegate next) {
private static Dictionary<string, User> _userCache = new();
diff --git a/extra/admin-api/Spacebar.AdminAPI/Program.cs b/extra/admin-api/Spacebar.AdminApi/Program.cs
index 93b28b15..f3e977cb 100644
--- a/extra/admin-api/Spacebar.AdminAPI/Program.cs
+++ b/extra/admin-api/Spacebar.AdminApi/Program.cs
@@ -1,8 +1,8 @@
using System.Text.Json.Serialization;
using Microsoft.AspNetCore.Http.Timeouts;
using Microsoft.EntityFrameworkCore;
-using Spacebar.AdminAPI.Middleware;
-using Spacebar.AdminAPI.Services;
+using Spacebar.AdminApi.Middleware;
+using Spacebar.AdminApi.Services;
using Spacebar.Db.Contexts;
using Spacebar.RabbitMqUtilities;
diff --git a/extra/admin-api/Spacebar.AdminAPI/Properties/launchSettings.json b/extra/admin-api/Spacebar.AdminApi/Properties/launchSettings.json
index d362517c..d362517c 100644
--- a/extra/admin-api/Spacebar.AdminAPI/Properties/launchSettings.json
+++ b/extra/admin-api/Spacebar.AdminApi/Properties/launchSettings.json
diff --git a/extra/admin-api/Spacebar.AdminAPI/Services/AuthenticationService.cs b/extra/admin-api/Spacebar.AdminApi/Services/AuthenticationService.cs
index d402c5b9..788c8eb9 100644
--- a/extra/admin-api/Spacebar.AdminAPI/Services/AuthenticationService.cs
+++ b/extra/admin-api/Spacebar.AdminApi/Services/AuthenticationService.cs
@@ -4,7 +4,7 @@ using Microsoft.IdentityModel.Tokens;
using Spacebar.Db.Contexts;
using Spacebar.Db.Models;
-namespace Spacebar.AdminAPI.Services;
+namespace Spacebar.AdminApi.Services;
public class AuthenticationService(SpacebarDbContext db, Configuration config) {
private static Dictionary<string, User> _userCache = new();
diff --git a/extra/admin-api/Spacebar.AdminAPI/Services/Configuration.cs b/extra/admin-api/Spacebar.AdminApi/Services/Configuration.cs
index a58ef5c0..f6b2c029 100644
--- a/extra/admin-api/Spacebar.AdminAPI/Services/Configuration.cs
+++ b/extra/admin-api/Spacebar.AdminApi/Services/Configuration.cs
@@ -1,4 +1,4 @@
-namespace Spacebar.AdminAPI.Services;
+namespace Spacebar.AdminApi.Services;
public class Configuration {
public Configuration(IConfiguration configuration) {
diff --git a/extra/admin-api/Spacebar.AdminAPI/Spacebar.AdminAPI.csproj b/extra/admin-api/Spacebar.AdminApi/Spacebar.AdminApi.csproj
index 872e1188..950f8a1f 100644
--- a/extra/admin-api/Spacebar.AdminAPI/Spacebar.AdminAPI.csproj
+++ b/extra/admin-api/Spacebar.AdminApi/Spacebar.AdminApi.csproj
@@ -16,6 +16,7 @@
<ItemGroup>
<ProjectReference Include="..\Spacebar.AdminApi.Models\Spacebar.AdminApi.Models.csproj" />
+ <ProjectReference Include="..\Spacebar.ConfigModel\Spacebar.ConfigModel.csproj" />
<ProjectReference Include="..\Spacebar.Db\Spacebar.Db.csproj" />
<ProjectReference Include="..\Utilities\Spacebar.RabbitMqUtilities\Spacebar.RabbitMqUtilities.csproj" />
</ItemGroup>
diff --git a/extra/admin-api/Spacebar.AdminApi/appsettings.Development.json b/extra/admin-api/Spacebar.AdminApi/appsettings.Development.json
new file mode 100644
index 00000000..03245773
--- /dev/null
+++ b/extra/admin-api/Spacebar.AdminApi/appsettings.Development.json
@@ -0,0 +1,27 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Trace", //Warning
+ "Microsoft.AspNetCore.Mvc": "Warning", //Warning
+ "Microsoft.AspNetCore.HostFiltering": "Warning", //Warning
+ "Microsoft.AspNetCore.Cors": "Warning", //Warning
+ // "Microsoft.EntityFrameworkCore": "Warning"
+ "Microsoft.EntityFrameworkCore.Database.Command": "Debug"
+ }
+ },
+ "ConnectionStrings": {
+ "Spacebar": "Host=127.0.0.1; Username=postgres; Database=spacebar; Port=5432; Include Error Detail=true; Maximum Pool Size=1000; Command Timeout=6000; Timeout=600;",
+ },
+ "RabbitMQ": {
+ "Host": "127.0.0.1",
+ "Port": 5673,
+ "Username": "guest",
+ "Password": "guest"
+ },
+ "SpacebarAdminApi": {
+ "Enforce2FA": true,
+ "OverrideUid": null,
+ "DisableAuthentication": false
+ }
+}
diff --git a/extra/admin-api/Spacebar.AdminApi/appsettings.json b/extra/admin-api/Spacebar.AdminApi/appsettings.json
new file mode 100644
index 00000000..10f68b8c
--- /dev/null
+++ b/extra/admin-api/Spacebar.AdminApi/appsettings.json
@@ -0,0 +1,9 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "AllowedHosts": "*"
+}
diff --git a/extra/admin-api/Spacebar.AdminApi/deps.json b/extra/admin-api/Spacebar.AdminApi/deps.json
new file mode 100644
index 00000000..f1ddcb25
--- /dev/null
+++ b/extra/admin-api/Spacebar.AdminApi/deps.json
@@ -0,0 +1,447 @@
+[
+ {
+ "pname": "ArcaneLibs",
+ "version": "1.0.0-preview.20251005-232225",
+ "hash": "sha256-EsYLSiyX5Nj+ZpFb6FOcAYqDsQFSbvgm9NKaarJjK/0="
+ },
+ {
+ "pname": "ArcaneLibs.StringNormalisation",
+ "version": "1.0.0-preview.20251005-232225",
+ "hash": "sha256-CdftHRV6idRMojLMgnDRxgSOvfP1DU+9KTKyBGlwoSI="
+ },
+ {
+ "pname": "Humanizer.Core",
+ "version": "2.14.1",
+ "hash": "sha256-EXvojddPu+9JKgOG9NSQgUTfWq1RpOYw7adxDPKDJ6o="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.OpenApi",
+ "version": "10.0.0",
+ "hash": "sha256-mf3kOdkliLF4OD+CrmEhMNNDGOPKWGBOBWtX2EV5YEU="
+ },
+ {
+ "pname": "Microsoft.Build",
+ "version": "17.7.2",
+ "hash": "sha256-k35nFdPxC8t0zAltVSmAJtsepp/ubNIjPOsJ6k8jSqM="
+ },
+ {
+ "pname": "Microsoft.Build.Framework",
+ "version": "17.14.28",
+ "hash": "sha256-7RzEyIipumafwLW1xN1q23114NafG6PT0+RADElNsiM="
+ },
+ {
+ "pname": "Microsoft.Build.Framework",
+ "version": "17.7.2",
+ "hash": "sha256-fNWmVQYFTJDveAGmxEdNqJRAczV6+Ep8RA8clKBJFqw="
+ },
+ {
+ "pname": "Microsoft.Build.Tasks.Core",
+ "version": "17.14.28",
+ "hash": "sha256-M9zRXYijH2HtLlRXbrUK1a1LQ9zkT+DC9ZmMiiVZwv0="
+ },
+ {
+ "pname": "Microsoft.Build.Tasks.Core",
+ "version": "17.7.2",
+ "hash": "sha256-OrV/qWgZHzGlNUmaSfX5wDBcmg1aQeF3/OUHpSH+uZU="
+ },
+ {
+ "pname": "Microsoft.Build.Utilities.Core",
+ "version": "17.14.28",
+ "hash": "sha256-VFfO+UpyTpw2X/qiCCOCYzvMLuu7B+XVSSpJZQLkPzU="
+ },
+ {
+ "pname": "Microsoft.Build.Utilities.Core",
+ "version": "17.7.2",
+ "hash": "sha256-oatF0KfuP1nb4+OLNKg2/R/ZLO4EiACaO5leaxMEY4A="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Analyzers",
+ "version": "3.11.0",
+ "hash": "sha256-hQ2l6E6PO4m7i+ZsfFlEx+93UsLPo4IY3wDkNG11/Sw="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Common",
+ "version": "4.14.0",
+ "hash": "sha256-ne/zxH3GqoGB4OemnE8oJElG5mai+/67ASaKqwmL2BE="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.CSharp",
+ "version": "4.14.0",
+ "hash": "sha256-5Mzj3XkYYLkwDWh17r1NEXSbXwwWYQPiOmkSMlgo1JY="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.CSharp.Workspaces",
+ "version": "4.14.0",
+ "hash": "sha256-aNbV1a0yYBs0fpQawG6LXcbyoE8en+YFSpV5vcYE4J4="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Workspaces.Common",
+ "version": "4.14.0",
+ "hash": "sha256-0YfeaJe01WBUm9avy4a8FacQJXA1NkpnDpiXu4yz88I="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Workspaces.MSBuild",
+ "version": "4.14.0",
+ "hash": "sha256-5SJfpRqzqCK0UbkmAaJpA/r1XJb0YAriMMeQHYC4d+o="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore",
+ "version": "10.0.0",
+ "hash": "sha256-xfgrlxhtOkQwF5Q7j8gSm41URJiH8IuJ/T/Dh88++hE="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore",
+ "version": "10.0.1",
+ "hash": "sha256-IxA+/nDA6hZkUm9bDT6bRu8+9qeHA3gbTvIhR9Ncg4w="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-UDgZbRQcGPaKsE53EH6bvJiv+Q4KSxAbnsVhTVFGG4Q="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-FMGXhAAgcVSedV0/GmUVqAwoiRzFJil9mQYr6eNgowg="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Analyzers",
+ "version": "10.0.0",
+ "hash": "sha256-7Q0jYJO50cqGI+u6gLpootbB8GZvgsgtg0F9FZI1jig="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Analyzers",
+ "version": "10.0.1",
+ "hash": "sha256-O949vr98WoSRXtiIo0ZI6dz2cibIBKbiuC+mQOe9bV4="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Design",
+ "version": "10.0.1",
+ "hash": "sha256-GGNZIGNEMhSGaMRFkRN4bOuCUBs5YVnX8klXarm319U="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Relational",
+ "version": "10.0.0",
+ "hash": "sha256-vOP2CE5YA551BlpbOuIy6RuAiAEPEpCVS1cEE33/zN4="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Relational",
+ "version": "10.0.1",
+ "hash": "sha256-zLgxr/iW9HP8Fip1IDgr7X0Ar8OWKDvVmoEt65gG6VY="
+ },
+ {
+ "pname": "Microsoft.Extensions.Caching.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-qVLAEqxPK/dNq+z1a6D9NqdcSg/18sfzZhlBWMkqV/A="
+ },
+ {
+ "pname": "Microsoft.Extensions.Caching.Memory",
+ "version": "10.0.0",
+ "hash": "sha256-AMgDSm1k6q0s17spGtyR5q8nAqUFDOxl/Fe38f9M+d4="
+ },
+ {
+ "pname": "Microsoft.Extensions.Caching.Memory",
+ "version": "10.0.1",
+ "hash": "sha256-Qb7xK6VEZDas0lJFaW1suKdFjtkSYwLHHxkQEfWIU2A="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration",
+ "version": "10.0.0",
+ "hash": "sha256-MsLskVPpkCvov5+DWIaALCt1qfRRX4u228eHxvpE0dg="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-GcgrnTAieCV7AVT13zyOjfwwL86e99iiO/MiMOxPGG0="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-s4PDp+vtzdxKIxnOT3+dDRoTDopyl8kqmmw4KDnkOtQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.Binder",
+ "version": "10.0.0",
+ "hash": "sha256-YSiWoA3VQR22k6+bSEAUqeG7UDzZlJfHWDTubUO5V8U="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection",
+ "version": "10.0.1",
+ "hash": "sha256-RKOB+zPrtQNUbJY/1jR54rKOM8KHPgynPExxugku3I8="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection",
+ "version": "9.0.0",
+ "hash": "sha256-dAH52PPlTLn7X+1aI/7npdrDzMEFPMXRv4isV1a+14k="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-9iodXP39YqgxomnOPOxd/mzbG0JfOSXzFoNU3omT2Ps="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-zNUpau51ds7iQTaSUTFtyTHIUoinYc129W50CnufMdQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
+ "version": "9.0.0",
+ "hash": "sha256-CncVwkKZ5CsIG2O0+OM9qXuYXh3p6UGyueTHSLDVL+c="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyModel",
+ "version": "10.0.1",
+ "hash": "sha256-XIj2jEURe25YA4RhBSuCqQpic0YP+TZaO/dbBPCjad8="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging",
+ "version": "10.0.0",
+ "hash": "sha256-P+zPAadLL63k/GqK34/qChqQjY9aIRxZfxlB9lqsSrs="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging",
+ "version": "10.0.1",
+ "hash": "sha256-zuLP3SIpCToMOlIPOEv3Kq8y/minecd8k8GSkxFo13E="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging",
+ "version": "9.0.0",
+ "hash": "sha256-kR16c+N8nQrWeYLajqnXPg7RiXjZMSFLnKLEs4VfjcM="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-BnhgGZc01HwTSxogavq7Ueq4V7iMA3wPnbfRwQ4RhGk="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-NRk0feNE1fgi/hyO0AVDbSGJQRT+9yte6Lpm4Hz/2Bs="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "9.0.0",
+ "hash": "sha256-iBTs9twjWXFeERt4CErkIIcoJZU1jrd1RWCI8V5j7KU="
+ },
+ {
+ "pname": "Microsoft.Extensions.Options",
+ "version": "10.0.1",
+ "hash": "sha256-vBiSS1vqAC7eDrpJNT4H3A9qLikCSAepnNRbry0mKnk="
+ },
+ {
+ "pname": "Microsoft.Extensions.Options",
+ "version": "9.0.0",
+ "hash": "sha256-DT5euAQY/ItB5LPI8WIp6Dnd0lSvBRP35vFkOXC68ck="
+ },
+ {
+ "pname": "Microsoft.Extensions.Primitives",
+ "version": "10.0.0",
+ "hash": "sha256-Dup08KcptLjlnpN5t5//+p4n8FUTgRAq4n/w1s6us+I="
+ },
+ {
+ "pname": "Microsoft.Extensions.Primitives",
+ "version": "10.0.1",
+ "hash": "sha256-EXmukq09erT4s+miQpBSYy3IY4HxxKlwEPL43/KoyEc="
+ },
+ {
+ "pname": "Microsoft.Extensions.Primitives",
+ "version": "9.0.0",
+ "hash": "sha256-ZNLusK1CRuq5BZYZMDqaz04PIKScE2Z7sS2tehU7EJs="
+ },
+ {
+ "pname": "Microsoft.IdentityModel.Abstractions",
+ "version": "8.15.0",
+ "hash": "sha256-LKTvERNUTMCEF7xs377tCMwOMRki93OS4kh6Yv0uXJ4="
+ },
+ {
+ "pname": "Microsoft.IdentityModel.JsonWebTokens",
+ "version": "8.15.0",
+ "hash": "sha256-LwzKiGjcnORvmQ9tim6lomXpfVlPpd/fE8FKTFWKlpM="
+ },
+ {
+ "pname": "Microsoft.IdentityModel.Logging",
+ "version": "8.15.0",
+ "hash": "sha256-mMXwsjGcrrmHR1mG7BLTKg/30mX+m93QVX17/ynOOd4="
+ },
+ {
+ "pname": "Microsoft.IdentityModel.Tokens",
+ "version": "8.15.0",
+ "hash": "sha256-7Lo/TsvqgNCEMyFssO3Om233521Pqgb9K9lUeHc5HMk="
+ },
+ {
+ "pname": "Microsoft.NET.StringTools",
+ "version": "17.14.28",
+ "hash": "sha256-UzREyvDxkiOQ4cEOQ5UCjkwXGrldIDCcbefECTPGjXI="
+ },
+ {
+ "pname": "Microsoft.NET.StringTools",
+ "version": "17.7.2",
+ "hash": "sha256-hQE07TCgcQuyu9ZHVq2gPDb0+xe8ECJUdrgh17bJP4o="
+ },
+ {
+ "pname": "Microsoft.OpenApi",
+ "version": "2.0.0",
+ "hash": "sha256-8eiM3Mx4Hx1etx52RlczoHG2z9XIpWgu2LQtWSt086k="
+ },
+ {
+ "pname": "Mono.TextTemplating",
+ "version": "3.0.0",
+ "hash": "sha256-VlgGDvgNZb7MeBbIZ4DE2Nn/j2aD9k6XqNHnASUSDr0="
+ },
+ {
+ "pname": "Newtonsoft.Json",
+ "version": "13.0.3",
+ "hash": "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc="
+ },
+ {
+ "pname": "Npgsql",
+ "version": "10.0.0",
+ "hash": "sha256-UVKz9dH/rVCCbMyFdqA31RYpht1XgDRLIqUy0Dp9ACQ="
+ },
+ {
+ "pname": "Npgsql.EntityFrameworkCore.PostgreSQL",
+ "version": "10.0.0",
+ "hash": "sha256-XIJxnTMektQVP1qtslEIGbmBGrIQsvjQjCMRTs9UIbg="
+ },
+ {
+ "pname": "RabbitMQ.Client",
+ "version": "7.2.0",
+ "hash": "sha256-NkEb2ey0jo/OAeaVOUwIeSbeplqkOsgv1+ys8ZQgemQ="
+ },
+ {
+ "pname": "System.CodeDom",
+ "version": "6.0.0",
+ "hash": "sha256-uPetUFZyHfxjScu5x4agjk9pIhbCkt5rG4Axj25npcQ="
+ },
+ {
+ "pname": "System.CodeDom",
+ "version": "7.0.0",
+ "hash": "sha256-7IPt39cY+0j0ZcRr/J45xPtEjnSXdUJ/5ai3ebaYQiE="
+ },
+ {
+ "pname": "System.CodeDom",
+ "version": "9.0.0",
+ "hash": "sha256-578lcBgswW0eM16r0EnJzfGodPx86RxxFoZHc2PSzsw="
+ },
+ {
+ "pname": "System.Composition",
+ "version": "9.0.0",
+ "hash": "sha256-FehOkQ2u1p8mQ0/wn3cZ+24HjhTLdck8VZYWA1CcgbM="
+ },
+ {
+ "pname": "System.Composition.AttributedModel",
+ "version": "9.0.0",
+ "hash": "sha256-a7y7H6zj+kmYkllNHA402DoVfY9IaqC3Ooys8Vzl24M="
+ },
+ {
+ "pname": "System.Composition.Convention",
+ "version": "9.0.0",
+ "hash": "sha256-tw4vE5JRQ60ubTZBbxoMPhtjOQCC3XoDFUH7NHO7o8U="
+ },
+ {
+ "pname": "System.Composition.Hosting",
+ "version": "9.0.0",
+ "hash": "sha256-oOxU+DPEEfMCuNLgW6wSkZp0JY5gYt44FJNnWt+967s="
+ },
+ {
+ "pname": "System.Composition.Runtime",
+ "version": "9.0.0",
+ "hash": "sha256-AyIe+di1TqwUBbSJ/sJ8Q8tzsnTN+VBdJw4K8xZz43s="
+ },
+ {
+ "pname": "System.Composition.TypedParts",
+ "version": "9.0.0",
+ "hash": "sha256-F5fpTUs3Rr7yP/NyIzr+Xn5NdTXXp8rrjBnF9UBBUog="
+ },
+ {
+ "pname": "System.Configuration.ConfigurationManager",
+ "version": "7.0.0",
+ "hash": "sha256-SgBexTTjRn23uuXvkzO0mz0qOfA23MiS4Wv+qepMLZE="
+ },
+ {
+ "pname": "System.Configuration.ConfigurationManager",
+ "version": "9.0.0",
+ "hash": "sha256-+pLnTC0YDP6Kjw5DVBiFrV/Q3x5is/+6N6vAtjvhVWk="
+ },
+ {
+ "pname": "System.Diagnostics.EventLog",
+ "version": "9.0.0",
+ "hash": "sha256-tPvt6yoAp56sK/fe+/ei8M65eavY2UUhRnbrREj/Ems="
+ },
+ {
+ "pname": "System.Formats.Nrbf",
+ "version": "9.0.0",
+ "hash": "sha256-c4qf6CocQUZB0ySGQd8s15PXY7xfrjQqMGXxkwytKyw="
+ },
+ {
+ "pname": "System.IdentityModel.Tokens.Jwt",
+ "version": "8.15.0",
+ "hash": "sha256-5O0wbGp0gWnukK+0mWBjMnP1bZc6N0xuNcO2qmFiUX8="
+ },
+ {
+ "pname": "System.Reflection.MetadataLoadContext",
+ "version": "7.0.0",
+ "hash": "sha256-VYl6SFD130K9Aw4eJH16ApJ9Sau4Xu0dcxEip2veuTI="
+ },
+ {
+ "pname": "System.Resources.Extensions",
+ "version": "9.0.0",
+ "hash": "sha256-y2gLEMuAy6QfEyNJxABC/ayMWGnwlpX735jsUQLktho="
+ },
+ {
+ "pname": "System.Security.Cryptography.Pkcs",
+ "version": "7.0.0",
+ "hash": "sha256-3J3vL9hcKSuZjT2GKappa2A9p2xJm1nH2asTNAl8ZCA="
+ },
+ {
+ "pname": "System.Security.Cryptography.Pkcs",
+ "version": "7.0.2",
+ "hash": "sha256-qS5Z/Yo8J+f3ExVX5Qkcpj1Z57oUZqz5rWa1h5bVpl8="
+ },
+ {
+ "pname": "System.Security.Cryptography.Pkcs",
+ "version": "9.0.0",
+ "hash": "sha256-AjG14mGeSc2Ka4QSelGBM1LrGBW3VJX60lnihKyJjGY="
+ },
+ {
+ "pname": "System.Security.Cryptography.ProtectedData",
+ "version": "9.0.0",
+ "hash": "sha256-gPgPU7k/InTqmXoRzQfUMEKL3QuTnOKowFqmXTnWaBQ="
+ },
+ {
+ "pname": "System.Security.Cryptography.Xml",
+ "version": "7.0.1",
+ "hash": "sha256-CH8+JVC8LyCSW75/6ZQ7ecMbSOAE1c16z4dG8JTp01w="
+ },
+ {
+ "pname": "System.Security.Cryptography.Xml",
+ "version": "9.0.0",
+ "hash": "sha256-SQJWwAFrJUddEU6JiZB52FM9tGjRlJAYH8oYVzG5IJU="
+ },
+ {
+ "pname": "System.Security.Permissions",
+ "version": "7.0.0",
+ "hash": "sha256-DOFoX+AKRmrkllykHheR8FfUXYx/Ph+I/HYuReQydXI="
+ },
+ {
+ "pname": "System.Security.Permissions",
+ "version": "9.0.0",
+ "hash": "sha256-BFrA9ottmQtLIAiKiGRbfSUpzNJwuaOCeFRDN4Z0ku0="
+ },
+ {
+ "pname": "System.Threading.RateLimiting",
+ "version": "8.0.0",
+ "hash": "sha256-KOEWEt6ZthvZHJ2Wp70d9nBhBrPqobGQDi2twlKYh/w="
+ },
+ {
+ "pname": "System.Windows.Extensions",
+ "version": "9.0.0",
+ "hash": "sha256-RErD+Ju15qtnwdwB7E0SjjJGAnhXwJyC7UPcl24Z3Vs="
+ },
+ {
+ "pname": "Unidecode.NET",
+ "version": "2.1.0",
+ "hash": "sha256-nfxHxG/YwRftOP+wiSW8NL5hIVwt+wnfRb0lURjrZoc="
+ }
+]
diff --git a/extra/admin-api/Spacebar.CleanSettingsRows/deps.json b/extra/admin-api/Spacebar.CleanSettingsRows/deps.json
new file mode 100644
index 00000000..2938cdaa
--- /dev/null
+++ b/extra/admin-api/Spacebar.CleanSettingsRows/deps.json
@@ -0,0 +1,492 @@
+[
+ {
+ "pname": "Humanizer.Core",
+ "version": "2.14.1",
+ "hash": "sha256-EXvojddPu+9JKgOG9NSQgUTfWq1RpOYw7adxDPKDJ6o="
+ },
+ {
+ "pname": "Microsoft.Build",
+ "version": "17.7.2",
+ "hash": "sha256-k35nFdPxC8t0zAltVSmAJtsepp/ubNIjPOsJ6k8jSqM="
+ },
+ {
+ "pname": "Microsoft.Build.Framework",
+ "version": "17.14.28",
+ "hash": "sha256-7RzEyIipumafwLW1xN1q23114NafG6PT0+RADElNsiM="
+ },
+ {
+ "pname": "Microsoft.Build.Framework",
+ "version": "17.7.2",
+ "hash": "sha256-fNWmVQYFTJDveAGmxEdNqJRAczV6+Ep8RA8clKBJFqw="
+ },
+ {
+ "pname": "Microsoft.Build.Tasks.Core",
+ "version": "17.14.28",
+ "hash": "sha256-M9zRXYijH2HtLlRXbrUK1a1LQ9zkT+DC9ZmMiiVZwv0="
+ },
+ {
+ "pname": "Microsoft.Build.Tasks.Core",
+ "version": "17.7.2",
+ "hash": "sha256-OrV/qWgZHzGlNUmaSfX5wDBcmg1aQeF3/OUHpSH+uZU="
+ },
+ {
+ "pname": "Microsoft.Build.Utilities.Core",
+ "version": "17.14.28",
+ "hash": "sha256-VFfO+UpyTpw2X/qiCCOCYzvMLuu7B+XVSSpJZQLkPzU="
+ },
+ {
+ "pname": "Microsoft.Build.Utilities.Core",
+ "version": "17.7.2",
+ "hash": "sha256-oatF0KfuP1nb4+OLNKg2/R/ZLO4EiACaO5leaxMEY4A="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Analyzers",
+ "version": "3.11.0",
+ "hash": "sha256-hQ2l6E6PO4m7i+ZsfFlEx+93UsLPo4IY3wDkNG11/Sw="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Common",
+ "version": "4.14.0",
+ "hash": "sha256-ne/zxH3GqoGB4OemnE8oJElG5mai+/67ASaKqwmL2BE="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.CSharp",
+ "version": "4.14.0",
+ "hash": "sha256-5Mzj3XkYYLkwDWh17r1NEXSbXwwWYQPiOmkSMlgo1JY="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.CSharp.Workspaces",
+ "version": "4.14.0",
+ "hash": "sha256-aNbV1a0yYBs0fpQawG6LXcbyoE8en+YFSpV5vcYE4J4="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Workspaces.Common",
+ "version": "4.14.0",
+ "hash": "sha256-0YfeaJe01WBUm9avy4a8FacQJXA1NkpnDpiXu4yz88I="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Workspaces.MSBuild",
+ "version": "4.14.0",
+ "hash": "sha256-5SJfpRqzqCK0UbkmAaJpA/r1XJb0YAriMMeQHYC4d+o="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore",
+ "version": "10.0.0",
+ "hash": "sha256-xfgrlxhtOkQwF5Q7j8gSm41URJiH8IuJ/T/Dh88++hE="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore",
+ "version": "10.0.1",
+ "hash": "sha256-IxA+/nDA6hZkUm9bDT6bRu8+9qeHA3gbTvIhR9Ncg4w="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-UDgZbRQcGPaKsE53EH6bvJiv+Q4KSxAbnsVhTVFGG4Q="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-FMGXhAAgcVSedV0/GmUVqAwoiRzFJil9mQYr6eNgowg="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Analyzers",
+ "version": "10.0.0",
+ "hash": "sha256-7Q0jYJO50cqGI+u6gLpootbB8GZvgsgtg0F9FZI1jig="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Analyzers",
+ "version": "10.0.1",
+ "hash": "sha256-O949vr98WoSRXtiIo0ZI6dz2cibIBKbiuC+mQOe9bV4="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Design",
+ "version": "10.0.1",
+ "hash": "sha256-GGNZIGNEMhSGaMRFkRN4bOuCUBs5YVnX8klXarm319U="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Relational",
+ "version": "10.0.0",
+ "hash": "sha256-vOP2CE5YA551BlpbOuIy6RuAiAEPEpCVS1cEE33/zN4="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Relational",
+ "version": "10.0.1",
+ "hash": "sha256-zLgxr/iW9HP8Fip1IDgr7X0Ar8OWKDvVmoEt65gG6VY="
+ },
+ {
+ "pname": "Microsoft.Extensions.Caching.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-qVLAEqxPK/dNq+z1a6D9NqdcSg/18sfzZhlBWMkqV/A="
+ },
+ {
+ "pname": "Microsoft.Extensions.Caching.Memory",
+ "version": "10.0.0",
+ "hash": "sha256-AMgDSm1k6q0s17spGtyR5q8nAqUFDOxl/Fe38f9M+d4="
+ },
+ {
+ "pname": "Microsoft.Extensions.Caching.Memory",
+ "version": "10.0.1",
+ "hash": "sha256-Qb7xK6VEZDas0lJFaW1suKdFjtkSYwLHHxkQEfWIU2A="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration",
+ "version": "10.0.0",
+ "hash": "sha256-MsLskVPpkCvov5+DWIaALCt1qfRRX4u228eHxvpE0dg="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-GcgrnTAieCV7AVT13zyOjfwwL86e99iiO/MiMOxPGG0="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-s4PDp+vtzdxKIxnOT3+dDRoTDopyl8kqmmw4KDnkOtQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.Binder",
+ "version": "10.0.0",
+ "hash": "sha256-YSiWoA3VQR22k6+bSEAUqeG7UDzZlJfHWDTubUO5V8U="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.CommandLine",
+ "version": "10.0.0",
+ "hash": "sha256-ldTiRFqnv8/pA0gl6UR+4DDGAIZOf9+MhaLWOuKOXOI="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.EnvironmentVariables",
+ "version": "10.0.0",
+ "hash": "sha256-UayfeqrAmNyfOkuhcBKfj8UpjQqV/ZMqWrDyxCSG1MA="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.FileExtensions",
+ "version": "10.0.0",
+ "hash": "sha256-rN+3rqrHiTaBfHgP+E4dA8Qm2cFJPfbEcd93yKLsqlQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.Json",
+ "version": "10.0.0",
+ "hash": "sha256-VCFukgsxiQ2MFGE6RDMFTGopBHbcZL2t0ER7ENaFXRY="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.UserSecrets",
+ "version": "10.0.0",
+ "hash": "sha256-uIoIpbDPRMfFqT8Y6j/wHbFCAly6H1N9qpxnomRbHIo="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection",
+ "version": "10.0.0",
+ "hash": "sha256-LYm9hVlo/R9c2aAKHsDYJ5vY9U0+3Jvclme3ou3BtvQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection",
+ "version": "10.0.1",
+ "hash": "sha256-RKOB+zPrtQNUbJY/1jR54rKOM8KHPgynPExxugku3I8="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection",
+ "version": "9.0.0",
+ "hash": "sha256-dAH52PPlTLn7X+1aI/7npdrDzMEFPMXRv4isV1a+14k="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-9iodXP39YqgxomnOPOxd/mzbG0JfOSXzFoNU3omT2Ps="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-zNUpau51ds7iQTaSUTFtyTHIUoinYc129W50CnufMdQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
+ "version": "9.0.0",
+ "hash": "sha256-CncVwkKZ5CsIG2O0+OM9qXuYXh3p6UGyueTHSLDVL+c="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyModel",
+ "version": "10.0.1",
+ "hash": "sha256-XIj2jEURe25YA4RhBSuCqQpic0YP+TZaO/dbBPCjad8="
+ },
+ {
+ "pname": "Microsoft.Extensions.Diagnostics",
+ "version": "10.0.0",
+ "hash": "sha256-o7QkCisEcFIh227qBUfWFci2ns4cgEpLqpX7YvHGToQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.Diagnostics.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-cix7QxQ/g3sj6reXu3jn0cRv2RijzceaLLkchEGTt5E="
+ },
+ {
+ "pname": "Microsoft.Extensions.FileProviders.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-CHDs2HCN8QcfuYQpgNVszZ5dfXFe4yS9K2GoQXecc20="
+ },
+ {
+ "pname": "Microsoft.Extensions.FileProviders.Physical",
+ "version": "10.0.0",
+ "hash": "sha256-2Rw/cwBO+/A3QY2IjN/c8Y0LhtC1qTBL7VdJiD1J2UQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.FileSystemGlobbing",
+ "version": "10.0.0",
+ "hash": "sha256-ETfVTdsdBtp69EggLg/AARTQW4lLQYVdVldXIQrsjZA="
+ },
+ {
+ "pname": "Microsoft.Extensions.Hosting",
+ "version": "10.0.0",
+ "hash": "sha256-tY0g6lCy2yFprE+NmriiU6FGmwpzxV8LqE0ZFNKIwuM="
+ },
+ {
+ "pname": "Microsoft.Extensions.Hosting.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-Sub3Thay/+eR84cEODk/nPh1oYIYtawvDX6r0duReqo="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging",
+ "version": "10.0.0",
+ "hash": "sha256-P+zPAadLL63k/GqK34/qChqQjY9aIRxZfxlB9lqsSrs="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging",
+ "version": "10.0.1",
+ "hash": "sha256-zuLP3SIpCToMOlIPOEv3Kq8y/minecd8k8GSkxFo13E="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging",
+ "version": "9.0.0",
+ "hash": "sha256-kR16c+N8nQrWeYLajqnXPg7RiXjZMSFLnKLEs4VfjcM="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-BnhgGZc01HwTSxogavq7Ueq4V7iMA3wPnbfRwQ4RhGk="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-NRk0feNE1fgi/hyO0AVDbSGJQRT+9yte6Lpm4Hz/2Bs="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "9.0.0",
+ "hash": "sha256-iBTs9twjWXFeERt4CErkIIcoJZU1jrd1RWCI8V5j7KU="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Configuration",
+ "version": "10.0.0",
+ "hash": "sha256-7/TWO1aq8hdgbcTEKDBWIjgSC9KpFN3kRnMX+12bOkU="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Console",
+ "version": "10.0.0",
+ "hash": "sha256-Rsblo7GSMTOr43876KkdvqS6wU9Typ1yoFK3tL50CBk="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Debug",
+ "version": "10.0.0",
+ "hash": "sha256-n/+KRVlsgKm17cJImaoAPHAObHpApW/hf6mMsQFGrvY="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.EventLog",
+ "version": "10.0.0",
+ "hash": "sha256-4RJ2r80RtI3QUAhCAYbGnA0YcTmouqtZvQU9o3CrB38="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.EventSource",
+ "version": "10.0.0",
+ "hash": "sha256-tqC13Qwkf4x14iGxOYlXTyeoN8KPVX+mupv2LdpzGHo="
+ },
+ {
+ "pname": "Microsoft.Extensions.Options",
+ "version": "10.0.0",
+ "hash": "sha256-j5MOqZSKeUtxxzmZjzZMGy0vELHdvPraqwTQQQNVsYA="
+ },
+ {
+ "pname": "Microsoft.Extensions.Options",
+ "version": "10.0.1",
+ "hash": "sha256-vBiSS1vqAC7eDrpJNT4H3A9qLikCSAepnNRbry0mKnk="
+ },
+ {
+ "pname": "Microsoft.Extensions.Options",
+ "version": "9.0.0",
+ "hash": "sha256-DT5euAQY/ItB5LPI8WIp6Dnd0lSvBRP35vFkOXC68ck="
+ },
+ {
+ "pname": "Microsoft.Extensions.Options.ConfigurationExtensions",
+ "version": "10.0.0",
+ "hash": "sha256-XGAs5DxMvWnmjX8dqRwKY0vsuS40SHvsfJqB1rO4L7k="
+ },
+ {
+ "pname": "Microsoft.Extensions.Primitives",
+ "version": "10.0.0",
+ "hash": "sha256-Dup08KcptLjlnpN5t5//+p4n8FUTgRAq4n/w1s6us+I="
+ },
+ {
+ "pname": "Microsoft.Extensions.Primitives",
+ "version": "10.0.1",
+ "hash": "sha256-EXmukq09erT4s+miQpBSYy3IY4HxxKlwEPL43/KoyEc="
+ },
+ {
+ "pname": "Microsoft.Extensions.Primitives",
+ "version": "9.0.0",
+ "hash": "sha256-ZNLusK1CRuq5BZYZMDqaz04PIKScE2Z7sS2tehU7EJs="
+ },
+ {
+ "pname": "Microsoft.NET.StringTools",
+ "version": "17.14.28",
+ "hash": "sha256-UzREyvDxkiOQ4cEOQ5UCjkwXGrldIDCcbefECTPGjXI="
+ },
+ {
+ "pname": "Microsoft.NET.StringTools",
+ "version": "17.7.2",
+ "hash": "sha256-hQE07TCgcQuyu9ZHVq2gPDb0+xe8ECJUdrgh17bJP4o="
+ },
+ {
+ "pname": "Mono.TextTemplating",
+ "version": "3.0.0",
+ "hash": "sha256-VlgGDvgNZb7MeBbIZ4DE2Nn/j2aD9k6XqNHnASUSDr0="
+ },
+ {
+ "pname": "Newtonsoft.Json",
+ "version": "13.0.3",
+ "hash": "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc="
+ },
+ {
+ "pname": "Npgsql",
+ "version": "10.0.0",
+ "hash": "sha256-UVKz9dH/rVCCbMyFdqA31RYpht1XgDRLIqUy0Dp9ACQ="
+ },
+ {
+ "pname": "Npgsql.EntityFrameworkCore.PostgreSQL",
+ "version": "10.0.0",
+ "hash": "sha256-XIJxnTMektQVP1qtslEIGbmBGrIQsvjQjCMRTs9UIbg="
+ },
+ {
+ "pname": "System.CodeDom",
+ "version": "6.0.0",
+ "hash": "sha256-uPetUFZyHfxjScu5x4agjk9pIhbCkt5rG4Axj25npcQ="
+ },
+ {
+ "pname": "System.CodeDom",
+ "version": "7.0.0",
+ "hash": "sha256-7IPt39cY+0j0ZcRr/J45xPtEjnSXdUJ/5ai3ebaYQiE="
+ },
+ {
+ "pname": "System.CodeDom",
+ "version": "9.0.0",
+ "hash": "sha256-578lcBgswW0eM16r0EnJzfGodPx86RxxFoZHc2PSzsw="
+ },
+ {
+ "pname": "System.Composition",
+ "version": "9.0.0",
+ "hash": "sha256-FehOkQ2u1p8mQ0/wn3cZ+24HjhTLdck8VZYWA1CcgbM="
+ },
+ {
+ "pname": "System.Composition.AttributedModel",
+ "version": "9.0.0",
+ "hash": "sha256-a7y7H6zj+kmYkllNHA402DoVfY9IaqC3Ooys8Vzl24M="
+ },
+ {
+ "pname": "System.Composition.Convention",
+ "version": "9.0.0",
+ "hash": "sha256-tw4vE5JRQ60ubTZBbxoMPhtjOQCC3XoDFUH7NHO7o8U="
+ },
+ {
+ "pname": "System.Composition.Hosting",
+ "version": "9.0.0",
+ "hash": "sha256-oOxU+DPEEfMCuNLgW6wSkZp0JY5gYt44FJNnWt+967s="
+ },
+ {
+ "pname": "System.Composition.Runtime",
+ "version": "9.0.0",
+ "hash": "sha256-AyIe+di1TqwUBbSJ/sJ8Q8tzsnTN+VBdJw4K8xZz43s="
+ },
+ {
+ "pname": "System.Composition.TypedParts",
+ "version": "9.0.0",
+ "hash": "sha256-F5fpTUs3Rr7yP/NyIzr+Xn5NdTXXp8rrjBnF9UBBUog="
+ },
+ {
+ "pname": "System.Configuration.ConfigurationManager",
+ "version": "7.0.0",
+ "hash": "sha256-SgBexTTjRn23uuXvkzO0mz0qOfA23MiS4Wv+qepMLZE="
+ },
+ {
+ "pname": "System.Configuration.ConfigurationManager",
+ "version": "9.0.0",
+ "hash": "sha256-+pLnTC0YDP6Kjw5DVBiFrV/Q3x5is/+6N6vAtjvhVWk="
+ },
+ {
+ "pname": "System.Diagnostics.EventLog",
+ "version": "10.0.0",
+ "hash": "sha256-pN3tld926Fp0n5ZNjjzIJviUQrynlOAB0vhc1aoso6E="
+ },
+ {
+ "pname": "System.Diagnostics.EventLog",
+ "version": "9.0.0",
+ "hash": "sha256-tPvt6yoAp56sK/fe+/ei8M65eavY2UUhRnbrREj/Ems="
+ },
+ {
+ "pname": "System.Formats.Nrbf",
+ "version": "9.0.0",
+ "hash": "sha256-c4qf6CocQUZB0ySGQd8s15PXY7xfrjQqMGXxkwytKyw="
+ },
+ {
+ "pname": "System.Reflection.MetadataLoadContext",
+ "version": "7.0.0",
+ "hash": "sha256-VYl6SFD130K9Aw4eJH16ApJ9Sau4Xu0dcxEip2veuTI="
+ },
+ {
+ "pname": "System.Resources.Extensions",
+ "version": "9.0.0",
+ "hash": "sha256-y2gLEMuAy6QfEyNJxABC/ayMWGnwlpX735jsUQLktho="
+ },
+ {
+ "pname": "System.Security.Cryptography.Pkcs",
+ "version": "7.0.0",
+ "hash": "sha256-3J3vL9hcKSuZjT2GKappa2A9p2xJm1nH2asTNAl8ZCA="
+ },
+ {
+ "pname": "System.Security.Cryptography.Pkcs",
+ "version": "7.0.2",
+ "hash": "sha256-qS5Z/Yo8J+f3ExVX5Qkcpj1Z57oUZqz5rWa1h5bVpl8="
+ },
+ {
+ "pname": "System.Security.Cryptography.Pkcs",
+ "version": "9.0.0",
+ "hash": "sha256-AjG14mGeSc2Ka4QSelGBM1LrGBW3VJX60lnihKyJjGY="
+ },
+ {
+ "pname": "System.Security.Cryptography.ProtectedData",
+ "version": "9.0.0",
+ "hash": "sha256-gPgPU7k/InTqmXoRzQfUMEKL3QuTnOKowFqmXTnWaBQ="
+ },
+ {
+ "pname": "System.Security.Cryptography.Xml",
+ "version": "7.0.1",
+ "hash": "sha256-CH8+JVC8LyCSW75/6ZQ7ecMbSOAE1c16z4dG8JTp01w="
+ },
+ {
+ "pname": "System.Security.Cryptography.Xml",
+ "version": "9.0.0",
+ "hash": "sha256-SQJWwAFrJUddEU6JiZB52FM9tGjRlJAYH8oYVzG5IJU="
+ },
+ {
+ "pname": "System.Security.Permissions",
+ "version": "7.0.0",
+ "hash": "sha256-DOFoX+AKRmrkllykHheR8FfUXYx/Ph+I/HYuReQydXI="
+ },
+ {
+ "pname": "System.Security.Permissions",
+ "version": "9.0.0",
+ "hash": "sha256-BFrA9ottmQtLIAiKiGRbfSUpzNJwuaOCeFRDN4Z0ku0="
+ },
+ {
+ "pname": "System.Windows.Extensions",
+ "version": "9.0.0",
+ "hash": "sha256-RErD+Ju15qtnwdwB7E0SjjJGAnhXwJyC7UPcl24Z3Vs="
+ }
+]
diff --git a/extra/admin-api/Spacebar.ConfigModel/Class1.cs b/extra/admin-api/Spacebar.ConfigModel/Class1.cs
new file mode 100644
index 00000000..948ca91a
--- /dev/null
+++ b/extra/admin-api/Spacebar.ConfigModel/Class1.cs
@@ -0,0 +1,64 @@
+using System.Text.Json.Serialization;
+
+namespace Spacebar.ConfigModel;
+
+public class Config
+{
+ [JsonPropertyName("admin")] public EndpointConfig Admin { get; set; } = null!;
+ [JsonPropertyName("api")] public EndpointConfig Api { get; set; } = null!;
+ [JsonPropertyName("gateway")] public EndpointConfig Gateway { get; set; } = null!;
+ [JsonPropertyName("cdn")] public EndpointConfig Cdn { get; set; } = null!;
+
+ public Config ReadFromKv(Dictionary<string, object?> kv)
+ {
+ // to object
+
+
+ foreach (var (key, value) in kv)
+ {
+ switch (key.Split('_', 2)[0])
+ {
+ default:
+ Console.WriteLine($"Unrecognized config key prefix: {key}");
+ continue;
+ }
+ }
+
+ return this;
+ }
+}
+
+public class EndpointConfig
+{
+ [JsonPropertyName("endpointPrivate")] public string? EndpointPrivate { get; set; }
+ [JsonPropertyName("endpointPublic")] public string? EndpointPublic { get; set; }
+
+ public EndpointConfig ReadFromKv(Dictionary<string, object?> kv, string prefix)
+ {
+ foreach (var (key, value) in kv)
+ {
+ if (!key.StartsWith(prefix + "_")) continue;
+ var subKey = key[(prefix + "_").Length..];
+ switch (subKey)
+ {
+ case "ENDPOINT_PRIVATE":
+ EndpointPrivate = value?.ToString();
+ break;
+ case "ENDPOINT_PUBLIC":
+ EndpointPublic = value?.ToString();
+ break;
+ default:
+ Console.WriteLine($"Unrecognized config key: {key}");
+ break;
+ }
+ }
+
+ return this;
+ }
+}
+
+public class ApiConfig : EndpointConfig
+{
+ [JsonPropertyName("activeVersions")] public List<string> ActiveVersions { get; set; } = null!;
+ [JsonPropertyName("defaultVersion")] public string DefaultVersion { get; set; } = null!;
+}
\ No newline at end of file
diff --git a/extra/admin-api/Spacebar.ConfigModel/Extensions/JsonExtensions.cs b/extra/admin-api/Spacebar.ConfigModel/Extensions/JsonExtensions.cs
new file mode 100644
index 00000000..20ae7331
--- /dev/null
+++ b/extra/admin-api/Spacebar.ConfigModel/Extensions/JsonExtensions.cs
@@ -0,0 +1,119 @@
+using System.Text.Json;
+using System.Text.Json.Nodes;
+
+namespace Spacebar.ConfigModel.Extensions;
+
+public static class JsonExtensions
+{
+ extension(Dictionary<string, string?> kv)
+ {
+ public JsonObject ToNestedJsonObject(string path = "$")
+ {
+ JsonObject root = new();
+ // group by prefix
+ var groups = kv.GroupBy(kvItem => kvItem.Key.Split('_', 2)[0]);
+ foreach (var group in groups)
+ {
+ var prefix = group.Key;
+
+ if (group.Count() == 1 && !group.First().Key.Contains('_'))
+ {
+ root[prefix] = group.First().Value == null ? null : JsonNode.Parse(group.First().Value!);
+ Console.WriteLine("[CONFIG] Single Key: {0}.{1}, Value: {2}", path, prefix, root[prefix]?.ToJsonString());
+ continue;
+ }
+
+ var nestedValues = group.Where(x => x.Key.Contains('_')).ToDictionary(kvItem => kvItem.Key[(prefix.Length + 1)..], kvItem => kvItem.Value);
+
+ if (nestedValues.All(x => int.TryParse(x.Key.Split('_')[0], out _)))
+ {
+ Console.WriteLine("[CONFIG] Array Key Detected: {0}.{1}", path, prefix);
+ var arr = new JsonArray();
+ if (nestedValues.All(x => x.Key.Contains('_')))
+ {
+ var objs = nestedValues.GroupBy(x => x.Key.Split('_', 2)[0]);
+ foreach (var objGroup in objs.OrderBy(x => int.Parse(x.Key)))
+ {
+ var i = objGroup.Key;
+ var objValues = objGroup.ToDictionary(kvItem => kvItem.Key[(i.Length + 1)..], kvItem => kvItem.Value);
+ var obj = objValues.ToNestedJsonObject($"{path}.{prefix}[{i}]");
+ arr.Add(obj);
+ Console.WriteLine($" - ${path}.{prefix}[{i}]: {obj.ToJsonString()}");
+ }
+ }
+ else
+ foreach (var (i, arrayItem) in nestedValues.OrderBy(x => int.Parse(x.Key)))
+ {
+ arr.Add(arrayItem == null ? null : JsonNode.Parse(arrayItem));
+ Console.WriteLine($" - {path}.{prefix}[{i}]: {arrayItem}");
+ }
+
+ root[prefix] = arr;
+ }
+ else
+ {
+ root[prefix] = nestedValues.ToNestedJsonObject($"{path}.{prefix}");
+ }
+ }
+
+ return root;
+ }
+ }
+
+ extension(JsonObject jo)
+ {
+ public Dictionary<string, string?> ToFlatKv(string path = "$")
+ {
+ var kv = new Dictionary<string, string?>();
+ var jso = new JsonSerializerOptions()
+ {
+ Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
+ };
+
+ foreach (var (key, value) in jo)
+ {
+ var currentPath = path == "$" ? key : $"{path}_{key}";
+
+ switch (value)
+ {
+ case JsonObject nestedObj:
+ var nestedKv = nestedObj.ToFlatKv(currentPath);
+ foreach (var (nestedKey, nestedValue) in nestedKv)
+ {
+ kv[nestedKey] = nestedValue;
+ }
+
+ break;
+ case JsonArray arr:
+ for (int i = 0; i < arr.Count; i++)
+ {
+ var item = arr[i];
+ var itemPath = $"{currentPath}_{i}";
+ switch (item)
+ {
+ case JsonObject arrObj:
+ var arrObjKv = arrObj.ToFlatKv(itemPath);
+ foreach (var (arrObjKey, arrObjValue) in arrObjKv)
+ {
+ kv[arrObjKey] = arrObjValue;
+ }
+
+ break;
+ default:
+ kv[itemPath] = item?.ToJsonString(jso);
+ break;
+ }
+ }
+
+ break;
+ default:
+ Console.WriteLine(value?.GetType());
+ kv[currentPath] = value?.ToJsonString(jso);
+ break;
+ }
+ }
+
+ return kv;
+ }
+ }
+}
\ No newline at end of file
diff --git a/extra/admin-api/Spacebar.ConfigModel/Spacebar.ConfigModel.csproj b/extra/admin-api/Spacebar.ConfigModel/Spacebar.ConfigModel.csproj
new file mode 100644
index 00000000..237d6616
--- /dev/null
+++ b/extra/admin-api/Spacebar.ConfigModel/Spacebar.ConfigModel.csproj
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net10.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+</Project>
diff --git a/extra/admin-api/Spacebar.Db/deps.json b/extra/admin-api/Spacebar.Db/deps.json
new file mode 100644
index 00000000..c978dd1b
--- /dev/null
+++ b/extra/admin-api/Spacebar.Db/deps.json
@@ -0,0 +1,362 @@
+[
+ {
+ "pname": "Humanizer.Core",
+ "version": "2.14.1",
+ "hash": "sha256-EXvojddPu+9JKgOG9NSQgUTfWq1RpOYw7adxDPKDJ6o="
+ },
+ {
+ "pname": "Microsoft.Build",
+ "version": "17.7.2",
+ "hash": "sha256-k35nFdPxC8t0zAltVSmAJtsepp/ubNIjPOsJ6k8jSqM="
+ },
+ {
+ "pname": "Microsoft.Build.Framework",
+ "version": "17.14.28",
+ "hash": "sha256-7RzEyIipumafwLW1xN1q23114NafG6PT0+RADElNsiM="
+ },
+ {
+ "pname": "Microsoft.Build.Framework",
+ "version": "17.7.2",
+ "hash": "sha256-fNWmVQYFTJDveAGmxEdNqJRAczV6+Ep8RA8clKBJFqw="
+ },
+ {
+ "pname": "Microsoft.Build.Tasks.Core",
+ "version": "17.14.28",
+ "hash": "sha256-M9zRXYijH2HtLlRXbrUK1a1LQ9zkT+DC9ZmMiiVZwv0="
+ },
+ {
+ "pname": "Microsoft.Build.Tasks.Core",
+ "version": "17.7.2",
+ "hash": "sha256-OrV/qWgZHzGlNUmaSfX5wDBcmg1aQeF3/OUHpSH+uZU="
+ },
+ {
+ "pname": "Microsoft.Build.Utilities.Core",
+ "version": "17.14.28",
+ "hash": "sha256-VFfO+UpyTpw2X/qiCCOCYzvMLuu7B+XVSSpJZQLkPzU="
+ },
+ {
+ "pname": "Microsoft.Build.Utilities.Core",
+ "version": "17.7.2",
+ "hash": "sha256-oatF0KfuP1nb4+OLNKg2/R/ZLO4EiACaO5leaxMEY4A="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Analyzers",
+ "version": "3.11.0",
+ "hash": "sha256-hQ2l6E6PO4m7i+ZsfFlEx+93UsLPo4IY3wDkNG11/Sw="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Common",
+ "version": "4.14.0",
+ "hash": "sha256-ne/zxH3GqoGB4OemnE8oJElG5mai+/67ASaKqwmL2BE="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.CSharp",
+ "version": "4.14.0",
+ "hash": "sha256-5Mzj3XkYYLkwDWh17r1NEXSbXwwWYQPiOmkSMlgo1JY="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.CSharp.Workspaces",
+ "version": "4.14.0",
+ "hash": "sha256-aNbV1a0yYBs0fpQawG6LXcbyoE8en+YFSpV5vcYE4J4="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Workspaces.Common",
+ "version": "4.14.0",
+ "hash": "sha256-0YfeaJe01WBUm9avy4a8FacQJXA1NkpnDpiXu4yz88I="
+ },
+ {
+ "pname": "Microsoft.CodeAnalysis.Workspaces.MSBuild",
+ "version": "4.14.0",
+ "hash": "sha256-5SJfpRqzqCK0UbkmAaJpA/r1XJb0YAriMMeQHYC4d+o="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore",
+ "version": "10.0.0",
+ "hash": "sha256-xfgrlxhtOkQwF5Q7j8gSm41URJiH8IuJ/T/Dh88++hE="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore",
+ "version": "10.0.1",
+ "hash": "sha256-IxA+/nDA6hZkUm9bDT6bRu8+9qeHA3gbTvIhR9Ncg4w="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-UDgZbRQcGPaKsE53EH6bvJiv+Q4KSxAbnsVhTVFGG4Q="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-FMGXhAAgcVSedV0/GmUVqAwoiRzFJil9mQYr6eNgowg="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Analyzers",
+ "version": "10.0.0",
+ "hash": "sha256-7Q0jYJO50cqGI+u6gLpootbB8GZvgsgtg0F9FZI1jig="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Analyzers",
+ "version": "10.0.1",
+ "hash": "sha256-O949vr98WoSRXtiIo0ZI6dz2cibIBKbiuC+mQOe9bV4="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Design",
+ "version": "10.0.1",
+ "hash": "sha256-GGNZIGNEMhSGaMRFkRN4bOuCUBs5YVnX8klXarm319U="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Relational",
+ "version": "10.0.0",
+ "hash": "sha256-vOP2CE5YA551BlpbOuIy6RuAiAEPEpCVS1cEE33/zN4="
+ },
+ {
+ "pname": "Microsoft.EntityFrameworkCore.Relational",
+ "version": "10.0.1",
+ "hash": "sha256-zLgxr/iW9HP8Fip1IDgr7X0Ar8OWKDvVmoEt65gG6VY="
+ },
+ {
+ "pname": "Microsoft.Extensions.Caching.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-qVLAEqxPK/dNq+z1a6D9NqdcSg/18sfzZhlBWMkqV/A="
+ },
+ {
+ "pname": "Microsoft.Extensions.Caching.Memory",
+ "version": "10.0.0",
+ "hash": "sha256-AMgDSm1k6q0s17spGtyR5q8nAqUFDOxl/Fe38f9M+d4="
+ },
+ {
+ "pname": "Microsoft.Extensions.Caching.Memory",
+ "version": "10.0.1",
+ "hash": "sha256-Qb7xK6VEZDas0lJFaW1suKdFjtkSYwLHHxkQEfWIU2A="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-s4PDp+vtzdxKIxnOT3+dDRoTDopyl8kqmmw4KDnkOtQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection",
+ "version": "10.0.1",
+ "hash": "sha256-RKOB+zPrtQNUbJY/1jR54rKOM8KHPgynPExxugku3I8="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection",
+ "version": "9.0.0",
+ "hash": "sha256-dAH52PPlTLn7X+1aI/7npdrDzMEFPMXRv4isV1a+14k="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-zNUpau51ds7iQTaSUTFtyTHIUoinYc129W50CnufMdQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
+ "version": "9.0.0",
+ "hash": "sha256-CncVwkKZ5CsIG2O0+OM9qXuYXh3p6UGyueTHSLDVL+c="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyModel",
+ "version": "10.0.1",
+ "hash": "sha256-XIj2jEURe25YA4RhBSuCqQpic0YP+TZaO/dbBPCjad8="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging",
+ "version": "10.0.0",
+ "hash": "sha256-P+zPAadLL63k/GqK34/qChqQjY9aIRxZfxlB9lqsSrs="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging",
+ "version": "10.0.1",
+ "hash": "sha256-zuLP3SIpCToMOlIPOEv3Kq8y/minecd8k8GSkxFo13E="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging",
+ "version": "9.0.0",
+ "hash": "sha256-kR16c+N8nQrWeYLajqnXPg7RiXjZMSFLnKLEs4VfjcM="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-BnhgGZc01HwTSxogavq7Ueq4V7iMA3wPnbfRwQ4RhGk="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "10.0.1",
+ "hash": "sha256-NRk0feNE1fgi/hyO0AVDbSGJQRT+9yte6Lpm4Hz/2Bs="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "9.0.0",
+ "hash": "sha256-iBTs9twjWXFeERt4CErkIIcoJZU1jrd1RWCI8V5j7KU="
+ },
+ {
+ "pname": "Microsoft.Extensions.Options",
+ "version": "10.0.1",
+ "hash": "sha256-vBiSS1vqAC7eDrpJNT4H3A9qLikCSAepnNRbry0mKnk="
+ },
+ {
+ "pname": "Microsoft.Extensions.Options",
+ "version": "9.0.0",
+ "hash": "sha256-DT5euAQY/ItB5LPI8WIp6Dnd0lSvBRP35vFkOXC68ck="
+ },
+ {
+ "pname": "Microsoft.Extensions.Primitives",
+ "version": "10.0.1",
+ "hash": "sha256-EXmukq09erT4s+miQpBSYy3IY4HxxKlwEPL43/KoyEc="
+ },
+ {
+ "pname": "Microsoft.Extensions.Primitives",
+ "version": "9.0.0",
+ "hash": "sha256-ZNLusK1CRuq5BZYZMDqaz04PIKScE2Z7sS2tehU7EJs="
+ },
+ {
+ "pname": "Microsoft.NET.StringTools",
+ "version": "17.14.28",
+ "hash": "sha256-UzREyvDxkiOQ4cEOQ5UCjkwXGrldIDCcbefECTPGjXI="
+ },
+ {
+ "pname": "Microsoft.NET.StringTools",
+ "version": "17.7.2",
+ "hash": "sha256-hQE07TCgcQuyu9ZHVq2gPDb0+xe8ECJUdrgh17bJP4o="
+ },
+ {
+ "pname": "Mono.TextTemplating",
+ "version": "3.0.0",
+ "hash": "sha256-VlgGDvgNZb7MeBbIZ4DE2Nn/j2aD9k6XqNHnASUSDr0="
+ },
+ {
+ "pname": "Newtonsoft.Json",
+ "version": "13.0.3",
+ "hash": "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc="
+ },
+ {
+ "pname": "Npgsql",
+ "version": "10.0.0",
+ "hash": "sha256-UVKz9dH/rVCCbMyFdqA31RYpht1XgDRLIqUy0Dp9ACQ="
+ },
+ {
+ "pname": "Npgsql.EntityFrameworkCore.PostgreSQL",
+ "version": "10.0.0",
+ "hash": "sha256-XIJxnTMektQVP1qtslEIGbmBGrIQsvjQjCMRTs9UIbg="
+ },
+ {
+ "pname": "System.CodeDom",
+ "version": "6.0.0",
+ "hash": "sha256-uPetUFZyHfxjScu5x4agjk9pIhbCkt5rG4Axj25npcQ="
+ },
+ {
+ "pname": "System.CodeDom",
+ "version": "7.0.0",
+ "hash": "sha256-7IPt39cY+0j0ZcRr/J45xPtEjnSXdUJ/5ai3ebaYQiE="
+ },
+ {
+ "pname": "System.CodeDom",
+ "version": "9.0.0",
+ "hash": "sha256-578lcBgswW0eM16r0EnJzfGodPx86RxxFoZHc2PSzsw="
+ },
+ {
+ "pname": "System.Composition",
+ "version": "9.0.0",
+ "hash": "sha256-FehOkQ2u1p8mQ0/wn3cZ+24HjhTLdck8VZYWA1CcgbM="
+ },
+ {
+ "pname": "System.Composition.AttributedModel",
+ "version": "9.0.0",
+ "hash": "sha256-a7y7H6zj+kmYkllNHA402DoVfY9IaqC3Ooys8Vzl24M="
+ },
+ {
+ "pname": "System.Composition.Convention",
+ "version": "9.0.0",
+ "hash": "sha256-tw4vE5JRQ60ubTZBbxoMPhtjOQCC3XoDFUH7NHO7o8U="
+ },
+ {
+ "pname": "System.Composition.Hosting",
+ "version": "9.0.0",
+ "hash": "sha256-oOxU+DPEEfMCuNLgW6wSkZp0JY5gYt44FJNnWt+967s="
+ },
+ {
+ "pname": "System.Composition.Runtime",
+ "version": "9.0.0",
+ "hash": "sha256-AyIe+di1TqwUBbSJ/sJ8Q8tzsnTN+VBdJw4K8xZz43s="
+ },
+ {
+ "pname": "System.Composition.TypedParts",
+ "version": "9.0.0",
+ "hash": "sha256-F5fpTUs3Rr7yP/NyIzr+Xn5NdTXXp8rrjBnF9UBBUog="
+ },
+ {
+ "pname": "System.Configuration.ConfigurationManager",
+ "version": "7.0.0",
+ "hash": "sha256-SgBexTTjRn23uuXvkzO0mz0qOfA23MiS4Wv+qepMLZE="
+ },
+ {
+ "pname": "System.Configuration.ConfigurationManager",
+ "version": "9.0.0",
+ "hash": "sha256-+pLnTC0YDP6Kjw5DVBiFrV/Q3x5is/+6N6vAtjvhVWk="
+ },
+ {
+ "pname": "System.Diagnostics.EventLog",
+ "version": "9.0.0",
+ "hash": "sha256-tPvt6yoAp56sK/fe+/ei8M65eavY2UUhRnbrREj/Ems="
+ },
+ {
+ "pname": "System.Formats.Nrbf",
+ "version": "9.0.0",
+ "hash": "sha256-c4qf6CocQUZB0ySGQd8s15PXY7xfrjQqMGXxkwytKyw="
+ },
+ {
+ "pname": "System.Reflection.MetadataLoadContext",
+ "version": "7.0.0",
+ "hash": "sha256-VYl6SFD130K9Aw4eJH16ApJ9Sau4Xu0dcxEip2veuTI="
+ },
+ {
+ "pname": "System.Resources.Extensions",
+ "version": "9.0.0",
+ "hash": "sha256-y2gLEMuAy6QfEyNJxABC/ayMWGnwlpX735jsUQLktho="
+ },
+ {
+ "pname": "System.Security.Cryptography.Pkcs",
+ "version": "7.0.0",
+ "hash": "sha256-3J3vL9hcKSuZjT2GKappa2A9p2xJm1nH2asTNAl8ZCA="
+ },
+ {
+ "pname": "System.Security.Cryptography.Pkcs",
+ "version": "7.0.2",
+ "hash": "sha256-qS5Z/Yo8J+f3ExVX5Qkcpj1Z57oUZqz5rWa1h5bVpl8="
+ },
+ {
+ "pname": "System.Security.Cryptography.Pkcs",
+ "version": "9.0.0",
+ "hash": "sha256-AjG14mGeSc2Ka4QSelGBM1LrGBW3VJX60lnihKyJjGY="
+ },
+ {
+ "pname": "System.Security.Cryptography.ProtectedData",
+ "version": "9.0.0",
+ "hash": "sha256-gPgPU7k/InTqmXoRzQfUMEKL3QuTnOKowFqmXTnWaBQ="
+ },
+ {
+ "pname": "System.Security.Cryptography.Xml",
+ "version": "7.0.1",
+ "hash": "sha256-CH8+JVC8LyCSW75/6ZQ7ecMbSOAE1c16z4dG8JTp01w="
+ },
+ {
+ "pname": "System.Security.Cryptography.Xml",
+ "version": "9.0.0",
+ "hash": "sha256-SQJWwAFrJUddEU6JiZB52FM9tGjRlJAYH8oYVzG5IJU="
+ },
+ {
+ "pname": "System.Security.Permissions",
+ "version": "7.0.0",
+ "hash": "sha256-DOFoX+AKRmrkllykHheR8FfUXYx/Ph+I/HYuReQydXI="
+ },
+ {
+ "pname": "System.Security.Permissions",
+ "version": "9.0.0",
+ "hash": "sha256-BFrA9ottmQtLIAiKiGRbfSUpzNJwuaOCeFRDN4Z0ku0="
+ },
+ {
+ "pname": "System.Windows.Extensions",
+ "version": "9.0.0",
+ "hash": "sha256-RErD+Ju15qtnwdwB7E0SjjJGAnhXwJyC7UPcl24Z3Vs="
+ }
+]
diff --git a/extra/admin-api/SpacebarAdminAPI.sln b/extra/admin-api/SpacebarAdminAPI.sln
index 09e3a696..723939d0 100644
--- a/extra/admin-api/SpacebarAdminAPI.sln
+++ b/extra/admin-api/SpacebarAdminAPI.sln
@@ -5,15 +5,15 @@ VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spacebar.Db", "Spacebar.Db\Spacebar.Db.csproj", "{524849DF-93BC-4632-B6C2-D05552C13887}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spacebar.AdminAPI", "Spacebar.AdminAPI\Spacebar.AdminAPI.csproj", "{00E58C53-0AC1-4113-8CCF-D299861EA8D3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spacebar.AdminApi", "Spacebar.AdminApi\Spacebar.AdminApi.csproj", "{00E58C53-0AC1-4113-8CCF-D299861EA8D3}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Utilities", "Utilities", "{04787943-EBB6-4DE4-96D5-4CFB4A2CEE99}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spacebar.RabbitMqUtilities", "Utilities\Spacebar.RabbitMqUtilities\Spacebar.RabbitMqUtilities.csproj", "{F4E179D1-A3EB-4A1D-9C11-E7019F4B1EE2}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spacebar.AdminAPITest", "Utilities\Spacebar.AdminAPITest\Spacebar.AdminAPITest.csproj", "{374314B2-7149-4316-8750-4E1E7BF6C3B4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spacebar.AdminApiTest", "Utilities\Spacebar.AdminApiTest\Spacebar.AdminApiTest.csproj", "{374314B2-7149-4316-8750-4E1E7BF6C3B4}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spacebar.AdminAPI.TestClient", "Utilities\Spacebar.AdminAPI.TestClient\Spacebar.AdminAPI.TestClient.csproj", "{498DAD05-336E-4851-ABD8-4E7CCA8312B0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spacebar.AdminApi.TestClient", "Utilities\Spacebar.AdminApi.TestClient\Spacebar.AdminApi.TestClient.csproj", "{498DAD05-336E-4851-ABD8-4E7CCA8312B0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spacebar.AdminApi.Models", "Spacebar.AdminApi.Models\Spacebar.AdminApi.Models.csproj", "{5F138C70-EAFA-4C7C-8B90-EFB9624B235C}"
EndProject
@@ -21,6 +21,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spacebar.AdminApi.PrepareTe
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spacebar.CleanSettingsRows", "Spacebar.CleanSettingsRows\Spacebar.CleanSettingsRows.csproj", "{9B41FAC1-4427-487C-BF3F-69554848DEBF}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spacebar.ConfigModel", "Spacebar.ConfigModel\Spacebar.ConfigModel.csproj", "{EC5C6A71-458A-4A1D-BE96-CCB84FF4AF1B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConfigTest", "ConfigTest\ConfigTest.csproj", "{3BB51E17-8D3E-42FE-AAE6-C33DA5D8D323}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -62,6 +66,14 @@ Global
{9B41FAC1-4427-487C-BF3F-69554848DEBF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9B41FAC1-4427-487C-BF3F-69554848DEBF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9B41FAC1-4427-487C-BF3F-69554848DEBF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EC5C6A71-458A-4A1D-BE96-CCB84FF4AF1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EC5C6A71-458A-4A1D-BE96-CCB84FF4AF1B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EC5C6A71-458A-4A1D-BE96-CCB84FF4AF1B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EC5C6A71-458A-4A1D-BE96-CCB84FF4AF1B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3BB51E17-8D3E-42FE-AAE6-C33DA5D8D323}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3BB51E17-8D3E-42FE-AAE6-C33DA5D8D323}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3BB51E17-8D3E-42FE-AAE6-C33DA5D8D323}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3BB51E17-8D3E-42FE-AAE6-C33DA5D8D323}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{F4E179D1-A3EB-4A1D-9C11-E7019F4B1EE2} = {04787943-EBB6-4DE4-96D5-4CFB4A2CEE99}
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/App.razor b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/App.razor
index c7730d1c..c7730d1c 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/App.razor
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/App.razor
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Classes/OpenAPI/OpenAPISchema.cs b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Classes/OpenAPI/OpenAPISchema.cs
index 8e399302..8995dee5 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Classes/OpenAPI/OpenAPISchema.cs
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Classes/OpenAPI/OpenAPISchema.cs
@@ -2,7 +2,7 @@ using System.Collections.Frozen;
using System.Text.Json;
using System.Text.Json.Serialization;
-namespace Spacebar.AdminAPI.TestClient.Classes.OpenAPI;
+namespace Spacebar.AdminApi.TestClient.Classes.OpenAPI;
public class OpenApiSchema {
[JsonPropertyName("openapi")]
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Layout/MainLayout.razor b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Layout/MainLayout.razor
index e7554be8..e7554be8 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Layout/MainLayout.razor
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Layout/MainLayout.razor
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Layout/MainLayout.razor.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Layout/MainLayout.razor.css
index c538ac3b..c538ac3b 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Layout/MainLayout.razor.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Layout/MainLayout.razor.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Layout/NavMenu.razor b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Layout/NavMenu.razor
index c96fa30c..96deb070 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Layout/NavMenu.razor
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Layout/NavMenu.razor
@@ -1,6 +1,6 @@
<div class="top-row ps-3 navbar navbar-dark">
<div class="container-fluid">
- <a class="navbar-brand" href="">Spacebar.AdminAPI.TestClient</a>
+ <a class="navbar-brand" href="">Spacebar.AdminApi.TestClient</a>
<button title="Navigation menu" class="navbar-toggler" @onclick="ToggleNavMenu">
<span class="navbar-toggler-icon"></span>
</button>
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Layout/NavMenu.razor.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Layout/NavMenu.razor.css
index 617b89cc..617b89cc 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Layout/NavMenu.razor.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Layout/NavMenu.razor.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/Guilds.razor b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/Guilds.razor
index 454808b4..9a376d24 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/Guilds.razor
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/Guilds.razor
@@ -2,7 +2,7 @@
@using System.Net.Http.Headers
@using System.Reflection
@using Spacebar.AdminApi.Models
-@using Spacebar.AdminAPI.TestClient.Services
+@using Spacebar.AdminApi.TestClient.Services
@using ArcaneLibs.Blazor.Components
@using ArcaneLibs.Extensions
@inject Config Config
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/Home.razor b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/Home.razor
index 812a6152..275ca146 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/Home.razor
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/Home.razor
@@ -1,6 +1,6 @@
@page "/"
@using System.Net.Http.Headers
-@using Spacebar.AdminAPI.TestClient.Services
+@using Spacebar.AdminApi.TestClient.Services
@inject Config Config
@inject ILocalStorageService LocalStorage
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/HttpTestClient.razor b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/HttpTestClient.razor
index 0be77a99..b70f4efb 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/HttpTestClient.razor
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/HttpTestClient.razor
@@ -1,11 +1,10 @@
@page "/HttpTestClient"
-@using System.Collections.Immutable
@using System.Text.Json
@using ArcaneLibs.Blazor.Components
@using ArcaneLibs.Extensions
-@using Spacebar.AdminAPI.TestClient.Classes.OpenAPI
-@using Spacebar.AdminAPI.TestClient.Pages.HttpTestClientParts
-@using Spacebar.AdminAPI.TestClient.Services
+@using Spacebar.AdminApi.TestClient.Classes.OpenAPI
+@using Spacebar.AdminApi.TestClient.Pages.HttpTestClientParts
+@using Spacebar.AdminApi.TestClient.Services
@inject Config Config
<h3>HttpTestClient</h3>
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/HttpTestClientParts/OpenAPIParameterDescription.razor b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/HttpTestClientParts/OpenAPIParameterDescription.razor
index 89222453..8f0667d0 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/HttpTestClientParts/OpenAPIParameterDescription.razor
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/HttpTestClientParts/OpenAPIParameterDescription.razor
@@ -1,5 +1,5 @@
@using ArcaneLibs.Extensions
-@using Spacebar.AdminAPI.TestClient.Classes.OpenAPI
+@using Spacebar.AdminApi.TestClient.Classes.OpenAPI
<span title="@Parameter.ToJson()">@Summary</span>
@if (Parameter.Name != Parameter.Description && !string.IsNullOrWhiteSpace(Parameter.Description)) {
<i> - @Parameter.Description</i>
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/Login.razor b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/Login.razor
index ca1205ed..196d7336 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/Login.razor
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/Login.razor
@@ -1,6 +1,6 @@
@page "/Login"
@using System.Text.Json.Nodes
-@using Spacebar.AdminAPI.TestClient.Services
+@using Spacebar.AdminApi.TestClient.Services
@inject ILocalStorageService LocalStorage
@inject Config Config
@inject NavigationManager Navigation
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/Media/Index.razor b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/Media/Index.razor
index 76621e74..76621e74 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/Media/Index.razor
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/Media/Index.razor
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/Media/Users.razor b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/Media/Users.razor
index 81008a25..f9b43942 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/Media/Users.razor
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/Media/Users.razor
@@ -2,7 +2,7 @@
@using System.Net.Http.Headers
@using System.Reflection
@using Spacebar.AdminApi.Models
-@using Spacebar.AdminAPI.TestClient.Services
+@using Spacebar.AdminApi.TestClient.Services
@using ArcaneLibs.Blazor.Components
@inject Config Config
@inject ILocalStorageService LocalStorage
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/Users.razor b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/Users.razor
index c0e67867..b12a5c16 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/Users.razor
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/Users.razor
@@ -2,7 +2,7 @@
@using System.Net.Http.Headers
@using System.Reflection
@using Spacebar.AdminApi.Models
-@using Spacebar.AdminAPI.TestClient.Services
+@using Spacebar.AdminApi.TestClient.Services
@using ArcaneLibs.Blazor.Components
@using ArcaneLibs.Extensions
@inject Config Config
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/UsersDelete.razor b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/UsersDelete.razor
index 98a3e0fc..9d527621 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Pages/UsersDelete.razor
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Pages/UsersDelete.razor
@@ -4,7 +4,7 @@
@using System.Text.Json.Nodes
@using ArcaneLibs.Extensions
@using Spacebar.AdminApi.Models
-@using Spacebar.AdminAPI.TestClient.Services
+@using Spacebar.AdminApi.TestClient.Services
@inject Config Config
<h3>UsersDelete - @Id</h3>
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Program.cs b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Program.cs
index 0e3035a2..d28066da 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Program.cs
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Program.cs
@@ -5,8 +5,8 @@ using System.Text.Json.Serialization;
using Blazored.LocalStorage;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
-using Spacebar.AdminAPI.TestClient;
-using Spacebar.AdminAPI.TestClient.Services;
+using Spacebar.AdminApi.TestClient;
+using Spacebar.AdminApi.TestClient.Services;
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Properties/launchSettings.json b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Properties/launchSettings.json
index c346464e..c346464e 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Properties/launchSettings.json
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Properties/launchSettings.json
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Services/Config.cs b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Services/Config.cs
index 08fc1fb0..3b045a49 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Services/Config.cs
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Services/Config.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Spacebar.AdminAPI.TestClient.Services;
+namespace Spacebar.AdminApi.TestClient.Services;
public class Config {
[JsonPropertyName("api_url")]
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Services/StreamingHttpClient.cs b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Services/StreamingHttpClient.cs
index 67dc673e..0f2ade71 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Services/StreamingHttpClient.cs
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Services/StreamingHttpClient.cs
@@ -11,7 +11,7 @@ using System.Text.Json.Serialization;
using ArcaneLibs;
using ArcaneLibs.Extensions;
-namespace Spacebar.AdminAPI.TestClient.Services;
+namespace Spacebar.AdminApi.TestClient.Services;
#if SINGLE_HTTPCLIENT
// TODO: Add URI wrapper for
@@ -83,7 +83,7 @@ public class StreamingHttpClient {
request.RequestUri = new Uri(BaseAddress ?? throw new InvalidOperationException("Relative URI passed, but no BaseAddress is specified!"), request.RequestUri);
swWait.Stop();
var swExec = Stopwatch.StartNew();
-
+
foreach (var (key, value) in AdditionalQueryParameters) request.RequestUri = request.RequestUri.AddQuery(key, value);
foreach (var (key, value) in DefaultRequestHeaders) {
if (request.Headers.Contains(key)) continue;
@@ -110,6 +110,7 @@ public class StreamingHttpClient {
else if (!e.ToString().StartsWith("TypeError: NetworkError"))
Console.WriteLine(
$"Failed to send request {request.Method} {BaseAddress}{request.RequestUri} ({Util.BytesToString(request.Content?.Headers.ContentLength ?? 0)}):\n{e}");
+
throw;
}
#if SYNC_HTTPCLIENT
@@ -148,19 +149,19 @@ public class StreamingHttpClient {
//retry on gateway timeout
// if (responseMessage.StatusCode == HttpStatusCode.GatewayTimeout) {
- // request.ResetSendStatus();
- // return await SendAsync(request, cancellationToken);
+ // request.ResetSendStatus();
+ // return await SendAsync(request, cancellationToken);
// }
//error handling
var content = await responseMessage.Content.ReadAsStringAsync(cancellationToken);
if (content.Length == 0)
throw new DataException("Content was empty");
- // throw new MatrixException() {
- // ErrorCode = "M_UNKNOWN",
- // Error = "Unknown error, server returned no content"
- // };
-
+ // throw new MatrixException() {
+ // ErrorCode = "M_UNKNOWN",
+ // Error = "Unknown error, server returned no content"
+ // };
+
// if (!content.StartsWith('{')) throw new InvalidDataException("Encountered invalid data:\n" + content);
if (!content.TrimStart().StartsWith('{')) {
responseMessage.EnsureSuccessStatusCode();
@@ -293,4 +294,4 @@ public class StreamingHttpClient {
return await SendAsync(request);
}
}
-#endif
+#endif
\ No newline at end of file
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Spacebar.AdminAPI.TestClient.csproj b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Spacebar.AdminApi.TestClient.csproj
index fcbd9d61..bc29a828 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/Spacebar.AdminAPI.TestClient.csproj
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Spacebar.AdminApi.TestClient.csproj
@@ -14,6 +14,7 @@
<!-- <RunAOTCompilation>true</RunAOTCompilation>-->
<BlazorEnableTimeZoneSupport>false</BlazorEnableTimeZoneSupport>
<InvariantGlobalization>true</InvariantGlobalization>
+<!-- <RuntimeFrameworkVersion>10.0.2-servicing.25570.103</RuntimeFrameworkVersion>-->
</PropertyGroup>
<ItemGroup>
@@ -24,8 +25,7 @@
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="10.0.0" PrivateAssets="all" />
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="10.0.0" />
</ItemGroup>
-
-
+
<ItemGroup>
<Content Update="appsettings.Development.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/_Imports.razor b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/_Imports.razor
index 6cfe3191..17be595b 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/_Imports.razor
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/_Imports.razor
@@ -7,5 +7,5 @@
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.AspNetCore.Components.WebAssembly.Http
@using Microsoft.JSInterop
-@using Spacebar.AdminAPI.TestClient
-@using Spacebar.AdminAPI.TestClient.Layout
\ No newline at end of file
+@using Spacebar.AdminApi.TestClient
+@using Spacebar.AdminApi.TestClient.Layout
\ No newline at end of file
diff --git a/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/deps.json b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/deps.json
new file mode 100644
index 00000000..c48eef78
--- /dev/null
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/deps.json
@@ -0,0 +1,217 @@
+[
+ {
+ "pname": "ArcaneLibs",
+ "version": "1.0.0-preview.20251005-232225",
+ "hash": "sha256-EsYLSiyX5Nj+ZpFb6FOcAYqDsQFSbvgm9NKaarJjK/0="
+ },
+ {
+ "pname": "ArcaneLibs.Blazor.Components",
+ "version": "1.0.0-preview.20251005-232225",
+ "hash": "sha256-9rgq/bFNwZf+mpTldzhr7VPwlseLR21nDlJWGgIaGIQ="
+ },
+ {
+ "pname": "Blazored.LocalStorage",
+ "version": "4.5.0",
+ "hash": "sha256-0vklTFHEGgNG8V6ivQictuooyiXS2nMn/qLpfYhEBlE="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.App.Internal.Assets",
+ "version": "10.0.0",
+ "hash": "sha256-IyY5Ymdkmf9S9qRwYXX9rWpzcU3fuDR+ITeaaeJQ/Dk="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.Authorization",
+ "version": "10.0.0",
+ "hash": "sha256-g1MagKFkZF0LttdK5GLdHCXe4d1qOXv57ngz7XnhRrk="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.Components",
+ "version": "10.0.0",
+ "hash": "sha256-nrCuCDRbvD5XQyn3ySW/CD4yKYD6coC71JH2ke6xtXI="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.Components",
+ "version": "9.0.9",
+ "hash": "sha256-1+lIIRfIwHC3XWt2tMuQ3NxoqIsVRgAR+/l9vttQLd8="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.Components.Analyzers",
+ "version": "10.0.0",
+ "hash": "sha256-2mbSRBB/2eT0fYouhDKM5OFRZGQ0Jv8HgcQLvufoHq4="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.Components.Forms",
+ "version": "10.0.0",
+ "hash": "sha256-el2T9pvjNexq5lfJhp+7xZYa/1CS6RchIWKmtiKg+vI="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.Components.Forms",
+ "version": "9.0.9",
+ "hash": "sha256-oUwcqvDLtychAdga+fAJp70wSEdVheYsV6l5Qnfdq6M="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.Components.Web",
+ "version": "10.0.0",
+ "hash": "sha256-xDf1DBNBceAFKu4er2inn6gUKa1T1L8T3ewlFcuxddE="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.Components.Web",
+ "version": "8.0.0",
+ "hash": "sha256-dsCb4B6r5iHPbEp8+uFzAfD1txGI5dEIWgwtT9+GgU8="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.Components.Web",
+ "version": "9.0.9",
+ "hash": "sha256-mgohB7RwOzE5XPB0Lg3h9pUIBKPXaul2F39uxfU7GD8="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.Components.WebAssembly",
+ "version": "10.0.0",
+ "hash": "sha256-YeHralkfEzLmlrBj0jER+ta9hsbXv5skP81178V1ppw="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.Components.WebAssembly.DevServer",
+ "version": "10.0.0",
+ "hash": "sha256-akCQI6iHuKIyDmZh5du+hifzPzQoGeMX3Y7ST/TFxRU="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.Metadata",
+ "version": "10.0.0",
+ "hash": "sha256-TxyiXUx8sWdWFWacBTWFaPeMa3z2+Zmc4VK/Qgq0YRw="
+ },
+ {
+ "pname": "Microsoft.DotNet.HotReload.WebAssembly.Browser",
+ "version": "10.0.100",
+ "hash": "sha256-ppwVl5tBHFFmMZ0EjpKn4OSBYNExf/S6ojeYdefX1+k="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration",
+ "version": "10.0.0",
+ "hash": "sha256-MsLskVPpkCvov5+DWIaALCt1qfRRX4u228eHxvpE0dg="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-GcgrnTAieCV7AVT13zyOjfwwL86e99iiO/MiMOxPGG0="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.Binder",
+ "version": "10.0.0",
+ "hash": "sha256-YSiWoA3VQR22k6+bSEAUqeG7UDzZlJfHWDTubUO5V8U="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.FileExtensions",
+ "version": "10.0.0",
+ "hash": "sha256-rN+3rqrHiTaBfHgP+E4dA8Qm2cFJPfbEcd93yKLsqlQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.Configuration.Json",
+ "version": "10.0.0",
+ "hash": "sha256-VCFukgsxiQ2MFGE6RDMFTGopBHbcZL2t0ER7ENaFXRY="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection",
+ "version": "10.0.0",
+ "hash": "sha256-LYm9hVlo/R9c2aAKHsDYJ5vY9U0+3Jvclme3ou3BtvQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection",
+ "version": "9.0.9",
+ "hash": "sha256-UHG/uj9hjCRWmz2LZ4wR721ooZYGtBy4TT+lNeVzyrU="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-9iodXP39YqgxomnOPOxd/mzbG0JfOSXzFoNU3omT2Ps="
+ },
+ {
+ "pname": "Microsoft.Extensions.Diagnostics",
+ "version": "10.0.0",
+ "hash": "sha256-o7QkCisEcFIh227qBUfWFci2ns4cgEpLqpX7YvHGToQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.Diagnostics.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-cix7QxQ/g3sj6reXu3jn0cRv2RijzceaLLkchEGTt5E="
+ },
+ {
+ "pname": "Microsoft.Extensions.FileProviders.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-CHDs2HCN8QcfuYQpgNVszZ5dfXFe4yS9K2GoQXecc20="
+ },
+ {
+ "pname": "Microsoft.Extensions.FileProviders.Physical",
+ "version": "10.0.0",
+ "hash": "sha256-2Rw/cwBO+/A3QY2IjN/c8Y0LhtC1qTBL7VdJiD1J2UQ="
+ },
+ {
+ "pname": "Microsoft.Extensions.FileSystemGlobbing",
+ "version": "10.0.0",
+ "hash": "sha256-ETfVTdsdBtp69EggLg/AARTQW4lLQYVdVldXIQrsjZA="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging",
+ "version": "10.0.0",
+ "hash": "sha256-P+zPAadLL63k/GqK34/qChqQjY9aIRxZfxlB9lqsSrs="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "10.0.0",
+ "hash": "sha256-BnhgGZc01HwTSxogavq7Ueq4V7iMA3wPnbfRwQ4RhGk="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Configuration",
+ "version": "10.0.0",
+ "hash": "sha256-7/TWO1aq8hdgbcTEKDBWIjgSC9KpFN3kRnMX+12bOkU="
+ },
+ {
+ "pname": "Microsoft.Extensions.Options",
+ "version": "10.0.0",
+ "hash": "sha256-j5MOqZSKeUtxxzmZjzZMGy0vELHdvPraqwTQQQNVsYA="
+ },
+ {
+ "pname": "Microsoft.Extensions.Options.ConfigurationExtensions",
+ "version": "10.0.0",
+ "hash": "sha256-XGAs5DxMvWnmjX8dqRwKY0vsuS40SHvsfJqB1rO4L7k="
+ },
+ {
+ "pname": "Microsoft.Extensions.Primitives",
+ "version": "10.0.0",
+ "hash": "sha256-Dup08KcptLjlnpN5t5//+p4n8FUTgRAq4n/w1s6us+I="
+ },
+ {
+ "pname": "Microsoft.Extensions.Primitives",
+ "version": "9.0.9",
+ "hash": "sha256-bCd4Bj5uP4kT0hCvs0LZS8IVqEtpOIyhSiay5ijJbBA="
+ },
+ {
+ "pname": "Microsoft.Extensions.Validation",
+ "version": "10.0.0",
+ "hash": "sha256-BbmNqKlqNd/37IU5X1wjc3VCxfrBTA1bkVqk1myU+H0="
+ },
+ {
+ "pname": "Microsoft.JSInterop",
+ "version": "10.0.0",
+ "hash": "sha256-/y6la0IzcE5N/thRGLDZYsvNEeWPlW2IwEJtIu3sdaE="
+ },
+ {
+ "pname": "Microsoft.JSInterop",
+ "version": "9.0.9",
+ "hash": "sha256-fCUkGYS6HKZ0NW1xfuI5aCD2yGqpeIjaWFcS0dBZMWE="
+ },
+ {
+ "pname": "Microsoft.JSInterop.WebAssembly",
+ "version": "10.0.0",
+ "hash": "sha256-dJdTHFh4lZOmXI+88mLdJOf6UsKq/80N59+COq/KPpg="
+ },
+ {
+ "pname": "Microsoft.NET.Sdk.WebAssembly.Pack",
+ "version": "10.0.0",
+ "hash": "sha256-AWqn+WUvMjdec4KX4RpTW1ZgT4K+fYhpkrcf706Zt/w="
+ },
+ {
+ "pname": "Microsoft.NETCore.App.Runtime.Mono.browser-wasm",
+ "version": "10.0.0",
+ "hash": "sha256-1CpAq/TBpFaZncLb+Z3xaq/J7/O8ZTEl3qBidCpQj9M="
+ }
+]
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/appsettings.json b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/appsettings.json
index 1ca99ed9..1ca99ed9 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/appsettings.json
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/appsettings.json
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/css/app.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/css/app.css
index 7b3eb5d9..7b3eb5d9 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/css/app.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/css/app.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/favicon.png b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/favicon.png
index 8422b596..8422b596 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/favicon.png
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/favicon.png
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/icon-192.png b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/icon-192.png
index 166f56da..166f56da 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/icon-192.png
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/icon-192.png
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/index.html b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/index.html
index 43c7e50b..5f8af7c9 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/index.html
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/index.html
@@ -9,7 +9,7 @@
<link rel="stylesheet" href="lib/jetbrains-mono/jetbrains-mono.css"/>
<link rel="stylesheet" href="css/app.css"/>
<link rel="icon" type="image/png" href="favicon.png"/>
- <link href="Spacebar.AdminAPI.TestClient.styles.css" rel="stylesheet"/>
+ <link href="Spacebar.AdminApi.TestClient.styles.css" rel="stylesheet"/>
</head>
<body>
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css
index 3882a819..3882a819 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map
index ce99ec19..ce99ec19 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css
index 49b843b1..49b843b1 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map
index a0db8b57..a0db8b57 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css
index 1a5d6563..1a5d6563 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map
index 8df43cfc..8df43cfc 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css
index 672cbc2e..672cbc2e 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map
index 1c926af5..1c926af5 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css
index 63054109..63054109 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map
index 5fe522b6..5fe522b6 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css
index aa803594..aa803594 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map
index e4774804..e4774804 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css
index 2103919f..2103919f 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map
index 31c8d254..31c8d254 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css
index b1da1a5a..b1da1a5a 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map
index 689b5b6b..689b5b6b 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css
index aaa63792..aaa63792 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map
index 5a3e2bae..5a3e2bae 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css
index 50d34056..50d34056 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map
index 41d4357a..41d4357a 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css
index 2d714223..2d714223 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map
index 3e4a515e..3e4a515e 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css
index 7641ef68..7641ef68 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map
index 9fd3e127..9fd3e127 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.css
index b7ab57f2..b7ab57f2 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map
index a1f9a189..a1f9a189 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css
index 39934146..39934146 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map
index 90ce7987..90ce7987 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css
index 753823c2..753823c2 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map
index 34a6d2a1..34a6d2a1 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css
index 802b60d0..802b60d0 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map
index a77bdfb0..a77bdfb0 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js
index 1876be09..1876be09 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map
index c88b707f..c88b707f 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js
index 04e9185b..04e9185b 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map
index 69af4203..69af4203 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js
index 45745c85..45745c85 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map
index a3a69516..a3a69516 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js
index c573a344..c573a344 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map
index 03527afe..03527afe 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.js b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.js
index a8f49edd..a8f49edd 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.js
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.js
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map
index d0ae645b..d0ae645b 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js
index d5dc5ea1..d5dc5ea1 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map
index 901fbef5..901fbef5 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/jetbrains-mono.css b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/jetbrains-mono.css
index 78aedd2b..78aedd2b 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/jetbrains-mono.css
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/jetbrains-mono.css
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Bold.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Bold.woff2
index 4917f434..4917f434 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Bold.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Bold.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-BoldItalic.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-BoldItalic.woff2
index 536d3f71..536d3f71 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-BoldItalic.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-BoldItalic.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraBold.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraBold.woff2
index 8f88c546..8f88c546 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraBold.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraBold.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraBoldItalic.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraBoldItalic.woff2
index d1478bac..d1478bac 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraBoldItalic.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraBoldItalic.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraLight.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraLight.woff2
index b97239f3..b97239f3 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraLight.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraLight.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraLightItalic.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraLightItalic.woff2
index be01aaca..be01aaca 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraLightItalic.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ExtraLightItalic.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Italic.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Italic.woff2
index d60c270e..d60c270e 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Italic.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Italic.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Light.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Light.woff2
index 65384987..65384987 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Light.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Light.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-LightItalic.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-LightItalic.woff2
index 66ca3d2b..66ca3d2b 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-LightItalic.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-LightItalic.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Medium.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Medium.woff2
index 669d04cd..669d04cd 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Medium.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Medium.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-MediumItalic.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-MediumItalic.woff2
index 80cfd15e..80cfd15e 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-MediumItalic.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-MediumItalic.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Regular.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Regular.woff2
index 40da4276..40da4276 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Regular.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Regular.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-SemiBold.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-SemiBold.woff2
index 5ead7b0d..5ead7b0d 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-SemiBold.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-SemiBold.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-SemiBoldItalic.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-SemiBoldItalic.woff2
index c5dd294b..c5dd294b 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-SemiBoldItalic.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-SemiBoldItalic.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Thin.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Thin.woff2
index 17270e45..17270e45 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Thin.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-Thin.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ThinItalic.woff2 b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ThinItalic.woff2
index a6432151..a6432151 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPI.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ThinItalic.woff2
+++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/wwwroot/lib/jetbrains-mono/webfonts/JetBrainsMono-ThinItalic.woff2
Binary files differdiff --git a/extra/admin-api/Utilities/Spacebar.AdminAPITest/Program.cs b/extra/admin-api/Utilities/Spacebar.AdminApiTest/Program.cs
index 00900e0a..00900e0a 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPITest/Program.cs
+++ b/extra/admin-api/Utilities/Spacebar.AdminApiTest/Program.cs
diff --git a/extra/admin-api/Utilities/Spacebar.AdminAPITest/Spacebar.AdminAPITest.csproj b/extra/admin-api/Utilities/Spacebar.AdminApiTest/Spacebar.AdminApiTest.csproj
index 5daabdd0..5daabdd0 100644
--- a/extra/admin-api/Utilities/Spacebar.AdminAPITest/Spacebar.AdminAPITest.csproj
+++ b/extra/admin-api/Utilities/Spacebar.AdminApiTest/Spacebar.AdminApiTest.csproj
diff --git a/extra/admin-api/flake.lock b/extra/admin-api/flake.lock
index 664ccdaa..10a74143 100644
--- a/extra/admin-api/flake.lock
+++ b/extra/admin-api/flake.lock
@@ -20,11 +20,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1759381078,
- "narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=",
+ "lastModified": 1765472234,
+ "narHash": "sha256-9VvC20PJPsleGMewwcWYKGzDIyjckEz8uWmT0vCDYK0=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee",
+ "rev": "2fbfb1d73d239d2402a8fe03963e37aab15abe8b",
"type": "github"
},
"original": {
diff --git a/extra/admin-api/flake.nix b/extra/admin-api/flake.nix
index 6cf35682..7626bf6c 100644
--- a/extra/admin-api/flake.nix
+++ b/extra/admin-api/flake.nix
@@ -1,5 +1,5 @@
{
- description = "Spacebar Admin API, written in C#.";
+ description = "Spacebar server, written in Typescript.";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
@@ -12,81 +12,7 @@
nixpkgs,
flake-utils,
}:
- flake-utils.lib.eachSystem flake-utils.lib.allSystems (
- system:
- let
- pkgs = import nixpkgs {
- inherit system;
- };
- hashesFile = builtins.fromJSON (builtins.readFile ./hashes.json);
- lib = pkgs.lib;
- in
- {
- packages = {
- default = pkgs.buildNpmPackage {
- pname = "spacebar-server-ts";
- name = "spacebar-server-ts";
-
- meta = with lib; {
- description = "Spacebar server, a FOSS reimplementation of the Discord backend.";
- homepage = "https://github.com/spacebarchat/server";
- license = licenses.agpl3Plus;
- platforms = platforms.all;
- mainProgram = "start-bundle";
- };
-
- src = ./.;
- nativeBuildInputs = with pkgs; [ python3 ];
- npmDepsHash = hashesFile.npmDepsHash;
- makeCacheWritable = true;
- postPatch = ''
- substituteInPlace package.json --replace 'npx patch-package' '${pkgs.nodePackages.patch-package}/bin/patch-package'
- '';
- installPhase = ''
- runHook preInstall
- set -x
- #remove packages not needed for production, or at least try to...
- npm prune --omit dev --no-save $npmInstallFlags "''${npmInstallFlagsArray[@]}" $npmFlags "''${npmFlagsArray[@]}"
- find node_modules -maxdepth 1 -type d -empty -delete
-
- mkdir -p $out
- cp -r assets dist node_modules package.json $out/
- for i in dist/**/start.js
- do
- makeWrapper ${pkgs.nodejs}/bin/node $out/bin/start-`dirname ''${i/dist\//}` --prefix NODE_PATH : $out/node_modules --add-flags $out/$i
- done
-
- set +x
- runHook postInstall
- '';
- };
-
- update-nix = pkgs.writeShellApplication {
- name = "update-nix";
- runtimeInputs = with pkgs; [
- prefetch-npm-deps
- nix
- jq
- ];
- text = ''
- nix flake update --extra-experimental-features 'nix-command flakes'
- DEPS_HASH=$(prefetch-npm-deps package-lock.json)
- TMPFILE=$(mktemp)
- jq '.npmDepsHash = "'"$DEPS_HASH"'"' hashes.json > "$TMPFILE"
- mv -- "$TMPFILE" hashes.json
- '';
- };
- };
-
- devShell = pkgs.mkShell {
- buildInputs = with pkgs; [
- nodejs
- nodePackages.typescript
- nodePackages.ts-node
- nodePackages.patch-package
- nodePackages.prettier
- ];
- };
- }
- );
+ import ./outputs.nix {
+ inherit self nixpkgs flake-utils;
+ };
}
diff --git a/extra/admin-api/nuget.config b/extra/admin-api/nuget.config
new file mode 100644
index 00000000..aa87aca2
--- /dev/null
+++ b/extra/admin-api/nuget.config
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <packageSources>
+ <!--To inherit the global NuGet package sources remove the <clear/> line below -->
+ <clear />
+ <add key="nuget" value="https://api.nuget.org/v3/index.json" />
+ <add key="dotnet10-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json" />
+ </packageSources>
+</configuration>
diff --git a/extra/admin-api/outputs.nix b/extra/admin-api/outputs.nix
new file mode 100644
index 00000000..ccbed17d
--- /dev/null
+++ b/extra/admin-api/outputs.nix
@@ -0,0 +1,128 @@
+{
+ self,
+ nixpkgs,
+ flake-utils,
+}:
+let
+ rVersion =
+ let
+ rev = self.sourceInfo.shortRev or self.sourceInfo.dirtyShortRev;
+ date = builtins.substring 0 8 self.sourceInfo.lastModifiedDate;
+ time = builtins.substring 8 6 self.sourceInfo.lastModifiedDate;
+ in
+ "preview.${date}-${time}"; #+${rev}";
+in
+flake-utils.lib.eachSystem flake-utils.lib.allSystems (
+ system:
+ let
+ pkgs = import nixpkgs {
+ inherit system;
+ };
+ lib = pkgs.lib;
+ makeNupkg =
+ {
+ name,
+ nugetDeps ? null,
+ projectReferences ? [ ],
+ projectFile ? "${name}/${name}.csproj",
+ runtimeId ? null,
+ useAppHost ? null,
+ packNupkg ? true,
+ }@args:
+ pkgs.buildDotnetModule rec {
+ inherit
+ projectReferences
+ nugetDeps
+ projectFile
+ runtimeId
+ useAppHost
+ ;
+
+ pname = "${name}";
+ version = "1.0.0-" + rVersion;
+ dotnetPackFlags = [
+ "--include-symbols"
+ "--include-source"
+ "--version-suffix ${rVersion}"
+ ];
+ # dotnetFlags = [ "-v:diag" ];
+ dotnet-sdk = pkgs.dotnet-sdk_10;
+ dotnet-runtime = pkgs.dotnet-aspnetcore_10;
+ src = pkgs.lib.cleanSource ./.;
+ packNupkg = true;
+ meta = with pkgs.lib; {
+ description = "Spacebar Server, Typescript Edition (C# extensions)";
+ homepage = "https://github.com/spacebarchat/server";
+ license = licenses.agpl3Plus;
+ maintainers = with maintainers; [ RorySys ];
+ };
+ };
+ in
+ {
+ packages =
+ let
+ proj = self.packages.${system};
+ in
+ {
+ Spacebar-Db = makeNupkg {
+ name = "Spacebar.Db";
+ nugetDeps = Spacebar.Db/deps.json;
+ };
+ Spacebar-AdminApi-Models = makeNupkg {
+ name = "Spacebar.AdminApi.Models";
+ };
+ Spacebar-ConfigModel = makeNupkg {
+ name = "Spacebar.ConfigModel";
+ };
+ Spacebar-CleanSettingsRows = makeNupkg {
+ name = "Spacebar.CleanSettingsRows";
+ nugetDeps = Spacebar.CleanSettingsRows/deps.json;
+ packNupkg = false;
+ projectReferences = [ proj.Spacebar-Db ];
+ };
+ Spacebar-AdminApi = makeNupkg {
+ name = "Spacebar.AdminApi";
+ nugetDeps = Spacebar.AdminApi/deps.json;
+ packNupkg = false;
+ projectReferences = [
+ proj.Spacebar-AdminApi-Models
+ proj.Spacebar-Db
+ ];
+
+ };
+# Spacebar-AdminApi-TestClient = makeNupkg {
+# name = "Spacebar.AdminApi.TestClient";
+# projectFile = "Utilities/Spacebar.AdminApi.TestClient/Spacebar.AdminApi.TestClient.csproj";
+# nugetDeps = Utilities/Spacebar.AdminApi.TestClient/deps.json;
+# projectReferences = [
+# proj.Spacebar-AdminApi-Models
+# ];
+## runtimeId = "browser-wasm";
+## useAppHost = false;
+# };
+ };
+
+ # containers.docker = pkgs.dockerTools.buildLayeredImage {
+ # name = "spacebar-server-ts";
+ # tag = builtins.replaceStrings [ "+" ] [ "_" ] self.packages.${system}.default.version;
+ # contents = [ self.packages.${system}.default ];
+ # config = {
+ # Cmd = [ "${self.outputs.packages.${system}.default}/bin/start-bundle" ];
+ # Expose = [ "3001" ];
+ # };
+ # };
+ }
+)
+// {
+ # nixosModules.default = import ./nix/modules/default self;
+ checks =
+ let
+ pkgs = import nixpkgs { system = "x86_64-linux"; };
+ in
+ pkgs.lib.recursiveUpdate (pkgs.lib.attrsets.unionOfDisjoint { } self.packages) {
+ x86_64-linux = {
+ # spacebar-server-tests = self.packages.x86_64-linux.default.passthru.tests;
+ # docker-image = self.containers.x86_64-linux.docker;
+ };
+ };
+}
\ No newline at end of file
diff --git a/flake.nix b/flake.nix
index c5affe66..a93f72ef 100644
--- a/flake.nix
+++ b/flake.nix
@@ -12,146 +12,154 @@
nixpkgs,
flake-utils,
}:
- let
- hashesFile = builtins.fromJSON (builtins.readFile ./hashes.json);
- rVersion =
+ nixpkgs.lib.mergeAttrs
+ (
let
- rev = self.sourceInfo.shortRev or self.sourceInfo.dirtyShortRev;
- date = builtins.substring 0 8 self.sourceInfo.lastModifiedDate;
- time = builtins.substring 8 6 self.sourceInfo.lastModifiedDate;
+ hashesFile = builtins.fromJSON (builtins.readFile ./hashes.json);
+ rVersion =
+ let
+ rev = self.sourceInfo.shortRev or self.sourceInfo.dirtyShortRev;
+ date = builtins.substring 0 8 self.sourceInfo.lastModifiedDate;
+ time = builtins.substring 8 6 self.sourceInfo.lastModifiedDate;
+ in
+ "preview.${date}-${time}"; # +${rev}";
in
- "preview.${date}-${time}+${rev}";
- in
- flake-utils.lib.eachSystem flake-utils.lib.allSystems (
- system:
- let
- pkgs = import nixpkgs {
- inherit system;
- };
- lib = pkgs.lib;
- in
- {
- packages = {
- default = pkgs.buildNpmPackage {
- pname = "spacebar-server-ts";
- nodejs = pkgs.nodejs_24;
- version = "1.0.0-" + rVersion;
-
- meta = with lib; {
- description = "Spacebar server, a FOSS reimplementation of the Discord backend.";
- homepage = "https://github.com/spacebarchat/server";
- license = licenses.agpl3Plus;
- platforms = platforms.all;
- mainProgram = "start-bundle";
- maintainers = with maintainers; [ RorySys ]; # lol.
+ flake-utils.lib.eachSystem flake-utils.lib.allSystems (
+ system:
+ let
+ pkgs = import nixpkgs {
+ inherit system;
};
+ lib = pkgs.lib;
+ in
+ {
+ packages = {
+ default = pkgs.buildNpmPackage {
+ pname = "spacebar-server-ts";
+ nodejs = pkgs.nodejs_24;
+ version = "1.0.0-" + rVersion;
- src = ./.;
- npmDepsHash = hashesFile.npmDepsHash;
- npmBuildScript = "build:src";
- makeCacheWritable = true;
- nativeBuildInputs = with pkgs; [
- python3
- ];
- installPhase =
- let
- revsFile = pkgs.writeText "spacebar-server-rev.json" (
- builtins.toJSON {
- rev = self.sourceInfo.rev or self.sourceInfo.dirtyRev;
- shortRev = self.sourceInfo.shortRev or self.sourceInfo.dirtyShortRev;
- lastModified = self.sourceInfo.lastModified;
- }
- );
- in
- ''
- runHook preInstall
- # set -x
+ meta = with lib; {
+ description = "Spacebar server, a FOSS reimplementation of the Discord backend.";
+ homepage = "https://github.com/spacebarchat/server";
+ license = licenses.agpl3Plus;
+ platforms = platforms.all;
+ mainProgram = "start-bundle";
+ maintainers = with maintainers; [ RorySys ]; # lol.
+ };
- # remove packages not needed for production, or at least try to...
- npm prune --omit dev --no-save $npmInstallFlags "''${npmInstallFlagsArray[@]}" $npmFlags "''${npmFlagsArray[@]}"
- ${./nix/trimNodeModules.sh}
+ src = ./.;
+ npmDepsHash = hashesFile.npmDepsHash;
+ npmBuildScript = "build:src";
+ makeCacheWritable = true;
+ nativeBuildInputs = with pkgs; [
+ python3
+ ];
+ installPhase =
+ let
+ revsFile = pkgs.writeText "spacebar-server-rev.json" (
+ builtins.toJSON {
+ rev = self.sourceInfo.rev or self.sourceInfo.dirtyRev;
+ shortRev = self.sourceInfo.shortRev or self.sourceInfo.dirtyShortRev;
+ lastModified = self.sourceInfo.lastModified;
+ }
+ );
+ in
+ ''
+ runHook preInstall
+ # set -x
- # Copy outputs
- echo "Installing package into $out"
- mkdir -p $out
- cp -r assets dist node_modules package.json $out/
- cp ${revsFile} $out/.rev
+ # remove packages not needed for production, or at least try to...
+ npm prune --omit dev --no-save $npmInstallFlags "''${npmInstallFlagsArray[@]}" $npmFlags "''${npmFlagsArray[@]}"
+ ${./nix/trimNodeModules.sh}
- # Create wrappers for start scripts
- echo "Creating wrappers for start scripts"
- for i in dist/**/start.js
- do
- makeWrapper ${pkgs.nodejs_24}/bin/node $out/bin/start-`dirname ''${i/dist\//}` --prefix NODE_PATH : $out/node_modules --add-flags --enable-source-maps --add-flags $out/$i
- done
+ # Copy outputs
+ echo "Installing package into $out"
+ mkdir -p $out
+ cp -r assets dist node_modules package.json $out/
+ cp ${revsFile} $out/.rev
- # set +x
- runHook postInstall
- '';
+ # Create wrappers for start scripts
+ echo "Creating wrappers for start scripts"
+ for i in dist/**/start.js
+ do
+ makeWrapper ${pkgs.nodejs_24}/bin/node $out/bin/start-`dirname ''${i/dist\//}` --prefix NODE_PATH : $out/node_modules --add-flags --enable-source-maps --add-flags $out/$i
+ done
- passthru.tests = pkgs.testers.runNixOSTest (import ./nix/tests/test-bundle-starts.nix self);
- };
+ # set +x
+ runHook postInstall
+ '';
- update-nix-hashes = pkgs.writeShellApplication {
- name = "update-nix";
- runtimeInputs = with pkgs; [
- prefetch-npm-deps
- nix
- jq
- ];
- text = ''
- rm -rf node_modules
- ${pkgs.nodejs_24}/bin/npm install --save --no-audit --no-fund --prefer-offline
- DEPS_HASH=$(prefetch-npm-deps package-lock.json)
- TMPFILE=$(mktemp)
- jq '.npmDepsHash = "'"$DEPS_HASH"'"' hashes.json > "$TMPFILE"
- mv -- "$TMPFILE" hashes.json
- '';
- };
+ passthru.tests = pkgs.testers.runNixOSTest (import ./nix/tests/test-bundle-starts.nix self);
+ };
- update-nix-flake = pkgs.writeShellApplication {
- name = "update-nix";
- runtimeInputs = with pkgs; [
- prefetch-npm-deps
- nix
- jq
- ];
- text = ''
- nix flake update --extra-experimental-features 'nix-command flakes'
- '';
- };
- };
+ update-nix-hashes = pkgs.writeShellApplication {
+ name = "update-nix";
+ runtimeInputs = with pkgs; [
+ prefetch-npm-deps
+ nix
+ jq
+ ];
+ text = ''
+ rm -rf node_modules
+ ${pkgs.nodejs_24}/bin/npm install --save --no-audit --no-fund --prefer-offline
+ DEPS_HASH=$(prefetch-npm-deps package-lock.json)
+ TMPFILE=$(mktemp)
+ jq '.npmDepsHash = "'"$DEPS_HASH"'"' hashes.json > "$TMPFILE"
+ mv -- "$TMPFILE" hashes.json
+ '';
+ };
- containers.docker = pkgs.dockerTools.buildLayeredImage {
- name = "spacebar-server-ts";
- tag = builtins.replaceStrings [ "+" ] [ "_" ] self.packages.${system}.default.version;
- contents = [ self.packages.${system}.default ];
- config = {
- Cmd = [ "${self.outputs.packages.${system}.default}/bin/start-bundle" ];
- Expose = [ "3001" ];
- };
- };
+ update-nix-flake = pkgs.writeShellApplication {
+ name = "update-nix";
+ runtimeInputs = with pkgs; [
+ prefetch-npm-deps
+ nix
+ jq
+ ];
+ text = ''
+ nix flake update --extra-experimental-features 'nix-command flakes'
+ '';
+ };
+ };
- devShells.default = pkgs.mkShell {
- buildInputs = with pkgs; [
- nodejs_24
- nodePackages.typescript
- nodePackages.patch-package
- nodePackages.prettier
- ];
- };
- }
- )
- // {
- nixosModules.default = import ./nix/modules/default self;
- checks =
- let
- pkgs = import nixpkgs { system = "x86_64-linux"; };
- in
- pkgs.lib.recursiveUpdate (pkgs.lib.attrsets.unionOfDisjoint { } self.packages) {
- x86_64-linux = {
- spacebar-server-tests = self.packages.x86_64-linux.default.passthru.tests;
- docker-image = self.containers.x86_64-linux.docker;
- };
- };
- };
+ containers.docker = pkgs.dockerTools.buildLayeredImage {
+ name = "spacebar-server-ts";
+ tag = builtins.replaceStrings [ "+" ] [ "_" ] self.packages.${system}.default.version;
+ contents = [ self.packages.${system}.default ];
+ config = {
+ Cmd = [ "${self.outputs.packages.${system}.default}/bin/start-bundle" ];
+ Expose = [ "3001" ];
+ };
+ };
+
+ devShells.default = pkgs.mkShell {
+ buildInputs = with pkgs; [
+ nodejs_24
+ nodePackages.typescript
+ nodePackages.patch-package
+ nodePackages.prettier
+ ];
+ };
+ }
+ )
+ // {
+ nixosModules.default = import ./nix/modules/default self;
+ checks =
+ let
+ pkgs = import nixpkgs { system = "x86_64-linux"; };
+ in
+ pkgs.lib.recursiveUpdate (pkgs.lib.attrsets.unionOfDisjoint { } self.packages) {
+ x86_64-linux = {
+ spacebar-server-tests = self.packages.x86_64-linux.default.passthru.tests;
+ docker-image = self.containers.x86_64-linux.docker;
+ };
+ };
+ }
+ )
+ (
+ import ./extra/admin-api/outputs.nix {
+ inherit self nixpkgs flake-utils;
+ }
+ );
}
|