using Elsa.Expressions.Extensions; using Elsa.Expressions.Services; using Elsa.Liquid.Expressions; using Elsa.Liquid.Filters; using Elsa.Liquid.Handlers; using Elsa.Liquid.Implementations; using Elsa.Liquid.Options; using Elsa.Liquid.Providers; using Elsa.Liquid.Services; using Elsa.Mediator.Extensions; using Microsoft.Extensions.DependencyInjection; namespace Elsa.Liquid.Extensions; public static class DependencyInjectionExtensions { public static IServiceCollection AddLiquidExpressions(this IServiceCollection services) { return services .AddMemoryCache() .AddHandlersFrom() .AddSingleton() .AddSingleton() .AddSingleton() .AddExpressionHandler() .AddLiquidFilter("json") .AddLiquidFilter("base64"); } public static IServiceCollection AddLiquidFilter(this IServiceCollection services, string name) where T : class, ILiquidFilter { services.Configure(options => options.FilterRegistrations[name] = typeof(T)); services.AddScoped(); return services; } public static IServiceCollection RegisterLiquidTag(this IServiceCollection services, Action configure) { services.Configure(options => options.ParserConfiguration.Add(configure)); return services; } /// /// Enables access to .NET configuration via the Configuration keyword. /// Do not enable this option if you execute user supplied (or otherwise untrusted) workflows. /// public static IServiceCollection EnableLiquidConfigurationAccess(this IServiceCollection services) { services.Configure(options => options.AllowConfigurationAccess = true); return services; } }