diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/ContentDataProperty.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/ContentDataProperty.cs index 11e9fa29b..a8199232f 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/ContentDataProperty.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/ContentDataProperty.cs @@ -5,6 +5,7 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using Jint; using Jint.Native; using Jint.Runtime; using Squidex.Domain.Apps.Core.Contents; @@ -62,4 +63,4 @@ namespace Squidex.Domain.Apps.Core.Scripting.ContentWrapper } } } -} \ No newline at end of file +} diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/JsonMapper.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/JsonMapper.cs index ced88687c..e523575a7 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/JsonMapper.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/JsonMapper.cs @@ -1,4 +1,4 @@ -// ========================================================================== +// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschraenkt) @@ -50,7 +50,7 @@ namespace Squidex.Domain.Apps.Core.Scripting.ContentWrapper target[i] = Map(arr[i], engine); } - return engine.Array.Construct(target); + return engine.Realm.Intrinsics.Array.Construct(target); } private static JsValue FromObject(JsonObject obj, Engine engine) @@ -130,4 +130,4 @@ namespace Squidex.Domain.Apps.Core.Scripting.ContentWrapper throw new ArgumentException("Invalid json type.", nameof(value)); } } -} \ No newline at end of file +} diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/Internal/Parser.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/Internal/Parser.cs index b0f1c5612..9a771a2b5 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/Internal/Parser.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/Internal/Parser.cs @@ -17,7 +17,7 @@ namespace Squidex.Domain.Apps.Core.Scripting.Internal private static readonly TimeSpan CacheDuration = TimeSpan.FromMinutes(10); private static readonly ParserOptions DefaultParserOptions = new ParserOptions { - AdaptRegexp = true, Tolerant = true, Loc = true + AdaptRegexp = true, Tolerant = true }; private readonly IMemoryCache cache; diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/JintScriptEngine.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/JintScriptEngine.cs index 111ecc1c4..cd381a5a6 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/JintScriptEngine.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/JintScriptEngine.cs @@ -88,11 +88,11 @@ namespace Squidex.Domain.Apps.Core.Scripting tcs.TrySetResult(JsonMapper.Map(value)); })); - Execute(context.Engine, script); + var result = Execute(context.Engine, script); if (!context.IsAsync) { - tcs.TrySetResult(JsonMapper.Map(context.Engine.GetCompletionValue())); + tcs.TrySetResult(JsonMapper.Map(result)); } return await tcs.Task; @@ -169,9 +169,9 @@ namespace Squidex.Domain.Apps.Core.Scripting .Extend(vars, options) .Extend(extensions); - Execute(context.Engine, script); + var result = Execute(context.Engine, script); - return JsonMapper.Map(context.Engine.GetCompletionValue()); + return JsonMapper.Map(result); } private ScriptExecutionContext CreateEngine(ScriptOptions options) @@ -204,13 +204,13 @@ namespace Squidex.Domain.Apps.Core.Scripting return context; } - private void Execute(Engine engine, string script) + private JsValue Execute(Engine engine, string script) { try { var program = parser.Parse(script); - engine.Execute(program); + return engine.Evaluate(program); } catch (ArgumentException ex) { diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj b/backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj index 42bd84ba2..f030ff0af 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj @@ -19,6 +19,7 @@ + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -27,7 +28,6 @@ - diff --git a/backend/src/Squidex/Config/Domain/InfrastructureServices.cs b/backend/src/Squidex/Config/Domain/InfrastructureServices.cs index e5b6d9558..a45549ef3 100644 --- a/backend/src/Squidex/Config/Domain/InfrastructureServices.cs +++ b/backend/src/Squidex/Config/Domain/InfrastructureServices.cs @@ -61,7 +61,6 @@ namespace Squidex.Config.Domain { TimeoutExecution = timeoutExecution, TimeoutScript = timeoutScript - }).As(); services.AddSingletonAs(_ => SystemClock.Instance) diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/ContentDataObjectTests.cs b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/ContentDataObjectTests.cs index a3e6936b5..cba66c070 100644 --- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/ContentDataObjectTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/ContentDataObjectTests.cs @@ -244,7 +244,7 @@ namespace Squidex.Domain.Apps.Core.Operations.Scripting engine.SetValue("data", new ContentDataObject(engine, content)); - var result = engine.Execute(@" + var result = engine.Evaluate(@" var result = []; for (var x in data) { var field = data[x]; @@ -253,7 +253,7 @@ namespace Squidex.Domain.Apps.Core.Operations.Scripting result.push(field[y]); } } - result;").GetCompletionValue().ToObject(); + result;").ToObject(); Assert.Equal(new[] { "1", "2", "3", "4" }, result); } diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineTests.cs b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineTests.cs index b0e08b55a..0f453717c 100644 --- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineTests.cs @@ -65,7 +65,7 @@ namespace Squidex.Domain.Apps.Core.Operations.Scripting public async Task ExecuteAsync_should_catch_script_syntax_errors() { const string script = @" - invalid() + invalid(() "; await Assert.ThrowsAsync(() => sut.ExecuteAsync(new ScriptVars(), script)); @@ -151,7 +151,7 @@ namespace Squidex.Domain.Apps.Core.Operations.Scripting var context = new ScriptVars { ["data"] = content }; const string script = @" - invalid(); + invalid((); "; await Assert.ThrowsAsync(() => sut.TransformAsync(context, script, contentOptions)); diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintUserTests.cs b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintUserTests.cs index 08d22b92b..cf73d24f1 100644 --- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintUserTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintUserTests.cs @@ -94,7 +94,7 @@ namespace Squidex.Domain.Apps.Core.Operations.Scripting engine.SetValue("user", JintUser.Create(engine, new ClaimsPrincipal(new[] { identity }))); - return engine.Execute(script).GetCompletionValue().ToObject(); + return engine.Evaluate(script).ToObject(); } } }