From 519ab07a1c432fa2df56cc9edd1f0dd7fce30d43 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 12 Mar 2024 17:47:58 +0100 Subject: [PATCH] Enhance JSON serialization Introduced improved encoding by setting the JavaScriptEncoder to unicode ranges and added necessary using directives. Additionally, the Serialize method is now appropriately marked to indicate its use of code that requires unreferenced code during linking, following best practices for code that may be subject to trimming in a .NET environment. --- .../Elsa.JavaScript/Services/JintJavaScriptEvaluator.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/modules/Elsa.JavaScript/Services/JintJavaScriptEvaluator.cs b/src/modules/Elsa.JavaScript/Services/JintJavaScriptEvaluator.cs index 557851197..4d61ff406 100644 --- a/src/modules/Elsa.JavaScript/Services/JintJavaScriptEvaluator.cs +++ b/src/modules/Elsa.JavaScript/Services/JintJavaScriptEvaluator.cs @@ -1,6 +1,9 @@ +using System.Diagnostics.CodeAnalysis; +using System.Text.Encodings.Web; using System.Text.Json; using System.Text.Json.Serialization; using System.Text.RegularExpressions; +using System.Text.Unicode; using Elsa.Expressions.Helpers; using Elsa.Expressions.Models; using Elsa.Extensions; @@ -172,9 +175,13 @@ public class JintJavaScriptEvaluator : IJavaScriptEvaluator return result.ToObject(); } + [RequiresUnreferencedCode("Calls System.Text.Json.JsonSerializer.Serialize(TValue, JsonSerializerOptions)")] private static string Serialize(object value) { - var options = new JsonSerializerOptions(); + var options = new JsonSerializerOptions + { + Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) + }; options.Converters.Add(new JsonStringEnumConverter()); return JsonSerializer.Serialize(value, options);