From 696b0eedd55f861c1378bc13a6eae37921cee1a6 Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Wed, 26 Aug 2026 09:40:46 +0200 Subject: [PATCH] Fix formatting. --- .../Internal/EnumToStringConverter.cs | 34 +++++++++++++++++++ .../Scripting/JintScript.cs | 4 +-- .../Rules/RuleEnqueuerTests.cs | 1 - 3 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/Internal/EnumToStringConverter.cs diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/Internal/EnumToStringConverter.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/Internal/EnumToStringConverter.cs new file mode 100644 index 000000000..7a2e16d39 --- /dev/null +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/Internal/EnumToStringConverter.cs @@ -0,0 +1,34 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System.Diagnostics.CodeAnalysis; +using Jint; +using Jint.Native; +using Jint.Runtime.Interop; + +namespace Squidex.Domain.Apps.Core.Scripting.Internal; + +internal sealed class EnumToStringConverter : IObjectConverter +{ + public static readonly EnumToStringConverter Instance = new EnumToStringConverter(); + + private EnumToStringConverter() + { + } + + public bool TryConvert(Engine engine, object value, [MaybeNullWhen(false)] out JsValue result) + { + if (value is Enum) + { + result = value.ToString(); + return true; + } + + result = JsValue.Null; + return false; + } +} diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/JintScript.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/JintScript.cs index c7fc8f791..48e1d9267 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/JintScript.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/JintScript.cs @@ -54,8 +54,8 @@ internal sealed class JintScript : IScript, IAsyncScript, IDisposable engine = new Engine(options => { - options.AddObjectConverter(JintObjectConverter.Instance); - options.AllowOperatorOverloading(); + options.AddObjectConverter(JintObjectConverter.Instance, JintObjectConverter.HandledTypes); + options.AddObjectConverter(EnumToStringConverter.Instance); options.AllowClrWrite(!scriptOptions.Readonly); options.SetTypeConverter(engine => new CustomClrConverter(engine)); options.SetReferencesResolver(NullPropagation.Instance); diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleEnqueuerTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleEnqueuerTests.cs index 882833246..193839487 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleEnqueuerTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleEnqueuerTests.cs @@ -398,7 +398,6 @@ public class RuleEnqueuerTests : GivenContext Assert.Same(contexts[2].Context.Rules, contexts[3].Context.Rules); } - private static RulesContext MatchingContext(Rule rule) { // These two properties must not be set to true for performance reasons.