summaryrefslogtreecommitdiff
path: root/runtime/build.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-02-14 17:38:45 +0100
committerGitHub <noreply@github.com>2023-02-14 17:38:45 +0100
commitd47147fb6ad229b1c039aff9d0959b6e281f4df5 (patch)
tree6e9e790f2b9bc71b5f0c9c7e64b95cae31579d58 /runtime/build.rs
parent1d00bbe47e2ca14e2d2151518e02b2324461a065 (diff)
feat(ext/node): embed std/node into the snapshot (#17724)
This commit moves "deno_std/node" in "ext/node" crate. The code is transpiled and snapshotted during the build process. During the first pass a minimal amount of work was done to create the snapshot, a lot of code in "ext/node" depends on presence of "Deno" global. This code will be gradually fixed in the follow up PRs to migrate it to import relevant APIs from "internal:" modules. Currently the code from snapshot is not used in any way, and all Node/npm compatibility still uses code from "https://deno.land/std/node" (or from the location specified by "DENO_NODE_COMPAT_URL"). This will also be handled in a follow up PRs. --------- Co-authored-by: crowlkats <crowlkats@toaxl.com> Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com> Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
Diffstat (limited to 'runtime/build.rs')
-rw-r--r--runtime/build.rs21
1 files changed, 17 insertions, 4 deletions
diff --git a/runtime/build.rs b/runtime/build.rs
index e70e8fe5d..bbdec8f57 100644
--- a/runtime/build.rs
+++ b/runtime/build.rs
@@ -26,8 +26,12 @@ mod not_docs {
let should_transpile = match media_type {
MediaType::JavaScript => false,
+ MediaType::Mjs => false,
MediaType::TypeScript => true,
- _ => panic!("Unsupported media type for snapshotting {media_type:?}"),
+ _ => panic!(
+ "Unsupported media type for snapshotting {media_type:?} for file {}",
+ file_source.specifier
+ ),
};
if !should_transpile {
@@ -42,7 +46,12 @@ mod not_docs {
scope_analysis: false,
maybe_syntax: None,
})?;
- let transpiled_source = parsed.transpile(&Default::default())?;
+ let transpiled_source = parsed.transpile(&deno_ast::EmitOptions {
+ imports_not_used_as_values: deno_ast::ImportsNotUsedAsValues::Remove,
+ inline_source_map: false,
+ ..Default::default()
+ })?;
+
Ok(transpiled_source.text)
}
@@ -171,7 +180,8 @@ mod not_docs {
"deno_crypto",
"deno_webgpu",
"deno_broadcast_channel",
- "deno_node",
+ // FIXME(bartlomieju): this should be reenabled
+ // "deno_node",
"deno_ffi",
"deno_net",
"deno_napi",
@@ -225,7 +235,6 @@ mod not_docs {
deno_broadcast_channel::InMemoryBroadcastChannel::default(),
false, // No --unstable.
),
- deno_node::init::<Permissions>(None),
deno_ffi::init::<Permissions>(false),
deno_net::init::<Permissions>(
None, false, // No --unstable.
@@ -235,6 +244,10 @@ mod not_docs {
deno_http::init(),
deno_flash::init::<Permissions>(false), // No --unstable
runtime_extension,
+ // FIXME(bartlomieju): these extensions are specified last, because they
+ // depend on `runtime`, even though it should be other way around
+ deno_node::init::<Permissions>(None),
+ deno_node::init_polyfill(),
];
if let Some(additional_extension) = maybe_additional_extension {