summaryrefslogtreecommitdiff
path: root/runtime/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/build.rs')
-rw-r--r--runtime/build.rs54
1 files changed, 29 insertions, 25 deletions
diff --git a/runtime/build.rs b/runtime/build.rs
index 5b02f2202..64ef246dc 100644
--- a/runtime/build.rs
+++ b/runtime/build.rs
@@ -17,39 +17,33 @@ mod startup_snapshot {
use deno_core::snapshot_util::*;
use deno_core::Extension;
use deno_core::ExtensionFileSource;
- use deno_core::ModuleCode;
+ use deno_core::ExtensionFileSourceCode;
use deno_http::DefaultHttpPropertyExtractor;
use std::path::Path;
- fn transpile_ts_for_snapshotting(
- file_source: &ExtensionFileSource,
- ) -> Result<ModuleCode, AnyError> {
+ fn maybe_transpile_source(
+ source: &mut ExtensionFileSource,
+ ) -> Result<(), AnyError> {
// Always transpile `node:` built-in modules, since they might be TypeScript.
- let media_type = if file_source.specifier.starts_with("node:") {
+ let media_type = if source.specifier.starts_with("node:") {
MediaType::TypeScript
} else {
- MediaType::from_path(Path::new(&file_source.specifier))
+ MediaType::from_path(Path::new(&source.specifier))
};
- let should_transpile = match media_type {
- MediaType::JavaScript => false,
- MediaType::Mjs => false,
- MediaType::TypeScript => true,
- _ => {
- panic!(
- "Unsupported media type for snapshotting {media_type:?} for file {}",
- file_source.specifier
- )
- }
- };
- let code = file_source.load()?;
-
- if !should_transpile {
- return Ok(code);
+ match media_type {
+ MediaType::TypeScript => {}
+ MediaType::JavaScript => return Ok(()),
+ MediaType::Mjs => return Ok(()),
+ _ => panic!(
+ "Unsupported media type for snapshotting {media_type:?} for file {}",
+ source.specifier
+ ),
}
+ let code = source.load()?;
let parsed = deno_ast::parse_module(ParseParams {
- specifier: file_source.specifier.to_string(),
+ specifier: source.specifier.to_string(),
text_info: SourceTextInfo::from_string(code.as_str().to_owned()),
media_type,
capture_tokens: false,
@@ -62,7 +56,9 @@ mod startup_snapshot {
..Default::default()
})?;
- Ok(transpiled_source.text.into())
+ source.code =
+ ExtensionFileSourceCode::Computed(transpiled_source.text.into());
+ Ok(())
}
#[derive(Clone)]
@@ -312,7 +308,7 @@ mod startup_snapshot {
// NOTE(bartlomieju): ordering is important here, keep it in sync with
// `runtime/worker.rs`, `runtime/web_worker.rs` and `cli/build.rs`!
let fs = std::sync::Arc::new(deno_fs::RealFs);
- let extensions: Vec<Extension> = vec![
+ let mut extensions: Vec<Extension> = vec![
deno_webidl::deno_webidl::init_ops_and_esm(),
deno_console::deno_console::init_ops_and_esm(),
deno_url::deno_url::init_ops_and_esm(),
@@ -356,13 +352,21 @@ mod startup_snapshot {
runtime_main::init_ops_and_esm(),
];
+ for extension in &mut extensions {
+ for source in extension.esm_files.to_mut() {
+ maybe_transpile_source(source).unwrap();
+ }
+ for source in extension.js_files.to_mut() {
+ maybe_transpile_source(source).unwrap();
+ }
+ }
+
let output = create_snapshot(CreateSnapshotOptions {
cargo_manifest_dir: env!("CARGO_MANIFEST_DIR"),
snapshot_path,
startup_snapshot: None,
extensions,
compression_cb: None,
- snapshot_module_load_cb: Some(Box::new(transpile_ts_for_snapshotting)),
with_runtime_cb: None,
});
for path in output.files_loaded_during_snapshot {