use std::path::PathBuf;
use deno_core::snapshot::{create_snapshot, CreateSnapshotOptions};
#[path = "src/ext.rs"]
mod ext;
fn main() {
let out_dir = PathBuf::from(std::env::var("OUT_DIR").expect("cargo sets OUT_DIR"));
let snapshot_path = out_dir.join("APIPLANT_JS_SNAPSHOT.bin");
let output = create_snapshot(
CreateSnapshotOptions {
cargo_manifest_dir: env!("CARGO_MANIFEST_DIR"),
startup_snapshot: None,
skip_op_registration: false,
extensions: vec![
deno_webidl::deno_webidl::init(),
deno_web::deno_web::init(
deno_web::BlobStore::default_arc(),
None,
false,
deno_web::InMemoryBroadcastChannel::default(),
),
ext::extension(ext::detached()),
],
extension_transpiler: None,
with_runtime_cb: None,
},
None,
)
.expect("cannot build the JavaScript startup snapshot");
std::fs::write(&snapshot_path, &output.output).expect("cannot write the startup snapshot");
std::fs::write(
out_dir.join("consumed_lazy_specifiers.txt"),
output.consumed_lazy_specifiers.join("\n"),
)
.expect("cannot record the snapshot's consumed specifiers");
for path in output.files_loaded_during_snapshot {
println!("cargo:rerun-if-changed={}", path.display());
}
println!("cargo:rerun-if-changed=src/ext.rs");
println!("cargo:rerun-if-changed=assets/bootstrap.js");
println!("cargo:rerun-if-changed=assets/apiplant.js");
}