using LANCommander.SDK.Abstractions; using LANCommander.SDK.Extensions; using LANCommander.SDK.Plugins; using LANCommander.SDK.Services; using LANCommander.Server.Clients; using LANCommander.Server.ImportExport.Extensions; using LANCommander.Server.Providers; using LANCommander.Server.Services.Abstractions; using LANCommander.Server.Services.Extensions; using LANCommander.Server.Services.Providers; using LANCommander.UI.Extensions; namespace LANCommander.Server.Startup; public static class Services { public static WebApplicationBuilder AddLANCommanderServices(this WebApplicationBuilder builder) { builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddLANCommanderClient(); builder.Services.AddLANCommanderServer(); builder.Services.AddLANCommanderImportExport(); builder.Services.AddLANCommanderUI(); builder.Services.AddAntDesign(); builder.Services.AddHttpClient(); builder.Services.AddHttpContextAccessor(); builder.AddServiceDefaults(); // Plugin framework: discover drop-in plugins and let them register services. Must run last, // while the service collection is still open (the provider is built immediately after). PluginBootstrap.ConfigurePlugins(builder.Services, PluginHost.Server); return builder; } }