using Elsa.Caching.Features; using Elsa.Common.Features; using Elsa.Expressions.Features; using Elsa.Extensions; using Elsa.Features.Abstractions; using Elsa.Features.Attributes; using Elsa.Features.Services; using Elsa.Expressions.Liquid.Contracts; using Elsa.Expressions.Liquid.Filters; using Elsa.Expressions.Liquid.Handlers; using Elsa.Expressions.Liquid.Options; using Elsa.Expressions.Liquid.Providers; using Elsa.Expressions.Liquid.Services; using Fluid.Filters; using Microsoft.Extensions.DependencyInjection; namespace Elsa.Expressions.Liquid.Features; /// /// Configures liquid functionality. /// [DependsOn(typeof(MemoryCacheFeature))] [DependsOn(typeof(MediatorFeature))] [DependsOn(typeof(ExpressionsFeature))] public class LiquidFeature : FeatureBase { /// public LiquidFeature(IModule serviceConfiguration) : base(serviceConfiguration) { } /// /// Configures the Fluid options. /// public Action FluidOptions { get; set; } = options => { options.ConfigureFilters = context => context.Options.Filters .WithArrayFilters() .WithStringFilters() .WithNumberFilters() .WithMiscFilters(); }; /// public override void Apply() { Services.Configure(FluidOptions); Services .AddHandlersFrom() .AddScoped() .AddScoped() .AddExpressionDescriptorProvider() .AddLiquidFilter("base64") .AddLiquidFilter("keys") ; } }