elsa-core/src/modules/Elsa.Secrets.JavaScript/Scripting/JavaScript/SecretsJavaScriptHandler.cs
2026-06-01 09:26:05 +02:00

28 lines
1.1 KiB
C#

using Elsa.Expressions.JavaScript.Notifications;
using Elsa.Expressions.JavaScript.TypeDefinitions.Abstractions;
using Elsa.Expressions.JavaScript.TypeDefinitions.Models;
using Elsa.Mediator.Contracts;
using Elsa.Secrets.Contracts;
using JetBrains.Annotations;
namespace Elsa.Secrets.JavaScript.Scripting.JavaScript;
[UsedImplicitly]
public class SecretsJavaScriptHandler(ISecretResolver secretResolver) : FunctionDefinitionProvider, INotificationHandler<EvaluatingJavaScript>
{
public Task HandleAsync(EvaluatingJavaScript notification, CancellationToken cancellationToken)
{
var context = notification.Context;
notification.Engine.SetValue("getSecret", (Func<string, Task<string>>)(name => secretResolver.ResolveAsync(name, context.CancellationToken)));
return Task.CompletedTask;
}
protected override IEnumerable<FunctionDefinition> GetFunctionDefinitions(TypeDefinitionContext context)
{
yield return CreateFunctionDefinition(function => function
.Name("getSecret")
.ReturnType("Promise<string>")
.Parameter("name", "string"));
}
}