using ConsoleLogStreaming.Core.DependencyInjection;
using ConsoleLogStreaming.Core.Options;
using Elsa.Diagnostics.ConsoleLogs.RealTime;
using Elsa.Diagnostics.ConsoleLogs.Services;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting;
namespace Elsa.Diagnostics.ConsoleLogs.Extensions;
public static class HostServiceCollectionExtensions
{
///
/// Registers the host-level console capture pipeline.
///
public static IServiceCollection AddConsoleLogsHost(this IServiceCollection services, Action? configure = null)
{
services.AddConsoleLogContextServices();
services.AddConsoleLogStreaming(options =>
{
ElsaConsoleLogOptions.ConfigureDefaults(options);
configure?.Invoke(options);
});
services.AddSignalR();
services.DecorateConsoleLogProvider();
services.TryAddSingleton();
services.TryAddSingleton();
services.TryAddEnumerable(ServiceDescriptor.Singleton());
return services;
}
}