mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
This reverts commit 10e50a1207
Alternative to #13217, IMO the tradeoffs made by #10786 aren't worth it.
It breaks abstractions (crates being self-contained, deno_core without snapshotting etc...) and causes pain points / gotchas for both embedders & devs for a relatively minimal gain in incremental build time ...
Closes #11030
This commit is contained in:
parent
b08b1da6f4
commit
f5c31b56e3
7 changed files with 12 additions and 30 deletions
|
@ -9,19 +9,14 @@ fn setup() -> Vec<Extension> {
|
|||
vec![Extension::builder()
|
||||
.js(vec![(
|
||||
"setup.js",
|
||||
Box::new(|| {
|
||||
Ok(
|
||||
r#"
|
||||
r#"
|
||||
const hello = "hello world\n";
|
||||
const hello1k = hello.repeat(1e3);
|
||||
const hello1m = hello.repeat(1e6);
|
||||
const helloEncoded = Deno.core.encode(hello);
|
||||
const hello1kEncoded = Deno.core.encode(hello1k);
|
||||
const hello1mEncoded = Deno.core.encode(hello1m);
|
||||
"#
|
||||
.into(),
|
||||
)
|
||||
}),
|
||||
"#,
|
||||
)])
|
||||
.build()]
|
||||
}
|
||||
|
|
|
@ -3,8 +3,7 @@ use crate::OpState;
|
|||
use anyhow::Error;
|
||||
use std::task::Context;
|
||||
|
||||
pub type SourcePair = (&'static str, Box<SourceLoadFn>);
|
||||
pub type SourceLoadFn = dyn Fn() -> Result<String, Error>;
|
||||
pub type SourcePair = (&'static str, &'static str);
|
||||
pub type OpFnRef = v8::FunctionCallback;
|
||||
pub type OpMiddlewareFn = dyn Fn(OpDecl) -> OpDecl;
|
||||
pub type OpStateFn = dyn Fn(&mut OpState) -> Result<(), Error>;
|
||||
|
@ -169,9 +168,8 @@ impl ExtensionBuilder {
|
|||
}
|
||||
}
|
||||
}
|
||||
/// Helps embed JS files in an extension. Returns Vec<(&'static str, Box<SourceLoadFn>)>
|
||||
/// representing the filename and source code. This is only meant for extensions
|
||||
/// that will be snapshotted, as code will be loaded at runtime.
|
||||
/// Helps embed JS files in an extension. Returns Vec<(&'static str, &'static str)>
|
||||
/// representing the filename and source code.
|
||||
///
|
||||
/// Example:
|
||||
/// ```ignore
|
||||
|
@ -187,13 +185,7 @@ macro_rules! include_js_files {
|
|||
vec![
|
||||
$((
|
||||
concat!($prefix, "/", $file),
|
||||
Box::new(|| {
|
||||
let c = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||
let path = c.join($file);
|
||||
println!("cargo:rerun-if-changed={}", path.display());
|
||||
let src = std::fs::read_to_string(path)?;
|
||||
Ok(src)
|
||||
}),
|
||||
include_str!($file),
|
||||
),)+
|
||||
]
|
||||
};
|
||||
|
|
|
@ -491,9 +491,8 @@ impl JsRuntime {
|
|||
for m in extensions.iter_mut() {
|
||||
let js_files = m.init_js();
|
||||
for (filename, source) in js_files {
|
||||
let source = source()?;
|
||||
// TODO(@AaronO): use JsRuntime::execute_static() here to move src off heap
|
||||
realm.execute_script(self, filename, &source)?;
|
||||
realm.execute_script(self, filename, source)?;
|
||||
}
|
||||
}
|
||||
// Restore extensions
|
||||
|
|
|
@ -11,9 +11,7 @@ fn setup() -> Vec<Extension> {
|
|||
Extension::builder()
|
||||
.js(vec![(
|
||||
"setup",
|
||||
Box::new(|| {
|
||||
Ok(r#"const { URL } = globalThis.__bootstrap.url;"#.to_owned())
|
||||
}),
|
||||
"const { URL } = globalThis.__bootstrap.url;",
|
||||
)])
|
||||
.build(),
|
||||
]
|
||||
|
|
|
@ -26,12 +26,10 @@ fn setup() -> Vec<Extension> {
|
|||
deno_web::init::<Permissions>(BlobStore::default(), None),
|
||||
Extension::builder()
|
||||
.js(vec![
|
||||
("setup",
|
||||
Box::new(|| Ok(r#"
|
||||
const { opNow, setTimeout, handleTimerMacrotask } = globalThis.__bootstrap.timers;
|
||||
Deno.core.setMacrotaskCallback(handleTimerMacrotask);
|
||||
"#.to_owned())),
|
||||
),
|
||||
("setup", r#"
|
||||
const { opNow, setTimeout, handleTimerMacrotask } = globalThis.__bootstrap.timers;
|
||||
Deno.core.setMacrotaskCallback(handleTimerMacrotask);
|
||||
"#),
|
||||
])
|
||||
.state(|state| {
|
||||
state.put(Permissions{});
|
||||
|
|
Loading…
Reference in a new issue