diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d6090df..64a25693 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ Change log ========== +## v3.34.0 - April 19, 2026 + * In JavaScriptEngineSwitcher.Jint: + * Jint was updated to version 4.8.0 + * In configuration settings of the Jint JS engine was added two new properties: `CompileRegex` (default `false`) and `DebuggerExceptionThrownCallback` (default `null`) + * In JavaScriptEngineSwitcher.Yantra added support for the YantraJS version 1.2.334 + ## v3.33.1 - March 12, 2026 * In JavaScriptEngineSwitcher.Jint added support for the Jint version 4.6.3 * In JavaScriptEngineSwitcher.Yantra added support for the YantraJS version 1.2.314 diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Properties/AssemblyInfo.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Properties/AssemblyInfo.cs index bc265cc7..9b24719e 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Properties/AssemblyInfo.cs +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Properties/AssemblyInfo.cs @@ -13,5 +13,5 @@ [assembly: ComVisible(false)] [assembly: Guid("39487053-b459-4433-ae93-e00affc653c6")] -[assembly: AssemblyVersion("3.33.1.0")] -[assembly: AssemblyFileVersion("3.33.1.0")] \ No newline at end of file +[assembly: AssemblyVersion("3.34.0.0")] +[assembly: AssemblyFileVersion("3.34.0.0")] \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/package.json b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/package.json index a586e8e0..ca155f95 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/package.json +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/package.json @@ -1,7 +1,7 @@ { "name": "jsengineswitcher.sample.aspnet4.mvc4", "private": true, - "version": "3.33.1", + "version": "3.34.0", "devDependencies": { "gulp": "4.0.2", "del": "5.1.0", diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets.csproj index d24da41a..5f6a21cc 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Client-Side Assets for ASP.NET Core Samples - 3.33.1 + 3.34.0 netstandard2.0 Library false diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/package.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/package.json index b00547b9..a101394d 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/package.json +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/package.json @@ -1,7 +1,7 @@ { "name": "javascriptengineswitcher.sample.aspnetcore.clientsideassets", "private": true, - "version": "3.33.1", + "version": "3.34.0", "devDependencies": { "gulp": "4.0.2", "del": "5.1.0", diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.csproj index 15f00dc8..687176f0 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Infrastructure for ASP.NET Core Samples - 3.33.1 + 3.34.0 net451;netstandard1.6;netstandard2.0;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0;net10.0 1.6.0 Library @@ -42,15 +42,15 @@ - + - + - + diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1.csproj index a60b6cb6..a4e2b3d8 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Sample ASP.NET Core 1.0 MVC 1 Site - 3.33.1 + 3.34.0 netcoreapp1.0 1.0.16 Exe diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10.csproj index d9e790a6..769c56e3 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Sample ASP.NET Core 10.0 MVC 10 Site - 3.33.1 + 3.34.0 net10.0 enable Exe diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1.csproj index d2102558..6ea11a6a 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Sample ASP.NET Core 1.0 Full MVC 1 Site - 3.33.1 + 3.34.0 net451 Exe true diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21.csproj index 9fe6e217..22f3db85 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Sample ASP.NET Core 2.1 MVC 2.1 Site - 3.33.1 + 3.34.0 netcoreapp2.1 Exe true diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31.csproj index f8bc9185..9d8a07b3 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Sample ASP.NET Core 3.1 MVC 3.1 Site - 3.33.1 + 3.34.0 netcoreapp3.1 Exe true diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5.csproj index c0600714..db4881f8 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Sample ASP.NET Core 5.0 MVC 5 Site - 3.33.1 + 3.34.0 net5.0 Exe true diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6.csproj index 00242e76..cc90a376 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Sample ASP.NET Core 6.0 MVC 6 Site - 3.33.1 + 3.34.0 net6.0 enable Exe diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7.csproj index 82a56176..5bac98d4 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Sample ASP.NET Core 7.0 MVC 7 Site - 3.33.1 + 3.34.0 net7.0 enable Exe diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8.csproj index ce8ed812..1b48b919 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Sample ASP.NET Core 8.0 MVC 8 Site - 3.33.1 + 3.34.0 net8.0 enable Exe diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.csproj index 492f52cb..14db6fb1 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Sample ASP.NET Core 9.0 MVC 9 Site - 3.33.1 + 3.34.0 net9.0 enable Exe diff --git a/samples/JavaScriptEngineSwitcher.Sample.Logic/JavaScriptEngineSwitcher.Sample.Logic.csproj b/samples/JavaScriptEngineSwitcher.Sample.Logic/JavaScriptEngineSwitcher.Sample.Logic.csproj index b37c5942..0bb80f87 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.Logic/JavaScriptEngineSwitcher.Sample.Logic.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.Logic/JavaScriptEngineSwitcher.Sample.Logic.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Logic for Samples - 3.33.1 + 3.34.0 net40;net451;net471;netstandard1.6;netstandard2.0;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0;net10.0 1.6.0 Library @@ -54,15 +54,15 @@ - + - + - + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.Resources/JavaScriptEngineSwitcher.Sample.Resources.csproj b/samples/JavaScriptEngineSwitcher.Sample.Resources/JavaScriptEngineSwitcher.Sample.Resources.csproj index 03faf959..54e6c1d0 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.Resources/JavaScriptEngineSwitcher.Sample.Resources.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.Resources/JavaScriptEngineSwitcher.Sample.Resources.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Resources for Samples - 3.33.1 + 3.34.0 net40-client;net45;net471;netstandard1.3;netstandard2.0 1.6.0 Library diff --git a/src/JavaScriptEngineSwitcher.Jint/JavaScriptEngineSwitcher.Jint.csproj b/src/JavaScriptEngineSwitcher.Jint/JavaScriptEngineSwitcher.Jint.csproj index fc09fada..f30dfa8b 100644 --- a/src/JavaScriptEngineSwitcher.Jint/JavaScriptEngineSwitcher.Jint.csproj +++ b/src/JavaScriptEngineSwitcher.Jint/JavaScriptEngineSwitcher.Jint.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Jint - 3.33.1 + 3.34.0 net462;netstandard2.0;netstandard2.1;net8.0;net10.0 Library true @@ -22,11 +22,12 @@ ../../Icons/JavaScriptEngineSwitcher_Jint_Logo128x128.png JavaScriptEngineSwitcher.Jint contains a `JintJsEngine` adapter (wrapper for the Jint). $(PackageCommonTags);Jint - Jint was updated to version 4.6.3. + 1. Jint was updated to version 4.8.0; +2. In configuration settings of the Jint JS engine was added two new properties: `CompileRegex` (default `false`) and `DebuggerExceptionThrownCallback` (default `null`). - + diff --git a/src/JavaScriptEngineSwitcher.Jint/JintJsEngine.cs b/src/JavaScriptEngineSwitcher.Jint/JintJsEngine.cs index a9f97a45..518ed6ac 100644 --- a/src/JavaScriptEngineSwitcher.Jint/JintJsEngine.cs +++ b/src/JavaScriptEngineSwitcher.Jint/JintJsEngine.cs @@ -10,15 +10,18 @@ using IOriginalPrimitive = Jint.Native.IJsPrimitive; using OriginalCancellationConstraint = Jint.Constraints.CancellationConstraint; using OriginalDebuggerEventHandler = Jint.Runtime.Debugger.DebugHandler.DebugEventHandler; +using OriginalDebuggerExceptionThrownEventHandler = Jint.Runtime.Debugger.DebugHandler.ExceptionThrownEventHandler; using OriginalDebuggerStatementHandlingMode = Jint.Runtime.Debugger.DebuggerStatementHandling; using OriginalEngine = Jint.Engine; using OriginalErrorPosition = Acornima.Position; -using OriginalExecutionCanceledException = Jint.Runtime.ExecutionCanceledException; using OriginalException = Jint.JintException; +using OriginalExecutionCanceledException = Jint.Runtime.ExecutionCanceledException; using OriginalJavaScriptException = Jint.Runtime.JavaScriptException; using OriginalMemoryLimitExceededException = Jint.Runtime.MemoryLimitExceededException; using OriginalObjectInstance = Jint.Native.Object.ObjectInstance; using OriginalParsedScript = Jint.Prepared; +using OriginalParsingOptions = Jint.ScriptParsingOptions; +using OriginalPreparationOptions = Jint.ScriptPreparationOptions; using OriginalRecursionDepthOverflowException = Jint.Runtime.RecursionDepthOverflowException; using OriginalScriptPreparationException = Jint.ScriptPreparationException; using OriginalStatementsCountOverflowException = Jint.Runtime.StatementsCountOverflowException; @@ -56,13 +59,18 @@ public sealed class JintJsEngine : JsEngineBase /// /// Version of original JS engine /// - private const string EngineVersion = "4.6.3"; + private const string EngineVersion = "4.8.0"; /// /// Jint JS engine /// private OriginalEngine _jsEngine; + /// + /// Script preparation options + /// + private OriginalPreparationOptions _preparationOptions; + /// /// Token source for canceling of script execution /// @@ -83,10 +91,15 @@ public sealed class JintJsEngine : JsEngineBase /// private OriginalDebuggerEventHandler _debuggerStepCallback; + /// + /// Debugger exception thrown callback + /// + private OriginalDebuggerExceptionThrownEventHandler _debuggerExceptionThrownCallback; + /// /// Flag for whether to allow run the script in strict mode /// - private bool _strictMode; + private readonly bool _strictMode; /// /// Synchronizer of script execution @@ -118,6 +131,7 @@ public JintJsEngine(JintSettings settings) JintSettings jintSettings = settings ?? new JintSettings(); _debuggerBreakCallback = jintSettings.DebuggerBreakCallback; _debuggerStepCallback = jintSettings.DebuggerStepCallback; + _debuggerExceptionThrownCallback = jintSettings.DebuggerExceptionThrownCallback; var debuggerStatementHandlingMode = Utils.GetEnumFromOtherEnum( jintSettings.DebuggerStatementHandlingMode); @@ -151,6 +165,14 @@ public JintJsEngine(JintSettings settings) options.SetTypeResolver(jintSettings.AllowReflection ? CustomTypeResolvers.AllowingReflection : CustomTypeResolvers.DisallowingReflection); }); + _preparationOptions = new OriginalPreparationOptions + { + ParsingOptions = new OriginalParsingOptions + { + CompileRegex = settings.CompileRegex, + RegexTimeout = settings.RegexTimeoutInterval + } + }; _cancellationConstraint = _jsEngine.Constraints.Find(); if (_debuggerBreakCallback is not null) { @@ -160,6 +182,10 @@ public JintJsEngine(JintSettings settings) { _jsEngine.Debugger.Step += _debuggerStepCallback; } + if (_debuggerExceptionThrownCallback is not null) + { + _jsEngine.Debugger.ExceptionThrown += _debuggerExceptionThrownCallback; + } _strictMode = settings.StrictMode; } catch (Exception e) @@ -378,7 +404,8 @@ protected override IPrecompiledScript InnerPrecompile(string code, string docume try { - parsedScript = OriginalEngine.PrepareScript(code, uniqueDocumentName, _strictMode); + parsedScript = OriginalEngine.PrepareScript(code, uniqueDocumentName, _strictMode, + _preparationOptions); } catch (OriginalException e) { @@ -693,6 +720,11 @@ public override void Dispose() { if (_jsEngine is not null) { + if (_debuggerExceptionThrownCallback is not null) + { + _jsEngine.Debugger.ExceptionThrown -= _debuggerExceptionThrownCallback; + } + if (_debuggerStepCallback is not null) { _jsEngine.Debugger.Step -= _debuggerStepCallback; @@ -707,9 +739,11 @@ public override void Dispose() _jsEngine = null; } + _debuggerExceptionThrownCallback = null; _debuggerStepCallback = null; _debuggerBreakCallback = null; _cancellationConstraint = null; + _preparationOptions = null; if (_cancellationTokenSource is not null) { diff --git a/src/JavaScriptEngineSwitcher.Jint/JintSettings.cs b/src/JavaScriptEngineSwitcher.Jint/JintSettings.cs index 966360a1..04cfc02d 100644 --- a/src/JavaScriptEngineSwitcher.Jint/JintSettings.cs +++ b/src/JavaScriptEngineSwitcher.Jint/JintSettings.cs @@ -1,6 +1,8 @@ using System; +using System.Text.RegularExpressions; using OriginalDebuggerEventHandler = Jint.Runtime.Debugger.DebugHandler.DebugEventHandler; +using OriginalDebuggerExceptionThrownEventHandler = Jint.Runtime.Debugger.DebugHandler.ExceptionThrownEventHandler; namespace JavaScriptEngineSwitcher.Jint { @@ -33,6 +35,19 @@ public bool AllowDebuggerStatement set { DebuggerStatementHandlingMode = value ? JsDebuggerStatementHandlingMode.Clr : JsDebuggerStatementHandlingMode.Ignore; } } + /// + /// Gets or sets a value that determines whether to create compiled instances of regular + /// expressions during script pre-compilation: + /// true - regular expression are compiled by using the option; + /// false - interpreted .NET regular expression instances are created; + /// null - inherits from the base options of original JS engine. + /// + public bool? CompileRegex + { + get; + set; + } + /// /// Gets or sets a debugger break callback /// @@ -42,6 +57,15 @@ public OriginalDebuggerEventHandler DebuggerBreakCallback set; } + /// + /// Gets or sets a debugger exception thrown callback + /// + public OriginalDebuggerExceptionThrownEventHandler DebuggerExceptionThrownCallback + { + get; + set; + } + /// /// Gets or sets a handling mode for script debugger statements /// @@ -183,7 +207,9 @@ public TimeSpan TimeoutInterval public JintSettings() { AllowReflection = false; + CompileRegex = false; DebuggerBreakCallback = null; + DebuggerExceptionThrownCallback = null; DebuggerStatementHandlingMode = JsDebuggerStatementHandlingMode.Ignore; DebuggerStepCallback = null; DisableEval = false; diff --git a/src/JavaScriptEngineSwitcher.Jint/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.Jint/PACKAGE-DESCRIPTION.md index c41cdf30..286e7b21 100644 --- a/src/JavaScriptEngineSwitcher.Jint/PACKAGE-DESCRIPTION.md +++ b/src/JavaScriptEngineSwitcher.Jint/PACKAGE-DESCRIPTION.md @@ -1 +1 @@ -JavaScriptEngineSwitcher.Jint contains a `JintJsEngine` adapter (wrapper for the [Jint](http://github.com/sebastienros/jint) version 4.6.3). \ No newline at end of file +JavaScriptEngineSwitcher.Jint contains a `JintJsEngine` adapter (wrapper for the [Jint](http://github.com/sebastienros/jint) version 4.8.0). \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Jint/readme.txt b/src/JavaScriptEngineSwitcher.Jint/readme.txt index 5692fc6b..542bc319 100644 --- a/src/JavaScriptEngineSwitcher.Jint/readme.txt +++ b/src/JavaScriptEngineSwitcher.Jint/readme.txt @@ -1,7 +1,7 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: Jint v3.33.1 + README file for JS Engine Switcher: Jint v3.34.0 -------------------------------------------------------------------------------- @@ -12,12 +12,15 @@ DESCRIPTION =========== JavaScriptEngineSwitcher.Jint contains a `JintJsEngine` adapter (wrapper for the - Jint (http://github.com/sebastienros/jint) version 4.6.3). + Jint (http://github.com/sebastienros/jint) version 4.8.0). ============= RELEASE NOTES ============= - Jint was updated to version 4.6.3. + 1. Jint was updated to version 4.8.0; + 2. In configuration settings of the Jint JS engine was added two new properties: + `CompileRegex` (default `false`) and `DebuggerExceptionThrownCallback` + (default `null`). ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.Yantra/JavaScriptEngineSwitcher.Yantra.csproj b/src/JavaScriptEngineSwitcher.Yantra/JavaScriptEngineSwitcher.Yantra.csproj index 278ede77..2264b036 100644 --- a/src/JavaScriptEngineSwitcher.Yantra/JavaScriptEngineSwitcher.Yantra.csproj +++ b/src/JavaScriptEngineSwitcher.Yantra/JavaScriptEngineSwitcher.Yantra.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Yantra - 3.33.1 + 3.34.0 netstandard2.0;netstandard2.1;net8.0;net10.0 Library true @@ -19,11 +19,11 @@ ../../Icons/JavaScriptEngineSwitcher_Yantra_Logo128x128.png JavaScriptEngineSwitcher.Yantra contains a `YantraJsEngine` adapter (wrapper for the YantraJS). $(PackageCommonTags);Yantra;YantraJS - YantraJS was updated to version 1.2.314. + YantraJS was updated to version 1.2.334. - + diff --git a/src/JavaScriptEngineSwitcher.Yantra/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.Yantra/PACKAGE-DESCRIPTION.md index c344c803..13559392 100644 --- a/src/JavaScriptEngineSwitcher.Yantra/PACKAGE-DESCRIPTION.md +++ b/src/JavaScriptEngineSwitcher.Yantra/PACKAGE-DESCRIPTION.md @@ -1 +1 @@ -JavaScriptEngineSwitcher.Yantra contains a `YantraJsEngine` adapter (wrapper for the [YantraJS](https://github.com/yantrajs/yantra) version 1.2.314). \ No newline at end of file +JavaScriptEngineSwitcher.Yantra contains a `YantraJsEngine` adapter (wrapper for the [YantraJS](https://github.com/yantrajs/yantra) version 1.2.334). \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Yantra/YantraJsEngine.cs b/src/JavaScriptEngineSwitcher.Yantra/YantraJsEngine.cs index f90c8076..8099fbf1 100644 --- a/src/JavaScriptEngineSwitcher.Yantra/YantraJsEngine.cs +++ b/src/JavaScriptEngineSwitcher.Yantra/YantraJsEngine.cs @@ -21,13 +21,13 @@ using OriginalException = YantraJS.Core.JSException; using OriginalFunction = YantraJS.Core.JSFunction; using OriginalJsonObject = YantraJS.Core.JSJSON; +using OriginalKeyString = YantraJS.Core.KeyString; using OriginalTypeConverter = YantraJS.Utils.TypeConverter; using OriginalUndefined = YantraJS.Core.JSUndefined; using OriginalValue = YantraJS.Core.JSValue; using JavaScriptEngineSwitcher.Core; using JavaScriptEngineSwitcher.Core.Constants; -using JavaScriptEngineSwitcher.Core.Extensions; using JavaScriptEngineSwitcher.Core.Helpers; using JavaScriptEngineSwitcher.Core.Utilities; @@ -54,7 +54,7 @@ public sealed class YantraJsEngine : JsEngineBase /// /// Version of original JS engine /// - private const string EngineVersion = "1.2.314"; + private const string EngineVersion = "1.2.334"; /// /// Regular expression for working with the error message @@ -332,7 +332,7 @@ private WrapperException WrapJsException(OriginalException originalException) string messageWithCallStack = type == JsErrorType.Syntax ? originalException.JSStackTrace.AsStringOrDefault() : - errorValue.Stack ?? errorValue["stack"].AsStringOrDefault() + errorValue.Stack ?? errorValue[OriginalKeyString.stack].AsStringOrDefault() ; string rawCallStack = GetRawCallStack(message, messageWithType, messageWithCallStack); @@ -483,13 +483,15 @@ private OriginalValue InnerEvaluateWithoutResultConversion(string expression, st private OriginalValue InnerCallFunctionWithoutResultConversion(string functionName, params object[] args) { OriginalValue resultValue; + OriginalKeyString functionKeyName = functionName.ToKeyString(); OriginalValue[] processedArgs = MapToScriptType(args); try { lock (_executionSynchronizer) { - resultValue = _jsContext.InvokeMethod(functionName, new OriginalArguments(_jsContext, processedArgs)); + resultValue = _jsContext.InvokeMethod(functionKeyName, + new OriginalArguments(_jsContext, processedArgs)); } } catch (OriginalException e) @@ -515,12 +517,13 @@ private OriginalValue InnerCallFunctionWithoutResultConversion(string functionNa private OriginalValue InnerGetVariableValueWithoutResultConversion(string variableName) { OriginalValue variableValue; + OriginalKeyString variableKeyName = variableName.ToKeyString(); try { lock (_executionSynchronizer) { - variableValue = _jsContext[variableName]; + variableValue = _jsContext[variableKeyName]; } } catch (OriginalException e) @@ -625,10 +628,11 @@ protected override bool InnerHasVariable(string variableName) try { OriginalValue variableValue; + OriginalKeyString variableKeyName = variableName.ToKeyString(); lock (_executionSynchronizer) { - variableValue = _jsContext[variableName]; + variableValue = _jsContext[variableKeyName]; } result = !variableValue.IsUndefined; @@ -659,13 +663,14 @@ protected override T InnerGetVariableValue(string variableName) protected override void InnerSetVariableValue(string variableName, object value) { + OriginalKeyString variableKeyName = variableName.ToKeyString(); OriginalValue processedValue = MapToScriptType(value); try { lock (_executionSynchronizer) { - _jsContext[variableName] = processedValue; + _jsContext[variableKeyName] = processedValue; } } catch (OriginalException e) @@ -676,11 +681,13 @@ protected override void InnerSetVariableValue(string variableName, object value) protected override void InnerRemoveVariable(string variableName) { + OriginalKeyString variableKeyName = variableName.ToKeyString(); + try { lock (_executionSynchronizer) { - _jsContext.Delete(variableName); + _jsContext.Delete(variableKeyName); } } catch (OriginalException e) @@ -691,7 +698,9 @@ protected override void InnerRemoveVariable(string variableName) protected override void InnerEmbedHostObject(string itemName, object value) { + OriginalKeyString itemKeyName = itemName.ToKeyString(); OriginalValue processedValue; + if (value is Delegate) { processedValue = CreateEmbeddedFunction((Delegate)value); @@ -705,8 +714,7 @@ protected override void InnerEmbedHostObject(string itemName, object value) { lock (_executionSynchronizer) { - _jsContext[itemName] = processedValue; - + _jsContext[itemKeyName] = processedValue; } } catch (OriginalException e) @@ -717,13 +725,14 @@ protected override void InnerEmbedHostObject(string itemName, object value) protected override void InnerEmbedHostType(string itemName, Type type) { + OriginalKeyString itemKeyName = itemName.ToKeyString(); OriginalValue processedValue = OriginalClrType.From(type); try { lock (_executionSynchronizer) { - _jsContext[itemName] = processedValue; + _jsContext[itemKeyName] = processedValue; } } catch (OriginalException e) diff --git a/src/JavaScriptEngineSwitcher.Yantra/readme.txt b/src/JavaScriptEngineSwitcher.Yantra/readme.txt index 364b2bf5..a3b4748d 100644 --- a/src/JavaScriptEngineSwitcher.Yantra/readme.txt +++ b/src/JavaScriptEngineSwitcher.Yantra/readme.txt @@ -1,7 +1,7 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: Yantra v3.33.1 + README file for JS Engine Switcher: Yantra v3.34.0 -------------------------------------------------------------------------------- @@ -12,12 +12,12 @@ DESCRIPTION =========== JavaScriptEngineSwitcher.Yantra contains a `YantraJsEngine` adapter (wrapper for the - YantraJS (https://github.com/yantrajs/yantra) version 1.2.314). + YantraJS (https://github.com/yantrajs/yantra) version 1.2.334). ============= RELEASE NOTES ============= - YantraJS was updated to version 1.2.314. + YantraJS was updated to version 1.2.334. ============= DOCUMENTATION diff --git a/test/JavaScriptEngineSwitcher.Benchmarks/JavaScriptEngineSwitcher.Benchmarks.csproj b/test/JavaScriptEngineSwitcher.Benchmarks/JavaScriptEngineSwitcher.Benchmarks.csproj index 0efbcea6..bc53a03b 100644 --- a/test/JavaScriptEngineSwitcher.Benchmarks/JavaScriptEngineSwitcher.Benchmarks.csproj +++ b/test/JavaScriptEngineSwitcher.Benchmarks/JavaScriptEngineSwitcher.Benchmarks.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Benchmarks - 3.33.1 + 3.34.0 net462;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0;net10.0 Exe AnyCPU diff --git a/test/JavaScriptEngineSwitcher.Tests/JavaScriptEngineSwitcher.Tests.csproj b/test/JavaScriptEngineSwitcher.Tests/JavaScriptEngineSwitcher.Tests.csproj index 48df345b..c2393424 100644 --- a/test/JavaScriptEngineSwitcher.Tests/JavaScriptEngineSwitcher.Tests.csproj +++ b/test/JavaScriptEngineSwitcher.Tests/JavaScriptEngineSwitcher.Tests.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: Tests - 3.33.1 + 3.34.0 net462;net471;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0;net10.0 Library latest diff --git a/test/JavaScriptEngineSwitcher.Tests/Jint/PrecompilationTests.cs b/test/JavaScriptEngineSwitcher.Tests/Jint/PrecompilationTests.cs index 0e5a512e..ded07e73 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Jint/PrecompilationTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Jint/PrecompilationTests.cs @@ -100,7 +100,7 @@ public void MappingRuntimeErrorDuringExecutionOfPrecompiledCode() // Assert Assert.NotNull(exception); Assert.Equal("Runtime error", exception.Category); - Assert.Equal("Cannot read property '5' of null", exception.Description); + Assert.Equal("Cannot read properties of null (reading '5')", exception.Description); Assert.Equal("TypeError", exception.Type); Assert.Equal("get-item.js", exception.DocumentName); Assert.Equal(2, exception.LineNumber);