From e3deafedf39bdbfd206a2e8bcc5f919136eebecf Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 20 Jan 2023 19:26:38 +0100 Subject: [PATCH] Add toJson JS function The Jint implementation of JSON.stringify only supports a limited set of objects (not .NET LocalDate for example) --- .../Implementations/JintJavaScriptEvaluator.cs | 4 +++- .../Providers/CommonFunctionDefinitionProvider.cs | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/modules/Elsa.JavaScript/Implementations/JintJavaScriptEvaluator.cs b/src/modules/Elsa.JavaScript/Implementations/JintJavaScriptEvaluator.cs index 9f89a334f..a1e64708a 100644 --- a/src/modules/Elsa.JavaScript/Implementations/JintJavaScriptEvaluator.cs +++ b/src/modules/Elsa.JavaScript/Implementations/JintJavaScriptEvaluator.cs @@ -1,4 +1,5 @@ -using Elsa.Expressions.Models; +using System.Text.Json; +using Elsa.Expressions.Models; using Elsa.Extensions; using Elsa.JavaScript.Notifications; using Elsa.JavaScript.Options; @@ -61,6 +62,7 @@ public class JintJavaScriptEvaluator : IJavaScriptEvaluator engine.SetValue("isNullOrWhiteSpace", (Func)string.IsNullOrWhiteSpace); engine.SetValue("isNullOrEmpty", (Func)string.IsNullOrEmpty); + engine.SetValue("toJson", (Func)(value => JsonSerializer.Serialize(value))); // Add common .NET types. engine.RegisterType(); diff --git a/src/modules/Elsa.JavaScript/Providers/CommonFunctionDefinitionProvider.cs b/src/modules/Elsa.JavaScript/Providers/CommonFunctionDefinitionProvider.cs index 3f96e6869..031f84bf5 100644 --- a/src/modules/Elsa.JavaScript/Providers/CommonFunctionDefinitionProvider.cs +++ b/src/modules/Elsa.JavaScript/Providers/CommonFunctionDefinitionProvider.cs @@ -41,6 +41,11 @@ internal class CommonFunctionDefinitionProvider : FunctionDefinitionProvider .Parameter("value", "string") .ReturnType("boolean")); + yield return CreateFunctionDefinition(builder => builder + .Name("toJson") + .Parameter("value", "any") + .ReturnType("string")); + // Variable getter and setters. foreach (var variable in context.Variables) {