Update dependencies and streamline JavaScript engine configuration
Refactor InputFunctionsDefinitionProvider to remove unused parameter. Simplify JintJavaScriptEvaluator object wrapping configuration and update Jint package to version 4.0.1. Add type Random to ConfigureEngineWithCommonTypes and enhance error handling in TaskReporter.
This commit is contained in:
parent
d0316687c1
commit
96371b683c
|
|
@ -44,7 +44,7 @@
|
|||
<PackageVersion Include="Humanizer.Core" Version="2.14.1" />
|
||||
<PackageVersion Include="IronCompress" Version="1.5.2" />
|
||||
<PackageVersion Include="JetBrains.Annotations" Version="2024.2.0" />
|
||||
<PackageVersion Include="Jint" Version="4.0.0" />
|
||||
<PackageVersion Include="Jint" Version="4.0.1" />
|
||||
<PackageVersion Include="LinqKit.Core" Version="1.2.5" />
|
||||
<PackageVersion Include="MailKit" Version="4.7.1.1" />
|
||||
<PackageVersion Include="MassTransit" Version="8.2.3" />
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ public class ConfigureEngineWithCommonTypes : INotificationHandler<EvaluatingJav
|
|||
engine.RegisterType<DateTimeOffset>();
|
||||
engine.RegisterType<TimeSpan>();
|
||||
engine.RegisterType<Guid>();
|
||||
engine.RegisterType<Random>();
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ using Elsa.JavaScript.Contracts;
|
|||
using Elsa.JavaScript.TypeDefinitions.Abstractions;
|
||||
using Elsa.JavaScript.TypeDefinitions.Models;
|
||||
using Elsa.Workflows.Activities;
|
||||
using Elsa.Workflows.Management;
|
||||
using Humanizer;
|
||||
using JetBrains.Annotations;
|
||||
|
||||
|
|
@ -9,8 +10,7 @@ namespace Elsa.JavaScript.Providers;
|
|||
|
||||
/// Produces <see cref="FunctionDefinition"/>s for common functions.
|
||||
[UsedImplicitly]
|
||||
internal class InputFunctionsDefinitionProvider(ITypeAliasRegistry typeAliasRegistry, IWorkflowDefinitionService workflowDefinitionService)
|
||||
: FunctionDefinitionProvider
|
||||
internal class InputFunctionsDefinitionProvider(ITypeAliasRegistry typeAliasRegistry) : FunctionDefinitionProvider
|
||||
{
|
||||
protected override ValueTask<IEnumerable<FunctionDefinition>> GetFunctionDefinitionsAsync(TypeDefinitionContext context)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using Acornima.Ast;
|
||||
using Elsa.Expressions.Helpers;
|
||||
using Elsa.Expressions.Models;
|
||||
using Elsa.JavaScript.Contracts;
|
||||
|
|
@ -8,7 +10,6 @@ using Elsa.JavaScript.Notifications;
|
|||
using Elsa.JavaScript.ObjectConverters;
|
||||
using Elsa.JavaScript.Options;
|
||||
using Elsa.Mediator.Contracts;
|
||||
using Esprima.Ast;
|
||||
using Jint;
|
||||
using Jint.Runtime.Interop;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
|
|
@ -46,18 +47,13 @@ public class JintJavaScriptEvaluator(IConfiguration configuration, INotification
|
|||
options ??= new ExpressionEvaluatorOptions();
|
||||
|
||||
var engineOptions = new Jint.Options();
|
||||
;
|
||||
|
||||
if (_jintOptions.AllowClrAccess)
|
||||
engineOptions.AllowClr();
|
||||
|
||||
// Wrap objects in ObjectWrapper instances and set their prototype to Array.prototype if they are array-like.
|
||||
engineOptions.SetWrapObjectHandler((engine, target, type) =>
|
||||
{
|
||||
ConfigureClrAccess(opts);
|
||||
ConfigureObjectWrapper(opts);
|
||||
ConfigureObjectConverters(opts);
|
||||
});
|
||||
ConfigureClrAccess(engineOptions);
|
||||
ConfigureObjectWrapper(engineOptions);
|
||||
ConfigureObjectConverters(engineOptions);
|
||||
|
||||
engineOptions.Interop.ObjectConverters.Add(new ByteArrayConverter());
|
||||
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ internal class CommonTypeDefinitionProvider(ITypeDescriber typeDescriber) : Type
|
|||
{
|
||||
protected override IEnumerable<TypeDefinition> GetTypeDefinitions(TypeDefinitionContext context)
|
||||
{
|
||||
yield return _typeDescriber.DescribeType(typeof(Guid));
|
||||
yield return _typeDescriber.DescribeType(typeof(JsonObject));
|
||||
yield return _typeDescriber.DescribeType(typeof(Random));
|
||||
yield return typeDescriber.DescribeType(typeof(Guid));
|
||||
yield return typeDescriber.DescribeType(typeof(JsonObject));
|
||||
yield return typeDescriber.DescribeType(typeof(Random));
|
||||
}
|
||||
}
|
||||
|
|
@ -1,13 +1,12 @@
|
|||
using Elsa.Abstractions;
|
||||
using Elsa.Workflows.Contracts;
|
||||
using Elsa.Workflows.Management.Activities.WorkflowDefinitionActivity;
|
||||
using Elsa.Workflows.Management.Contracts;
|
||||
using Elsa.Workflows.Management;
|
||||
using JetBrains.Annotations;
|
||||
|
||||
namespace Elsa.Workflows.Api.Endpoints.ActivityDescriptors.List;
|
||||
|
||||
[PublicAPI]
|
||||
internal class List(IActivityRegistry registry, IActivityRegistryPopulator registryPopulator, WorkflowDefinitionActivityProvider workflowDefinitionActivityProvider) : ElsaEndpointWithoutRequest<Response>
|
||||
internal class List(IActivityRegistry registry, IActivityRegistryPopulator registryPopulator) : ElsaEndpointWithoutRequest<Response>
|
||||
{
|
||||
public override void Configure()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,25 +1,36 @@
|
|||
using Elsa.Workflows.Contracts;
|
||||
using Elsa.Workflows.Helpers;
|
||||
using Elsa.Workflows.Runtime.Activities;
|
||||
using Elsa.Workflows.Runtime.Options;
|
||||
using Elsa.Workflows.Runtime.Stimuli;
|
||||
|
||||
namespace Elsa.Workflows.Runtime;
|
||||
|
||||
/// <inheritdoc />
|
||||
public class TaskReporter(IStimulusSender stimulusSender) : ITaskReporter
|
||||
public class TaskReporter(IBookmarkQueue stimulusSender, IStimulusHasher stimulusHasher) : ITaskReporter
|
||||
{
|
||||
private static readonly string ActivityTypeName = ActivityTypeNameHelper.GenerateTypeName<RunTask>();
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task ReportCompletionAsync(string taskId, object? result = default, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var bookmarkPayload = new RunTaskStimulus(taskId, default!);
|
||||
var stimulus = new RunTaskStimulus(taskId, default!);
|
||||
|
||||
var input = new Dictionary<string, object>
|
||||
{
|
||||
[RunTask.InputKey] = result!
|
||||
};
|
||||
|
||||
var sender = new StimulusMetadata
|
||||
var bookmarkQueueItem = new NewBookmarkQueueItem
|
||||
{
|
||||
Input = input,
|
||||
ActivityTypeName = ActivityTypeName,
|
||||
StimulusHash = stimulusHasher.Hash(ActivityTypeName, stimulus),
|
||||
Options = new ResumeBookmarkOptions
|
||||
{
|
||||
Input = input
|
||||
}
|
||||
};
|
||||
await stimulusSender.SendAsync<RunTask>(bookmarkPayload, sender, cancellationToken: cancellationToken);
|
||||
|
||||
await stimulusSender.EnqueueAsync(bookmarkQueueItem, cancellationToken);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue