scrod-0.2026.2.21: source/executables/scrod-wasm/Main.hs
import qualified GHC.Wasm.Prim as Wasm
import qualified Scrod
import qualified Scrod.Extra.Builder as Builder
main :: IO ()
main = error "required by ghc but ignored by wasm"
foreign export javascript "scrod"
scrod :: Wasm.JSVal -> Wasm.JSString -> IO Wasm.JSString
scrod :: Wasm.JSVal -> Wasm.JSString -> IO Wasm.JSString
scrod rawArguments input = do
size <- jsArrayLength rawArguments
arguments <- traverse (fmap Wasm.fromJSString . jsArrayIndex rawArguments) [0 .. size - 1]
result <-
Scrod.mainWith "scrod-wasm" arguments
. pure
$ Wasm.fromJSString input
either fail (pure . Wasm.toJSString . Builder.toString) result
foreign import javascript unsafe "$1.length"
jsArrayLength :: Wasm.JSVal -> IO Int
foreign import javascript unsafe "$1[$2]"
jsArrayIndex :: Wasm.JSVal -> Int -> IO Wasm.JSString