diff --git a/jvm/BUILD b/jvm/BUILD index 744e54f68..1f18e0dd4 100644 --- a/jvm/BUILD +++ b/jvm/BUILD @@ -73,8 +73,7 @@ kt_jvm_library( name = "supported_runtimes", visibility = ["//visibility:public"], exports = [ - # MARK: Disable GraalJS testing - # "//jvm/graaljs", + "//jvm/graaljs", "//jvm/hermes:hermes-host", "//jvm/j2v8:j2v8-all", ], diff --git a/jvm/core/src/main/kotlin/com/intuit/playerui/core/bridge/runtime/Runtime.kt b/jvm/core/src/main/kotlin/com/intuit/playerui/core/bridge/runtime/Runtime.kt index b06e9c2b4..dbd59ffe9 100644 --- a/jvm/core/src/main/kotlin/com/intuit/playerui/core/bridge/runtime/Runtime.kt +++ b/jvm/core/src/main/kotlin/com/intuit/playerui/core/bridge/runtime/Runtime.kt @@ -23,8 +23,7 @@ public interface Runtime : Node { override val format: RuntimeFormat @ExperimentalPlayerApi - public fun executeRaw(script: String): Value = - throw UnsupportedOperationException("This experimental method is not implemented for ${this::class.simpleName}") + public fun executeRaw(script: String): Value /** Execute some arbitrary [script] and return the deserialized result */ public fun execute(script: String): Any? diff --git a/jvm/graaljs/src/main/kotlin/com/intuit/playerui/graaljs/bridge/runtime/GraalRuntime.kt b/jvm/graaljs/src/main/kotlin/com/intuit/playerui/graaljs/bridge/runtime/GraalRuntime.kt index 29fc0fde3..5446a3fdc 100644 --- a/jvm/graaljs/src/main/kotlin/com/intuit/playerui/graaljs/bridge/runtime/GraalRuntime.kt +++ b/jvm/graaljs/src/main/kotlin/com/intuit/playerui/graaljs/bridge/runtime/GraalRuntime.kt @@ -8,6 +8,7 @@ import com.intuit.playerui.core.bridge.runtime.PlayerRuntimeFactory import com.intuit.playerui.core.bridge.runtime.Runtime import com.intuit.playerui.core.bridge.runtime.ScriptContext import com.intuit.playerui.core.bridge.serialization.serializers.playerSerializersModule +import com.intuit.playerui.core.experimental.ExperimentalPlayerApi import com.intuit.playerui.core.player.PlayerException import com.intuit.playerui.core.utils.InternalPlayerApi import com.intuit.playerui.graaljs.bridge.GraalNode @@ -71,6 +72,11 @@ internal class GraalRuntime( CoroutineScope(Dispatchers.Default + SupervisorJob() + (config.coroutineExceptionHandler ?: EmptyCoroutineContext)) } + @ExperimentalPlayerApi + override fun executeRaw(script: String): Value = context.blockingLock { + context.eval("js", script) + } + override fun execute(script: String): Any? = context.blockingLock { context.eval("js", script).handleValue(format) }