elsa-core/src/scripting/Elsa.Scripting.JavaScript/Extensions/JavaScriptServiceCollectionExtensions.cs

50 lines
2.6 KiB
C#
Raw Normal View History

using Elsa.Scripting.JavaScript.Options;
using Elsa.Scripting.JavaScript.Services;
using System;
2020-12-18 10:35:29 +00:00
using Elsa;
2021-03-06 12:04:16 +00:00
using Elsa.Activities.JavaScript;
Merge branch 'develop' into feature/elsa-2.0 # Conflicts: # Samples.sln # src/core/Elsa.Abstractions/Elsa.Abstractions.csproj # src/core/Elsa.Core/Elsa.Core.csproj # src/persistence/Elsa.Persistence.EntityFrameworkCore/Extensions/EFCoreServiceCollectionExtensions.cs # src/providers/Elsa.Persistence.EntityFrameworkCore/Elsa.Persistence.EntityFrameworkCore.csproj # src/providers/Elsa.Persistence.YesSql/DbContexts/DesignTimeDbContextFactoryBase.cs # src/providers/Elsa.Persistence.YesSql/DbContexts/MySqlContext.cs # src/providers/Elsa.Persistence.YesSql/DbContexts/MySqlContextFactory.cs # src/providers/Elsa.Persistence.YesSql/Elsa.Persistence.YesSql.csproj # src/providers/Elsa.Persistence.YesSql/Migrations/MySql/20200113102615_InitialCreate.Designer.cs # src/providers/Elsa.Persistence.YesSql/Migrations/MySql/20200113102615_InitialCreate.cs # src/providers/Elsa.Persistence.YesSql/Migrations/MySql/MySqlContextModelSnapshot.cs # src/samples/Elsa.Samples.Timers/Elsa.Samples.Timers.csproj # src/samples/Sample05/Program.cs # src/samples/Sample08/Sample08.csproj # src/samples/Sample08/Startup.cs # src/samples/Sample14/Program.cs # src/samples/Sample14/Sample14.csproj # src/samples/Sample16/Sample16.csproj # src/samples/Sample18/Program.cs # src/samples/Sample18/Sample18.csproj # src/samples/Sample19/Sample19.csproj # src/samples/Sample19/Startup.cs # src/samples/Sample21/Sample21.csproj # src/samples/Sample21/Startup.cs # src/samples/Sample22/Program.cs # src/samples/Sample22/Sample22.csproj # src/samples/Sample23/Program.cs # src/samples/Sample23/Sample23.csproj
2020-01-16 20:23:45 +00:00
using Elsa.Expressions;
using Elsa.Options;
using Elsa.Scripting.JavaScript.Typings;
2021-09-13 15:29:40 +00:00
using Elsa.Scripting.JavaScript.Providers;
// ReSharper disable once CheckNamespace
namespace Microsoft.Extensions.DependencyInjection
{
public static class JavaScriptServiceCollectionExtensions
{
public static IServiceCollection AddJavaScriptExpressionEvaluator(this IServiceCollection services)
{
return services
2021-09-13 15:29:40 +00:00
.AddScoped<ITypeScriptDefinitionService, TypeScriptDefinitionService>()
.AddTypeScriptDefinitionProvider<DotNetTypeScriptDefinitionProvider>()
.AddScoped<IJavaScriptService, JintJavaScriptEvaluator>()
2021-04-12 20:08:44 +00:00
.AddTransient(s => new JintEvaluationResultConverterFactory(s).GetConverter())
.AddTransient<IConvertsEnumerableToObject>(s => new EnumerableResultConverter(default))
.TryAddProvider<IExpressionHandler, JavaScriptExpressionHandler>(ServiceLifetime.Scoped)
.AddJavaScriptTypeDefinitionProvider<CommonTypeDefinitionProvider>()
.AddJavaScriptTypeDefinitionProvider<EnumTypeDefinitionProvider>()
.AddJavaScriptTypeDefinitionProvider<EnumerableTypeDefinitionProvider>()
.AddJavaScriptTypeDefinitionProvider<WorkflowContextTypeDefinitionProvider>()
.AddJavaScriptTypeDefinitionProvider<WorkflowVariablesTypeDefinitionProvider>()
.AddJavaScriptTypeDefinitionProvider<BlacklistedTypeDefinitionProvider>()
.AddNotificationHandlers(typeof(JavaScriptServiceCollectionExtensions));
}
public static IServiceCollection AddJavaScriptTypeDefinitionProvider<T>(this IServiceCollection services) where T: class, ITypeDefinitionProvider => services.AddScoped<ITypeDefinitionProvider, T>();
2021-09-13 15:29:40 +00:00
public static IServiceCollection AddTypeScriptDefinitionProvider<T>(this IServiceCollection services) where T : class, ITypeScriptDefinitionProvider => services.AddScoped<ITypeScriptDefinitionProvider, T>();
public static IServiceCollection WithJavaScriptOptions(this IServiceCollection services, Action<ScriptOptions> configureOptions)
{
services.Configure(configureOptions);
return services;
}
2021-03-06 12:04:16 +00:00
public static ElsaOptionsBuilder AddJavaScriptActivities(this ElsaOptionsBuilder options)
2021-03-06 12:04:16 +00:00
{
return options.AddActivitiesFrom<RunJavaScript>();
}
}
}