using System.Text.Json;
using System.Text.Json.Serialization;
using System.Text.RegularExpressions;
using Elsa.Expressions.Contracts;
using Elsa.Expressions.Models;
using Elsa.Extensions;
using Elsa.JavaScript.Contracts;
using Elsa.JavaScript.Notifications;
using Elsa.JavaScript.Options;
using Elsa.Mediator.Contracts;
using Elsa.Workflows.Core.Models;
using Elsa.Workflows.Management.Activities;
using Elsa.Workflows.Management.Contracts;
using Elsa.Workflows.Management.Extensions;
using Humanizer;
using Jint;
using Microsoft.Extensions.Options;
// ReSharper disable ConvertClosureToMethodGroup
namespace Elsa.JavaScript.Services;
///
/// Provides a JavaScript evaluator using Jint.
///
public class JintJavaScriptEvaluator : IJavaScriptEvaluator
{
private readonly IEventPublisher _mediator;
private readonly IActivityRegistry _activityRegistry;
private readonly IExpressionEvaluator _expressionEvaluator;
private readonly JintOptions _jintOptions;
///
/// Constructor.
///
public JintJavaScriptEvaluator(IEventPublisher mediator, IActivityRegistry activityRegistry, IExpressionEvaluator expressionEvaluator, IOptions scriptOptions)
{
_mediator = mediator;
_activityRegistry = activityRegistry;
_expressionEvaluator = expressionEvaluator;
_jintOptions = scriptOptions.Value;
}
///
public async Task