summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/flags.rs5
-rw-r--r--src/isolate.rs11
-rw-r--r--src/libdeno.rs1
-rw-r--r--src/main.rs4
4 files changed, 18 insertions, 3 deletions
diff --git a/src/flags.rs b/src/flags.rs
index f2d0150b1..970aceb3c 100644
--- a/src/flags.rs
+++ b/src/flags.rs
@@ -28,6 +28,7 @@ pub struct DenoFlags {
pub allow_env: bool,
pub allow_run: bool,
pub types: bool,
+ pub prefetch: bool,
}
pub fn get_usage(opts: &Options) -> String {
@@ -107,6 +108,9 @@ fn set_recognized_flags(
if matches.opt_present("types") {
flags.types = true;
}
+ if matches.opt_present("prefetch") {
+ flags.prefetch = true;
+ }
if !matches.free.is_empty() {
rest.extend(matches.free);
@@ -142,6 +146,7 @@ pub fn set_flags(
opts.optflag("r", "reload", "Reload cached remote resources.");
opts.optflag("", "v8-options", "Print V8 command line options.");
opts.optflag("", "types", "Print runtime TypeScript declarations.");
+ opts.optflag("", "prefetch", "Prefetch the dependencies.");
let mut flags = DenoFlags::default();
diff --git a/src/isolate.rs b/src/isolate.rs
index 9c9e7dd4f..bbd52c64d 100644
--- a/src/isolate.rs
+++ b/src/isolate.rs
@@ -254,7 +254,11 @@ impl Isolate {
}
/// Executes the provided JavaScript module.
- pub fn execute_mod(&self, js_filename: &str) -> Result<(), JSError> {
+ pub fn execute_mod(
+ &self,
+ js_filename: &str,
+ is_prefetch: bool,
+ ) -> Result<(), JSError> {
let out =
code_fetch_and_maybe_compile(&self.state, js_filename, ".").unwrap();
@@ -271,6 +275,7 @@ impl Isolate {
self.as_raw_ptr(),
filename_ptr,
js_source_ptr,
+ if is_prefetch { 1 } else { 0 },
)
};
if r == 0 {
@@ -662,7 +667,9 @@ mod tests {
let snapshot = libdeno::deno_buf::empty();
let isolate = Isolate::new(snapshot, state, dispatch_sync);
tokio_util::init(|| {
- isolate.execute_mod(filename).expect("execute_mod error");
+ isolate
+ .execute_mod(filename, false)
+ .expect("execute_mod error");
isolate.event_loop().ok();
});
}
diff --git a/src/libdeno.rs b/src/libdeno.rs
index 40a5a51d0..f8f8a61e0 100644
--- a/src/libdeno.rs
+++ b/src/libdeno.rs
@@ -151,6 +151,7 @@ extern "C" {
user_data: *const c_void,
js_filename: *const c_char,
js_source: *const c_char,
+ resolve_only: i32,
) -> c_int;
pub fn deno_resolve_ok(
i: *const isolate,
diff --git a/src/main.rs b/src/main.rs
index a9c3f42f0..d6188ef62 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -79,6 +79,8 @@ fn main() {
log::LevelFilter::Warn
});
+ let should_prefetch = flags.prefetch;
+
let state = Arc::new(isolate::IsolateState::new(flags, rest_argv, None));
let snapshot = snapshot::deno_snapshot();
let isolate = isolate::Isolate::new(snapshot, state, ops::dispatch);
@@ -93,7 +95,7 @@ fn main() {
if isolate.state.argv.len() > 1 {
let input_filename = &isolate.state.argv[1];
isolate
- .execute_mod(input_filename)
+ .execute_mod(input_filename, should_prefetch)
.unwrap_or_else(print_err_and_exit);
}