mirror of
https://github.com/denoland/deno.git
synced 2025-09-23 02:42:34 +00:00
Create an old program to be used in snapshot. (#3644)
This commit is contained in:
parent
8fac8ab130
commit
737ab94ea1
14 changed files with 85 additions and 60 deletions
|
@ -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"),
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue