Current section

Files

Jump to
midas_node src midas node rollup.gleam
Raw

src/midas/node/rollup.gleam

import gleam/dynamic.{type Dynamic}
import gleam/javascript/promise.{type Promise}
import gleam/result
import gleam/string
import simplifile
import snag
@external(javascript, "../../midas_node_rollup_ffi.mjs", "iife")
pub fn iife(input: String) -> Promise(Result(String, Dynamic))
pub fn bundle_fn(root, file, func) {
let export_filename = "rollup_export.js"
let export_path = string.concat([root, "/", export_filename])
let export_content =
"import { " <> func <> " } from \"./" <> file <> "\";\n" <> func <> "()"
let assert Ok(Nil) = simplifile.write(export_path, export_content)
use code <- promise.map(iife(export_path))
code
|> result.map_error(fn(err) { snag.new(string.inspect(err)) })
}