diff --git a/Jint.Tests.PublicInterface/AdvancedApiTests.cs b/Jint.Tests.PublicInterface/AdvancedApiTests.cs new file mode 100644 index 0000000000..fac99adf37 --- /dev/null +++ b/Jint.Tests.PublicInterface/AdvancedApiTests.cs @@ -0,0 +1,11 @@ +namespace Jint.Tests.PublicInterface; + +public class AdvancedApiTests +{ + [Fact] + public void CanProcessTasks() + { + var engine = new Engine(); + engine.Advanced.ProcessTasks(); + } +} diff --git a/Jint/Engine.Advanced.cs b/Jint/Engine.Advanced.cs new file mode 100644 index 0000000000..d1469c1b8e --- /dev/null +++ b/Jint/Engine.Advanced.cs @@ -0,0 +1,24 @@ +namespace Jint; + +public partial class Engine +{ + public AdvancedOperations Advanced { get; } +} + +public class AdvancedOperations +{ + private readonly Engine _engine; + + public AdvancedOperations(Engine engine) + { + _engine = engine; + } + + /// + /// Forcefully processes the current task queues (micro and regular), this API may break and change behavior! + /// + public void ProcessTasks() + { + _engine.RunAvailableContinuations(); + } +} diff --git a/Jint/Engine.cs b/Jint/Engine.cs index ced8cc3588..b274e81172 100644 --- a/Jint/Engine.cs +++ b/Jint/Engine.cs @@ -96,6 +96,8 @@ public Engine(Options options) : this((e, o) => e.Options = options) /// The provided engine instance in callback is not guaranteed to be fully configured public Engine(Action options) { + Advanced = new AdvancedOperations(this); + _executionContexts = new ExecutionContextStack(2); Options = new Options();