Create an old program to be used in snapshot. (#3644)

This commit is contained in:
Kitson Kelly 2020-01-12 22:20:33 +11:00 committed by Bartek Iwańczuk
parent 8fac8ab130
commit 737ab94ea1
14 changed files with 85 additions and 60 deletions

View file

@ -204,6 +204,10 @@ pub fn mksnapshot_bundle_ts(
state: Arc<Mutex<TSState>>,
) -> Result<(), ErrBox> {
let runtime_isolate = &mut Isolate::new(StartupData::None, true);
runtime_isolate.register_op(
"fetch_asset",
compiler_op(state.clone(), ops::json_op(ops::fetch_asset)),
);
let source_code_vec = std::fs::read(bundle)?;
let source_code = std::str::from_utf8(&source_code_vec)?;
@ -257,6 +261,10 @@ pub fn get_asset(name: &str) -> Option<&'static str> {
match name {
"bundle_loader.js" => Some(include_str!("bundle_loader.js")),
"lib.deno_core.d.ts" => Some(include_str!("lib.deno_core.d.ts")),
"lib.deno_runtime.d.ts" => {
Some(include_str!("../cli/js/lib.deno_runtime.d.ts"))
}
"bootstrap.ts" => Some("console.log(\"hello deno\");"),
"typescript.d.ts" => inc!("typescript.d.ts"),
"lib.esnext.d.ts" => inc!("lib.esnext.d.ts"),
"lib.es2020.d.ts" => inc!("lib.es2020.d.ts"),

View file

@ -110,6 +110,21 @@ pub fn resolve_module_names(
Ok(json!(resolved))
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
struct FetchAssetArgs {
name: String,
}
pub fn fetch_asset(_s: &mut TSState, v: Value) -> Result<Value, ErrBox> {
let args: FetchAssetArgs = serde_json::from_value(v)?;
if let Some(source_code) = crate::get_asset(&args.name) {
Ok(json!(source_code))
} else {
panic!("op_fetch_asset bad asset {}", args.name)
}
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
struct Exit {