summaryrefslogtreecommitdiff
path: root/cli/global_state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/global_state.rs')
-rw-r--r--cli/global_state.rs87
1 files changed, 42 insertions, 45 deletions
diff --git a/cli/global_state.rs b/cli/global_state.rs
index 3298799d1..bd2a4f4c3 100644
--- a/cli/global_state.rs
+++ b/cli/global_state.rs
@@ -18,7 +18,6 @@ use deno_core::ErrBox;
use deno_core::ModuleSpecifier;
use std;
use std::env;
-use std::future::Future;
use std::ops::Deref;
use std::path::Path;
use std::str;
@@ -119,66 +118,64 @@ impl ThreadSafeGlobalState {
Ok(ThreadSafeGlobalState(Arc::new(state)))
}
- pub fn fetch_compiled_module(
+ pub async fn fetch_compiled_module(
&self,
- module_specifier: &ModuleSpecifier,
+ module_specifier: ModuleSpecifier,
maybe_referrer: Option<ModuleSpecifier>,
target_lib: TargetLib,
- ) -> impl Future<Output = Result<CompiledModule, ErrBox>> {
+ ) -> Result<CompiledModule, ErrBox> {
let state1 = self.clone();
let state2 = self.clone();
+ let module_specifier = module_specifier.clone();
- let source_file = self
+ let out = self
.file_fetcher
- .fetch_source_file_async(&module_specifier, maybe_referrer);
-
- async move {
- let out = source_file.await?;
- let compiled_module = match out.media_type {
- msg::MediaType::Unknown => state1.js_compiler.compile_async(&out),
- msg::MediaType::Json => state1.json_compiler.compile_async(&out),
- msg::MediaType::Wasm => {
- state1.wasm_compiler.compile_async(state1.clone(), &out)
- }
- msg::MediaType::TypeScript
- | msg::MediaType::TSX
- | msg::MediaType::JSX => {
+ .fetch_source_file_async(&module_specifier, maybe_referrer)
+ .await?;
+ let compiled_module_fut = match out.media_type {
+ msg::MediaType::Unknown => state1.js_compiler.compile_async(out),
+ msg::MediaType::Json => state1.json_compiler.compile_async(&out),
+ msg::MediaType::Wasm => {
+ state1.wasm_compiler.compile_async(state1.clone(), &out)
+ }
+ msg::MediaType::TypeScript
+ | msg::MediaType::TSX
+ | msg::MediaType::JSX => {
+ state1
+ .ts_compiler
+ .compile_async(state1.clone(), &out, target_lib)
+ }
+ msg::MediaType::JavaScript => {
+ if state1.ts_compiler.compile_js {
state1
.ts_compiler
.compile_async(state1.clone(), &out, target_lib)
- }
- msg::MediaType::JavaScript => {
- if state1.ts_compiler.compile_js {
- state1
- .ts_compiler
- .compile_async(state1.clone(), &out, target_lib)
- } else {
- state1.js_compiler.compile_async(&out)
- }
+ } else {
+ state1.js_compiler.compile_async(out)
}
}
- .await?;
+ };
+ let compiled_module = compiled_module_fut.await?;
- if let Some(ref lockfile) = state2.lockfile {
- let mut g = lockfile.lock().unwrap();
- if state2.flags.lock_write {
- g.insert(&compiled_module);
- } else {
- let check = match g.check(&compiled_module) {
- Err(e) => return Err(ErrBox::from(e)),
- Ok(v) => v,
- };
- if !check {
- eprintln!(
- "Subresource integrity check failed --lock={}\n{}",
- g.filename, compiled_module.name
- );
- std::process::exit(10);
- }
+ if let Some(ref lockfile) = state2.lockfile {
+ let mut g = lockfile.lock().unwrap();
+ if state2.flags.lock_write {
+ g.insert(&compiled_module);
+ } else {
+ let check = match g.check(&compiled_module) {
+ Err(e) => return Err(ErrBox::from(e)),
+ Ok(v) => v,
+ };
+ if !check {
+ eprintln!(
+ "Subresource integrity check failed --lock={}\n{}",
+ g.filename, compiled_module.name
+ );
+ std::process::exit(10);
}
}
- Ok(compiled_module)
}
+ Ok(compiled_module)
}
#[inline]